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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/{Admin-BjmupLN3.d.mts → Admin-BbTZHSLu.d.mts} +23 -11
  2. package/dist/{Agent-1DMSO_Fl.mjs → Agent-BMATXYsI.mjs} +9 -2
  3. package/dist/Agent-BMATXYsI.mjs.map +1 -0
  4. package/dist/{AgentRuntime-BAjT5gXl.d.mts → AgentRuntime-BPlAn5nA.d.mts} +6 -6
  5. package/dist/{AgentRuntime-IF_1GoUf.mjs → AgentRuntime-D4eoBpIW.mjs} +32 -10
  6. package/dist/AgentRuntime-D4eoBpIW.mjs.map +1 -0
  7. package/dist/{Digest-CaJ2RIsF.d.mts → Digest-CNHImGy0.d.mts} +2 -2
  8. package/dist/{DurableAgentRuntime-BQzYkFVy.mjs → DurableAgentRuntime-eImXoGqD.mjs} +78 -27
  9. package/dist/DurableAgentRuntime-eImXoGqD.mjs.map +1 -0
  10. package/dist/{EventSource-C8CKwQy5.d.mts → EventSource-CETtQTiH.d.mts} +3 -3
  11. package/dist/InMemory.d.mts +1 -1
  12. package/dist/{PreparedInputAdmission-CU1PzUVD.d.mts → PreparedInputAdmission-Swp9t800.d.mts} +4 -4
  13. package/dist/{Records-BrEpibum.d.mts → Records-BxGWRs-t.d.mts} +2 -2
  14. package/dist/{RunEvent-DV_llBcq.d.mts → RunEvent-D0aepYwN.d.mts} +2 -2
  15. package/dist/{RunEventSink-D5aVhISG.d.mts → RunEventSink-DsbcGXog.d.mts} +2 -2
  16. package/dist/{RunOptions-CkRYnlJa.d.mts → RunOptions-GjDlAuKh.d.mts} +5 -2
  17. package/dist/{Schedule-B_z7PMg-.d.mts → Schedule-B94iS2X3.d.mts} +2 -2
  18. package/dist/{Subagent-CmFtZaeI.mjs → Subagent-211Oz2IN.mjs} +2 -2
  19. package/dist/{Subagent-CmFtZaeI.mjs.map → Subagent-211Oz2IN.mjs.map} +1 -1
  20. package/dist/{Subagent-Dld4W1BY.d.mts → Subagent-CLaMeZKu.d.mts} +6 -6
  21. package/dist/{Subscription-BomcQ9_W.d.mts → Subscription-DaMCppa_.d.mts} +4 -4
  22. package/dist/{SubscriptionInput-gpZSR9vB.d.mts → SubscriptionInput-B0ZtrQoY.d.mts} +3 -3
  23. package/dist/{ThreadHistory-ZEu_ja6L.d.mts → ThreadHistory-FD-o4TsR.d.mts} +2 -2
  24. package/dist/{Usage-Dx0aknfk.d.mts → Usage-BNjPR7Zr.d.mts} +9 -1
  25. package/dist/{WorkerAdmission-CNbm4o_x.mjs → WorkerAdmission-N9hZV85Q.mjs} +2 -2
  26. package/dist/{WorkerAdmission-CNbm4o_x.mjs.map → WorkerAdmission-N9hZV85Q.mjs.map} +1 -1
  27. package/dist/{agent-registration-U3kmV7nW.mjs → agent-registration-BIOzAej4.mjs} +10 -1
  28. package/dist/agent-registration-BIOzAej4.mjs.map +1 -0
  29. package/dist/capabilities/Commands.d.mts +1 -1
  30. package/dist/capabilities/Redaction.d.mts +1 -1
  31. package/dist/capabilities/RunHooks.d.mts +1 -1
  32. package/dist/capabilities/Subagent.d.mts +1 -1
  33. package/dist/capabilities/Subagent.mjs +1 -1
  34. package/dist/capabilities/ToolDiscovery.d.mts +5 -0
  35. package/dist/capabilities/ToolDiscovery.mjs +18 -9
  36. package/dist/capabilities/ToolDiscovery.mjs.map +1 -1
  37. package/dist/capabilities/WebSearch.d.mts +5 -1
  38. package/dist/capabilities/WebSearch.mjs +9 -1
  39. package/dist/capabilities/WebSearch.mjs.map +1 -1
  40. package/dist/core/Agent.mjs +1 -1
  41. package/dist/core/RunEvent.d.mts +1 -1
  42. package/dist/core/Usage.d.mts +1 -1
  43. package/dist/core/Usage.mjs +22 -1
  44. package/dist/core/Usage.mjs.map +1 -1
  45. package/dist/durable/ActivityStore.d.mts +1 -1
  46. package/dist/durable/Admin.d.mts +1 -1
  47. package/dist/durable/AgentRegistration.d.mts +1 -1
  48. package/dist/durable/AgentRegistration.mjs +1 -1
  49. package/dist/durable/Certification.d.mts +1 -1
  50. package/dist/durable/CommittedActivity.d.mts +3 -3
  51. package/dist/durable/Digest.d.mts +1 -1
  52. package/dist/durable/DurableAgentRuntime.d.mts +1 -1
  53. package/dist/durable/DurableAgentRuntime.mjs +2 -2
  54. package/dist/durable/EventSource.d.mts +1 -1
  55. package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
  56. package/dist/durable/LifecyclePublication.d.mts +1 -1
  57. package/dist/durable/LifecyclePublication.mjs +2 -2
  58. package/dist/durable/LifecyclePublication.mjs.map +1 -1
  59. package/dist/durable/MessageDelivery.d.mts +24 -10
  60. package/dist/durable/MessageDelivery.mjs +49 -17
  61. package/dist/durable/MessageDelivery.mjs.map +1 -1
  62. package/dist/durable/MessageDeliveryStoreConformance.d.mts +5 -5
  63. package/dist/durable/PersistentHistory.d.mts +2 -2
  64. package/dist/durable/PreparedInputAdmission.d.mts +1 -1
  65. package/dist/durable/Records.d.mts +1 -1
  66. package/dist/durable/Recovery.d.mts +1 -1
  67. package/dist/durable/RunJournal.d.mts +1 -1
  68. package/dist/durable/Schedule.d.mts +1 -1
  69. package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
  70. package/dist/durable/ScheduleTransition.d.mts +1 -1
  71. package/dist/durable/Scheduling.d.mts +3 -3
  72. package/dist/durable/SubmissionLedger.d.mts +1 -1
  73. package/dist/durable/SubmissionLedgerConformance.d.mts +2 -2
  74. package/dist/durable/SubmissionStatus.d.mts +1 -1
  75. package/dist/durable/Subscription.d.mts +1 -1
  76. package/dist/durable/SubscriptionInput.d.mts +1 -1
  77. package/dist/durable/SubscriptionInput.mjs +1 -1
  78. package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
  79. package/dist/durable/SubscriptionTools.d.mts +4 -4
  80. package/dist/durable/SubscriptionTransition.d.mts +1 -1
  81. package/dist/durable/Subscriptions.d.mts +6 -6
  82. package/dist/durable/ThreadContextHistory.d.mts +1 -1
  83. package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
  84. package/dist/durable/ThreadInvariants.d.mts +2 -2
  85. package/dist/durable/ThreadProjection.d.mts +1 -1
  86. package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
  87. package/dist/durable/ThreadStore.d.mts +1 -1
  88. package/dist/durable/ThreadStoreConformance.d.mts +1 -1
  89. package/dist/durable/WorkerAdmission.d.mts +2 -2
  90. package/dist/durable/WorkerAdmission.mjs +1 -1
  91. package/dist/durable/WorkerHost.d.mts +2 -2
  92. package/dist/engine/AgentRuntime.d.mts +1 -1
  93. package/dist/engine/AgentRuntime.mjs +1 -1
  94. package/dist/engine/RunEventSink.d.mts +1 -1
  95. package/dist/engine/RunOptions.d.mts +1 -1
  96. package/dist/engine/RunOptions.mjs +1 -0
  97. package/dist/engine/RunOptions.mjs.map +1 -1
  98. package/dist/engine/ThreadHistory.d.mts +1 -1
  99. package/dist/index.d.mts +15 -15
  100. package/dist/index.mjs +5 -5
  101. package/package.json +1 -1
  102. package/src/capabilities/ToolDiscovery.ts +24 -10
  103. package/src/capabilities/WebSearch.ts +15 -0
  104. package/src/core/Agent.ts +16 -2
  105. package/src/core/Usage.ts +41 -0
  106. package/src/durable/DurableAgentRuntime.ts +119 -21
  107. package/src/durable/LifecyclePublication.ts +15 -2
  108. package/src/durable/MessageDelivery.ts +64 -20
  109. package/src/durable/internal/agent-registration.ts +11 -0
  110. package/src/engine/RunOptions.ts +3 -0
  111. package/src/engine/internal/agent-runtime.ts +91 -20
  112. package/dist/Agent-1DMSO_Fl.mjs.map +0 -1
  113. package/dist/AgentRuntime-IF_1GoUf.mjs.map +0 -1
  114. package/dist/DurableAgentRuntime-BQzYkFVy.mjs.map +0 -1
  115. package/dist/agent-registration-U3kmV7nW.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import { t as ToolResult_exports } from "./core/ToolResult.mjs";
3
3
  import { t as AgentPolicy_exports } from "./core/AgentPolicy.mjs";
4
4
  import { t as Receipt_exports } from "./core/Receipt.mjs";
5
5
  import { t as AgentUpdates_exports } from "./core/AgentUpdates.mjs";
6
- import { t as Agent_exports } from "./Agent-1DMSO_Fl.mjs";
6
+ import { t as Agent_exports } from "./Agent-BMATXYsI.mjs";
7
7
  import { a as FailureDiagnostic_exports } from "./FailureDiagnostic-BElLOoED.mjs";
8
8
  import { t as AgentError_exports } from "./core/AgentError.mjs";
9
9
  import { t as IdGenerator_exports } from "./core/IdGenerator.mjs";
@@ -15,7 +15,7 @@ import { n as MessagingHost_exports } from "./MessagingHost-DfsbMPvq.mjs";
15
15
  import { t as SubagentHost_exports } from "./engine/SubagentHost.mjs";
16
16
  import { t as Thread_exports } from "./core/Thread.mjs";
17
17
  import { t as ThreadHistory_exports } from "./engine/ThreadHistory.mjs";
18
- import { t as AgentRuntime_exports } from "./AgentRuntime-IF_1GoUf.mjs";
18
+ import { t as AgentRuntime_exports } from "./AgentRuntime-D4eoBpIW.mjs";
19
19
  import { t as ContextWindow_exports } from "./engine/ContextWindow.mjs";
20
20
  import { t as DurableStep_exports } from "./engine/DurableStep.mjs";
21
21
  import { t as ContextCompactor_exports } from "./engine/ContextCompactor.mjs";
@@ -57,7 +57,7 @@ import { t as RunHooks_exports } from "./capabilities/RunHooks.mjs";
57
57
  import { t as SemanticMemoryIndex_exports } from "./core/SemanticMemoryIndex.mjs";
58
58
  import { t as SemanticMemoryRevalidation_exports } from "./core/SemanticMemoryRevalidation.mjs";
59
59
  import { t as SemanticMemory_exports } from "./capabilities/SemanticMemory.mjs";
60
- import { r as Subagent_exports } from "./Subagent-CmFtZaeI.mjs";
60
+ import { r as Subagent_exports } from "./Subagent-211Oz2IN.mjs";
61
61
  import { t as ToolDiscovery_exports } from "./capabilities/ToolDiscovery.mjs";
62
62
  import { t as ToolExposure_exports } from "./ToolExposure.mjs";
63
63
  import { t as WebCapture_exports } from "./capabilities/WebCapture.mjs";
@@ -69,7 +69,7 @@ import { t as Recovery_exports } from "./durable/Recovery.mjs";
69
69
  import { t as Admin_exports } from "./durable/Admin.mjs";
70
70
  import { t as Digest_exports } from "./durable/Digest.mjs";
71
71
  import { t as AgentRegistration_exports } from "./durable/AgentRegistration.mjs";
72
- import { r as DurableAgentRuntime_exports } from "./DurableAgentRuntime-BQzYkFVy.mjs";
72
+ import { r as DurableAgentRuntime_exports } from "./DurableAgentRuntime-eImXoGqD.mjs";
73
73
  import { n as RunJournal_exports } from "./RunJournal-ixFRCyW3.mjs";
74
74
  import { t as ThreadStore_exports } from "./durable/ThreadStore.mjs";
75
75
  import { t as CommittedActivity_exports } from "./durable/CommittedActivity.mjs";
@@ -79,7 +79,7 @@ import { t as PreparedInputAdmission_exports } from "./durable/PreparedInputAdmi
79
79
  import { t as Subscription_exports } from "./durable/Subscription.mjs";
80
80
  import { t as MessageDelivery_exports } from "./durable/MessageDelivery.mjs";
81
81
  import { t as WakeScheduler_exports } from "./durable/WakeScheduler.mjs";
82
- import { i as WorkerAdmission_exports } from "./WorkerAdmission-CNbm4o_x.mjs";
82
+ import { i as WorkerAdmission_exports } from "./WorkerAdmission-N9hZV85Q.mjs";
83
83
  import { t as WorkerHost_exports } from "./durable/WorkerHost.mjs";
84
84
  import { t as OperationAuthorizer_exports } from "./durable/OperationAuthorizer.mjs";
85
85
  import { t as SubmissionStatus_exports } from "./durable/SubmissionStatus.mjs";
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"effect-agent","version":"0.1.0-beta.156","devDependencies":{"@effect/platform-node":"4.0.0-rc.117","@effect/vitest":"4.0.0-rc.117","effect":"4.0.0-rc.117","typescript":"7.0.2","vite-plus":"0.3.3"},"peerDependencies":{"effect":"^4.0.0-rc.117"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./browser-use":{"types":"./dist/capabilities/BrowserUse.d.mts","default":"./dist/capabilities/BrowserUse.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-admission":{"types":"./dist/durable/WorkerAdmission.d.mts","default":"./dist/durable/WorkerAdmission.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"},"./lifecycle-publication":{"types":"./dist/durable/LifecyclePublication.d.mts","default":"./dist/durable/LifecyclePublication.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
1
+ {"name":"effect-agent","version":"0.1.0-beta.158","devDependencies":{"@effect/platform-node":"4.0.0-rc.117","@effect/vitest":"4.0.0-rc.117","effect":"4.0.0-rc.117","typescript":"7.0.2","vite-plus":"0.3.3"},"peerDependencies":{"effect":"^4.0.0-rc.117"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./browser-use":{"types":"./dist/capabilities/BrowserUse.d.mts","default":"./dist/capabilities/BrowserUse.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./failure-diagnostic":{"types":"./dist/core/FailureDiagnostic.d.mts","default":"./dist/core/FailureDiagnostic.mjs"},"./git-hub-workflow-source":{"types":"./dist/durable/GitHubWorkflowSource.d.mts","default":"./dist/durable/GitHubWorkflowSource.mjs"},"./id-generator":{"types":"./dist/core/IdGenerator.d.mts","default":"./dist/core/IdGenerator.mjs"},"./identifiers":{"types":"./dist/core/Identifiers.d.mts","default":"./dist/core/Identifiers.mjs"},"./in-memory":{"types":"./dist/InMemory.d.mts","default":"./dist/InMemory.mjs"},"./interactive-browser":{"types":"./dist/sandbox/InteractiveBrowser.d.mts","default":"./dist/sandbox/InteractiveBrowser.mjs"},"./mcp":{"types":"./dist/capabilities/Mcp.d.mts","default":"./dist/capabilities/Mcp.mjs"},"./mcp-client":{"types":"./dist/capabilities/McpClient.d.mts","default":"./dist/capabilities/McpClient.mjs"},"./memory":{"types":"./dist/core/Memory.d.mts","default":"./dist/core/Memory.mjs"},"./memory-namespace":{"types":"./dist/core/MemoryNamespace.d.mts","default":"./dist/core/MemoryNamespace.mjs"},"./memory-notes":{"types":"./dist/capabilities/MemoryNotes.d.mts","default":"./dist/capabilities/MemoryNotes.mjs"},"./memory-reference":{"types":"./dist/core/MemoryReference.d.mts","default":"./dist/core/MemoryReference.mjs"},"./memory-revalidation":{"types":"./dist/core/MemoryRevalidation.d.mts","default":"./dist/core/MemoryRevalidation.mjs"},"./memory-store":{"types":"./dist/core/MemoryStore.d.mts","default":"./dist/core/MemoryStore.mjs"},"./message-delivery":{"types":"./dist/durable/MessageDelivery.d.mts","default":"./dist/durable/MessageDelivery.mjs"},"./messaging":{"types":"./dist/capabilities/Messaging.d.mts","default":"./dist/capabilities/Messaging.mjs"},"./messaging-host":{"types":"./dist/engine/MessagingHost.d.mts","default":"./dist/engine/MessagingHost.mjs"},"./model-context":{"types":"./dist/capabilities/ModelContext.d.mts","default":"./dist/capabilities/ModelContext.mjs"},"./operation-authorizer":{"types":"./dist/durable/OperationAuthorizer.d.mts","default":"./dist/durable/OperationAuthorizer.mjs"},"./output":{"types":"./dist/engine/Output.d.mts","default":"./dist/engine/Output.mjs"},"./page-capture":{"types":"./dist/sandbox/PageCapture.d.mts","default":"./dist/sandbox/PageCapture.mjs"},"./page-crawl":{"types":"./dist/sandbox/PageCrawl.d.mts","default":"./dist/sandbox/PageCrawl.mjs"},"./page-screenshot":{"types":"./dist/sandbox/PageScreenshot.d.mts","default":"./dist/sandbox/PageScreenshot.mjs"},"./persistent-history":{"types":"./dist/durable/PersistentHistory.d.mts","default":"./dist/durable/PersistentHistory.mjs"},"./prepared-input-admission":{"types":"./dist/durable/PreparedInputAdmission.d.mts","default":"./dist/durable/PreparedInputAdmission.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-admission":{"types":"./dist/durable/WorkerAdmission.d.mts","default":"./dist/durable/WorkerAdmission.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"},"./lifecycle-publication":{"types":"./dist/durable/LifecyclePublication.d.mts","default":"./dist/durable/LifecyclePublication.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
@@ -40,6 +40,13 @@ export class Match extends Schema.Class<Match>("@effect-agent/capabilities/ToolD
40
40
  ...Descriptor.fields,
41
41
  parameters: Schema.Json,
42
42
  success: Schema.Json,
43
+ /** Hosted declaration; parameters/success are null when no application handler is required. */
44
+ provider: Schema.optionalKey(
45
+ Schema.Struct({
46
+ providerName: Schema.NonEmptyString,
47
+ requiresHandler: Schema.Boolean,
48
+ }),
49
+ ),
43
50
  }) {}
44
51
 
45
52
  /**
@@ -297,18 +304,25 @@ export const make = <Failure extends Schema.Top = typeof Schema.Never, Requireme
297
304
  message: "Search returned an entry outside the visible catalogue",
298
305
  });
299
306
  }
300
- if (Tool.isProviderDefined(entry.tool)) {
301
- return yield* ToolDiscoveryError.make({
302
- reason: "invalid-schema",
303
- message: "Provider-defined Tools do not expose application handler documentation",
304
- });
305
- }
307
+ const tool = entry.tool;
306
308
 
307
309
  const schemas = yield* Effect.try({
308
- try: () => ({
309
- parameters: Tool.getJsonSchema(entry.tool),
310
- success: Tool.getJsonSchemaFromSchema(entry.tool.successSchema),
311
- }),
310
+ try: () =>
311
+ Tool.isProviderDefined(tool)
312
+ ? {
313
+ parameters: tool.requiresHandler ? Tool.getJsonSchema(tool) : null,
314
+ success: tool.requiresHandler
315
+ ? Tool.getJsonSchemaFromSchema(tool.successSchema)
316
+ : null,
317
+ provider: {
318
+ providerName: tool.providerName,
319
+ requiresHandler: tool.requiresHandler,
320
+ },
321
+ }
322
+ : {
323
+ parameters: Tool.getJsonSchema(tool),
324
+ success: Tool.getJsonSchemaFromSchema(tool.successSchema),
325
+ },
312
326
  catch: () =>
313
327
  ToolDiscoveryError.make({
314
328
  reason: "invalid-schema",
@@ -80,6 +80,21 @@ export interface Options<T extends Tool.AnyProviderDefined = Tool.AnyProviderDef
80
80
  readonly maxOutputBytes?: number;
81
81
  }
82
82
 
83
+ /** Place hosted search in the agent's own model call; no handler or search model Layer is needed.
84
+ * Citations stay in native text annotations and sources. Configure the provider tool at the host.
85
+ */
86
+ export const native = <T extends Tool.AnyProviderDefined>(options: Pick<Options<T>, "tool">) => {
87
+ if (
88
+ !Tool.isProviderDefined(options.tool) ||
89
+ options.tool.requiresHandler ||
90
+ !["web_search", "web_search_preview"].includes(options.tool.providerName)
91
+ ) {
92
+ throw new Error("WebSearch.native requires a provider-executed web_search tool");
93
+ }
94
+
95
+ return Toolkit.make(options.tool);
96
+ };
97
+
83
98
  const boundedInteger = (name: string, value: number, maximum: number): number => {
84
99
  if (!Number.isSafeInteger(value) || value < 1 || value > maximum) {
85
100
  throw new Error(`WebSearch ${name} must be an integer between 1 and ${maximum}`);
package/src/core/Agent.ts CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  type Model,
7
7
  type Prompt,
8
8
  Tool,
9
- type Toolkit,
9
+ Toolkit,
10
10
  } from "effect/unstable/ai";
11
11
 
12
12
  import type { AgentInputError, AgentOutputError, AgentRunDispositionError } from "./AgentError.ts";
@@ -569,9 +569,23 @@ export function make(
569
569
  completionNames.add(declaration.tool);
570
570
  }
571
571
 
572
+ const tools = Object.values(options.toolkit.tools);
573
+
574
+ const readonlyTools = tools.map((tool) =>
575
+ Tool.isProviderDefined(tool) &&
576
+ !tool.requiresHandler &&
577
+ ["web_search", "web_search_preview", "file_search"].includes(tool.providerName)
578
+ ? tool.annotate(Tool.Readonly, true)
579
+ : tool,
580
+ );
581
+
582
+ const toolkit = readonlyTools.some((tool, index) => tool !== tools[index])
583
+ ? Toolkit.make(...readonlyTools)
584
+ : options.toolkit;
585
+
572
586
  return Object.freeze({
573
587
  ...options,
574
- toolkit: withUpdateTool(options.toolkit, options.updates),
588
+ toolkit: withUpdateTool(toolkit, options.updates),
575
589
  policy: AgentPolicy.resolve(options.policy),
576
590
  policyOverrides: Object.freeze({ ...options.policy }),
577
591
  toolExposure:
package/src/core/Usage.ts CHANGED
@@ -68,6 +68,8 @@ export class ModelCallUsage extends Schema.Class<ModelCallUsage>(
68
68
  pricingStatus: Schema.optionalKey(Schema.Literals(["estimated", "unknown"])),
69
69
  inputTokens: InputTokenUsage,
70
70
  outputTokens: OutputTokenUsage,
71
+ /** Observed hosted web searches; excludes OpenAI page/find actions. Absent in legacy records. */
72
+ webSearchCalls: Schema.optionalKey(Schema.Natural),
71
73
  costMicrousd: Schema.Natural,
72
74
  }) {}
73
75
 
@@ -80,6 +82,8 @@ export class RunTotals extends Schema.Class<RunTotals>("@effect-agent/core/RunTo
80
82
  modelCalls: Schema.Natural,
81
83
  inputTokens: Schema.Natural,
82
84
  outputTokens: Schema.Natural,
85
+ /** Observed hosted web searches; excludes OpenAI page/find actions. Absent in legacy records. */
86
+ webSearchCalls: Schema.optionalKey(Schema.Natural),
83
87
  costMicrousd: Schema.Natural,
84
88
  usageStatus: Schema.optionalKey(UsageCompleteness),
85
89
  pricingStatus: Schema.optionalKey(UsageCompleteness),
@@ -104,6 +108,7 @@ export class ChildRunUsage extends Schema.Class<ChildRunUsage>("@effect-agent/co
104
108
  export const emptyRunTotals = (): RunTotals =>
105
109
  RunTotals.make({
106
110
  modelCalls: 0,
111
+ webSearchCalls: 0,
107
112
  inputTokens: 0,
108
113
  outputTokens: 0,
109
114
  costMicrousd: 0,
@@ -133,6 +138,8 @@ export class ModelUsageGroup extends Schema.Class<ModelUsageGroup>(
133
138
  modelCalls: Schema.Natural.check(Schema.isGreaterThan(0)),
134
139
  inputTokens: InputTokenUsage,
135
140
  outputTokens: OutputTokenUsage,
141
+ /** Observed hosted web searches; excludes OpenAI page/find actions. Absent in legacy records. */
142
+ webSearchCalls: Schema.optionalKey(Schema.Natural),
136
143
  costMicrousd: Schema.Natural,
137
144
  }) {}
138
145
 
@@ -140,6 +147,8 @@ const RunUsageSummaryFields = Schema.Struct({
140
147
  modelCalls: Schema.Natural,
141
148
  inputTokens: InputTokenUsage,
142
149
  outputTokens: OutputTokenUsage,
150
+ /** Observed hosted web searches; excludes OpenAI page/find actions. Absent in legacy records. */
151
+ webSearchCalls: Schema.optionalKey(Schema.Natural),
143
152
  costMicrousd: Schema.Natural,
144
153
  byModel: Schema.Array(ModelUsageGroup),
145
154
  /** Coverage of recorded calls only; interruptions can make the Run less complete. */
@@ -162,6 +171,11 @@ const RunUsageSummaryFields = Schema.Struct({
162
171
 
163
172
  return (
164
173
  new Set(identities).size === identities.length &&
174
+ (summary.webSearchCalls === undefined ||
175
+ hasAdditiveTotal(
176
+ summary.webSearchCalls,
177
+ summary.byModel.map((group) => group.webSearchCalls ?? 0),
178
+ )) &&
165
179
  hasAdditiveTotal(
166
180
  summary.modelCalls,
167
181
  summary.byModel.map((group) => group.modelCalls),
@@ -219,6 +233,7 @@ interface MutableUsageGroup {
219
233
  readonly serviceTier?: string | undefined;
220
234
  readonly pricingVersion?: string | undefined;
221
235
  modelCalls: number;
236
+ webSearchCalls: number | undefined;
222
237
  inputTokens: {
223
238
  total: number;
224
239
  uncached: number;
@@ -267,6 +282,7 @@ export const sumRunTotals = Effect.fn("sumRunTotals")(function* (
267
282
  contributions: ReadonlyArray<RunTotals>,
268
283
  ): Effect.fn.Return<RunTotals, UsageAggregationError> {
269
284
  let modelCalls = 0;
285
+ let webSearchCalls: number | undefined = 0;
270
286
  let inputTokens = 0;
271
287
  let outputTokens = 0;
272
288
  let costMicrousd = 0;
@@ -282,6 +298,13 @@ export const sumRunTotals = Effect.fn("sumRunTotals")(function* (
282
298
  );
283
299
 
284
300
  modelCalls = yield* checkedAdd("modelCalls", modelCalls, value.modelCalls);
301
+ if (value.webSearchCalls === undefined && value.modelCalls > 0) webSearchCalls = undefined;
302
+ else if (webSearchCalls !== undefined)
303
+ webSearchCalls = yield* checkedAdd(
304
+ "webSearchCalls",
305
+ webSearchCalls,
306
+ value.webSearchCalls ?? 0,
307
+ );
285
308
  inputTokens = yield* checkedAdd("inputTokens", inputTokens, value.inputTokens);
286
309
  outputTokens = yield* checkedAdd("outputTokens", outputTokens, value.outputTokens);
287
310
  costMicrousd = yield* checkedAdd("costMicrousd", costMicrousd, value.costMicrousd);
@@ -316,6 +339,7 @@ export const sumRunTotals = Effect.fn("sumRunTotals")(function* (
316
339
 
317
340
  return RunTotals.make({
318
341
  modelCalls,
342
+ ...(webSearchCalls === undefined ? {} : { webSearchCalls }),
319
343
  inputTokens,
320
344
  outputTokens,
321
345
  costMicrousd,
@@ -329,6 +353,7 @@ export const sumRunTotals = Effect.fn("sumRunTotals")(function* (
329
353
  export const runTotalsFromSummary = (summary: RunUsageSummary): RunTotals =>
330
354
  RunTotals.make({
331
355
  modelCalls: summary.modelCalls,
356
+ ...(summary.webSearchCalls === undefined ? {} : { webSearchCalls: summary.webSearchCalls }),
332
357
  inputTokens: summary.inputTokens.total,
333
358
  outputTokens: summary.outputTokens.total,
334
359
  costMicrousd: summary.costMicrousd,
@@ -363,6 +388,10 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
363
388
  const outputTokens = initial === undefined ? emptyOutputTokens() : { ...initial.outputTokens };
364
389
  const groups = new Map<string, MutableUsageGroup>();
365
390
  let modelCalls = initial?.modelCalls ?? 0;
391
+
392
+ let webSearchCalls =
393
+ initial === undefined || initial.modelCalls === 0 ? 0 : initial.webSearchCalls;
394
+
366
395
  let costMicrousd = initial?.costMicrousd ?? 0;
367
396
  const hasSeedCalls = modelCalls > 0;
368
397
 
@@ -387,6 +416,7 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
387
416
 
388
417
  groups.set(key, {
389
418
  ...group,
419
+ webSearchCalls: group.webSearchCalls,
390
420
  inputTokens: { ...group.inputTokens },
391
421
  outputTokens: { ...group.outputTokens },
392
422
  });
@@ -398,6 +428,10 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
398
428
  allPricingUnknown &&= call.pricingStatus !== "estimated";
399
429
  allPricingComplete &&= call.pricingStatus === "estimated";
400
430
  modelCalls = yield* checkedAdd("modelCalls", modelCalls, 1);
431
+ webSearchCalls =
432
+ webSearchCalls === undefined || call.webSearchCalls === undefined
433
+ ? undefined
434
+ : yield* checkedAdd("webSearchCalls", webSearchCalls, call.webSearchCalls);
401
435
  inputTokens.total = yield* checkedAdd(
402
436
  "inputTokens.total",
403
437
  inputTokens.total,
@@ -453,6 +487,7 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
453
487
  ...(call.serviceTier === undefined ? {} : { serviceTier: call.serviceTier }),
454
488
  ...(call.pricingVersion === undefined ? {} : { pricingVersion: call.pricingVersion }),
455
489
  modelCalls: 0,
490
+ webSearchCalls: 0,
456
491
  inputTokens: emptyInputTokens(),
457
492
  outputTokens: emptyOutputTokens(),
458
493
  costMicrousd: 0,
@@ -460,6 +495,10 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
460
495
  groups.set(key, group);
461
496
  }
462
497
  group.modelCalls = yield* checkedAdd("byModel.modelCalls", group.modelCalls, 1);
498
+ group.webSearchCalls =
499
+ group.webSearchCalls === undefined || call.webSearchCalls === undefined
500
+ ? undefined
501
+ : yield* checkedAdd("byModel.webSearchCalls", group.webSearchCalls, call.webSearchCalls);
463
502
  group.inputTokens.total = yield* checkedAdd(
464
503
  "byModel.inputTokens.total",
465
504
  group.inputTokens.total,
@@ -504,6 +543,7 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
504
543
 
505
544
  return RunUsageSummary.make({
506
545
  modelCalls,
546
+ ...(webSearchCalls === undefined ? {} : { webSearchCalls }),
507
547
  inputTokens: InputTokenUsage.make(inputTokens),
508
548
  outputTokens: OutputTokenUsage.make(outputTokens),
509
549
  costMicrousd,
@@ -520,6 +560,7 @@ export const summarizeModelUsage = Effect.fn("summarizeModelUsage")(function* (
520
560
  ...(group.serviceTier === undefined ? {} : { serviceTier: group.serviceTier }),
521
561
  ...(group.pricingVersion === undefined ? {} : { pricingVersion: group.pricingVersion }),
522
562
  modelCalls: group.modelCalls,
563
+ ...(group.webSearchCalls === undefined ? {} : { webSearchCalls: group.webSearchCalls }),
523
564
  inputTokens: InputTokenUsage.make(group.inputTokens),
524
565
  outputTokens: OutputTokenUsage.make(group.outputTokens),
525
566
  costMicrousd: group.costMicrousd,