effect-agent 0.1.0-beta.111 → 0.1.0-beta.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DurableAgentRuntime-PyIgNYXF.mjs → DurableAgentRuntime-BIrgxwRl.mjs} +154 -21
- package/dist/DurableAgentRuntime-BIrgxwRl.mjs.map +1 -0
- package/dist/{EventSource-BUYLmL77.d.mts → EventSource-ARs56eBq.d.mts} +3 -3
- package/dist/{PreparedInputAdmission-J3YK6LAm.d.mts → PreparedInputAdmission-_WYg-D0f.d.mts} +4 -4
- package/dist/{Records-4qnRmniE.d.mts → Records-BtxMy8xD.d.mts} +94 -13
- package/dist/{Schedule-C2lH2kxY.d.mts → Schedule-DGPyXBzK.d.mts} +2 -2
- package/dist/{Subscription-pQUv0QD6.d.mts → Subscription-B9VszlF9.d.mts} +3 -3
- package/dist/{SubscriptionInput-DdJOiNMY.d.mts → SubscriptionInput-BJWZqCWP.d.mts} +3 -3
- package/dist/capabilities/Mcp.d.mts +1 -1
- package/dist/capabilities/Mcp.mjs +5 -6
- package/dist/capabilities/Mcp.mjs.map +1 -1
- package/dist/durable/ActivityStore.d.mts +1 -1
- package/dist/durable/Admin.d.mts +1 -1
- package/dist/durable/AgentRegistration.d.mts +1 -1
- package/dist/durable/Certification.d.mts +1 -1
- package/dist/durable/CommittedActivity.d.mts +1 -1
- package/dist/durable/Digest.d.mts +1 -1
- package/dist/durable/DurableAgentRuntime.d.mts +2 -2
- package/dist/durable/DurableAgentRuntime.mjs +2 -2
- package/dist/durable/EventSource.d.mts +1 -1
- package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
- package/dist/durable/MessageDelivery.d.mts +3 -3
- package/dist/durable/MessageDeliveryStoreConformance.d.mts +39 -39
- package/dist/durable/PersistentHistory.d.mts +1 -1
- package/dist/durable/PreparedInputAdmission.d.mts +1 -1
- package/dist/durable/Records.d.mts +1 -1
- package/dist/durable/Recovery.d.mts +1 -1
- package/dist/durable/RunJournal.d.mts +1 -1
- package/dist/durable/Schedule.d.mts +1 -1
- package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
- package/dist/durable/ScheduleTransition.d.mts +1 -1
- package/dist/durable/Scheduling.d.mts +2 -2
- package/dist/durable/SqlStorageV2Upgrade.d.mts +2 -2
- package/dist/durable/SqlSubscriptionStore.d.mts +2 -2
- package/dist/durable/SqlThreadNativeReads.d.mts +1 -1
- package/dist/durable/SubmissionLedger.d.mts +2 -2
- package/dist/durable/SubmissionLedger.mjs +19 -8
- package/dist/durable/SubmissionLedger.mjs.map +1 -1
- package/dist/durable/SubmissionLedgerConformance.d.mts +1 -1
- package/dist/durable/SubmissionLedgerConformance.mjs +2 -1
- package/dist/durable/SubmissionLedgerConformance.mjs.map +1 -1
- package/dist/durable/SubmissionStatus.d.mts +1 -1
- package/dist/durable/Subscription.d.mts +1 -1
- package/dist/durable/SubscriptionInput.d.mts +1 -1
- package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
- package/dist/durable/SubscriptionTools.d.mts +3 -3
- package/dist/durable/SubscriptionTransition.d.mts +1 -1
- package/dist/durable/Subscriptions.d.mts +5 -5
- package/dist/durable/ThreadContextHistory.d.mts +1 -1
- package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
- package/dist/durable/ThreadInvariants.d.mts +1 -1
- package/dist/durable/ThreadProjection.d.mts +1 -1
- package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
- package/dist/durable/ThreadStore.d.mts +2 -2
- package/dist/durable/ThreadStore.mjs +16 -2
- package/dist/durable/ThreadStore.mjs.map +1 -1
- package/dist/durable/ThreadStoreConformance.d.mts +1 -1
- package/dist/durable/WorkerHost.d.mts +1 -1
- package/dist/index.d.mts +6 -6
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/src/capabilities/Mcp.ts +6 -7
- package/src/durable/DurableAgentRuntime.ts +278 -49
- package/src/durable/SubmissionLedger.ts +22 -9
- package/src/durable/SubmissionLedgerConformance.ts +13 -1
- package/src/durable/ThreadStore.ts +16 -0
- package/dist/DurableAgentRuntime-PyIgNYXF.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Mn as SettledSubmission, Nn as SubmissionStatus, jn as PendingSubmission } from "../Records-BtxMy8xD.mjs";
|
|
2
2
|
export { PendingSubmission, SettledSubmission, SubmissionStatus };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as defaultSubscriptionLimits, C as SubscriptionScanCursors, D as SubscriptionStore, E as SubscriptionSourceError, M as subscriptionKeyString, O as SubscriptionStoreFailure, S as SubscriptionRetentionPolicy, T as SubscriptionSnapshot, _ as SubscriptionKey, a as PreparedInput, b as SubscriptionRecord, c as SubscriptionAuthorizer, d as SubscriptionDelivery, f as SubscriptionDeliveryKey, g as SubscriptionFailpointError, h as SubscriptionFailpoint, i as EventSourceVersion, j as subscriptionDeliveryKeyString, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, s as SourceRecovery, t as AcceptedEvent, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope, x as SubscriptionRefusal, y as SubscriptionName } from "../Subscription-
|
|
1
|
+
import { A as defaultSubscriptionLimits, C as SubscriptionScanCursors, D as SubscriptionStore, E as SubscriptionSourceError, M as subscriptionKeyString, O as SubscriptionStoreFailure, S as SubscriptionRetentionPolicy, T as SubscriptionSnapshot, _ as SubscriptionKey, a as PreparedInput, b as SubscriptionRecord, c as SubscriptionAuthorizer, d as SubscriptionDelivery, f as SubscriptionDeliveryKey, g as SubscriptionFailpointError, h as SubscriptionFailpoint, i as EventSourceVersion, j as subscriptionDeliveryKeyString, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, s as SourceRecovery, t as AcceptedEvent, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope, x as SubscriptionRefusal, y as SubscriptionName } from "../Subscription-B9VszlF9.mjs";
|
|
2
2
|
export { AcceptedEvent, DeliveryChange, EventAcknowledgement, EventSourceVersion, PreparedInput, SourcePartition, SourceRecovery, SubscriptionAuthorizer, SubscriptionChange, SubscriptionConfiguration, SubscriptionDelivery, SubscriptionDeliveryKey, SubscriptionDeliverySnapshot, SubscriptionError, SubscriptionFailpoint, SubscriptionFailpointError, SubscriptionKey, SubscriptionLimits, SubscriptionName, SubscriptionRecord, SubscriptionRefusal, SubscriptionRetentionPolicy, SubscriptionScanCursors, SubscriptionScope, SubscriptionSnapshot, SubscriptionSourceError, SubscriptionStore, SubscriptionStoreFailure, defaultSubscriptionLimits, subscriptionDeliveryKeyString, subscriptionKeyString };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as resolveSubscriptionInput, i as makeSubscriptionInputBinding, n as SubscriptionInputBindings, t as SubscriptionInputBinding } from "../SubscriptionInput-
|
|
1
|
+
import { a as resolveSubscriptionInput, i as makeSubscriptionInputBinding, n as SubscriptionInputBindings, t as SubscriptionInputBinding } from "../SubscriptionInput-BJWZqCWP.mjs";
|
|
2
2
|
export { SubscriptionInputBinding, SubscriptionInputBindings, makeSubscriptionInputBinding, resolveSubscriptionInput };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as SubscriptionStore, O as SubscriptionStoreFailure, o as SourcePartition } from "../Subscription-
|
|
1
|
+
import { D as SubscriptionStore, O as SubscriptionStoreFailure, o as SourcePartition } from "../Subscription-B9VszlF9.mjs";
|
|
2
2
|
import { Effect, Schema } from "effect";
|
|
3
3
|
//#region src/durable/SubscriptionStoreConformance.d.ts
|
|
4
4
|
declare const SubscriptionStoreConformanceViolation_base: Schema.Class<SubscriptionStoreConformanceViolation, Schema.TaggedStruct<"SubscriptionStoreConformanceViolation", {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as AgentId, u as ThreadId } from "../Identifiers-CN2s30fF.mjs";
|
|
2
2
|
import { r as Principal } from "../Receipt-BAHyigAF.mjs";
|
|
3
3
|
import { t as DurableStep } from "../DurableStep-Cry_iol4.mjs";
|
|
4
|
-
import { h as DefinitionDigests } from "../Records-
|
|
5
|
-
import { c as ScheduleDestination } from "../Schedule-
|
|
6
|
-
import { E as SubscriptionSourceError, g as SubscriptionFailpointError, i as EventSourceVersion, m as SubscriptionError, w as SubscriptionScope } from "../Subscription-
|
|
4
|
+
import { h as DefinitionDigests } from "../Records-BtxMy8xD.mjs";
|
|
5
|
+
import { c as ScheduleDestination } from "../Schedule-DGPyXBzK.mjs";
|
|
6
|
+
import { E as SubscriptionSourceError, g as SubscriptionFailpointError, i as EventSourceVersion, m as SubscriptionError, w as SubscriptionScope } from "../Subscription-B9VszlF9.mjs";
|
|
7
7
|
import { Subscriptions } from "./Subscriptions.mjs";
|
|
8
8
|
import { Tool, Toolkit } from "effect/unstable/ai";
|
|
9
9
|
import { Crypto, Layer, Schema } from "effect";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as SubscriptionRecord, d as SubscriptionDelivery, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, t as AcceptedEvent, v as SubscriptionLimits } from "../Subscription-
|
|
1
|
+
import { b as SubscriptionRecord, d as SubscriptionDelivery, l as SubscriptionChange, m as SubscriptionError, n as DeliveryChange, o as SourcePartition, t as AcceptedEvent, v as SubscriptionLimits } from "../Subscription-B9VszlF9.mjs";
|
|
2
2
|
import { Result } from "effect";
|
|
3
3
|
declare namespace SubscriptionTransition_d_exports {
|
|
4
4
|
export { applySubscriptionChange, applySubscriptionDeliveryChange, sameAcceptedEventIdentity, sameSourcePartition, sameSubscriptionDelivery, subscriptionCanSelect, subscriptionDeliveryCanSelect, subscriptionMatchesEvent, validateEventRetention };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as Principal } from "../Receipt-BAHyigAF.mjs";
|
|
2
|
-
import { O as PersistedJson,
|
|
3
|
-
import { D as SubscriptionStore, E as SubscriptionSourceError, O as SubscriptionStoreFailure, T as SubscriptionSnapshot, _ as SubscriptionKey, c as SubscriptionAuthorizer, f as SubscriptionDeliveryKey, i as EventSourceVersion, m as SubscriptionError, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope } from "../Subscription-
|
|
4
|
-
import { r as EventSources } from "../EventSource-
|
|
5
|
-
import { t as PreparedInputAdmission } from "../PreparedInputAdmission-
|
|
6
|
-
import { n as SubscriptionInputBindings } from "../SubscriptionInput-
|
|
2
|
+
import { O as PersistedJson, ga as AdmissionFence } from "../Records-BtxMy8xD.mjs";
|
|
3
|
+
import { D as SubscriptionStore, E as SubscriptionSourceError, O as SubscriptionStoreFailure, T as SubscriptionSnapshot, _ as SubscriptionKey, c as SubscriptionAuthorizer, f as SubscriptionDeliveryKey, i as EventSourceVersion, m as SubscriptionError, p as SubscriptionDeliverySnapshot, r as EventAcknowledgement, u as SubscriptionConfiguration, v as SubscriptionLimits, w as SubscriptionScope } from "../Subscription-B9VszlF9.mjs";
|
|
4
|
+
import { r as EventSources } from "../EventSource-ARs56eBq.mjs";
|
|
5
|
+
import { t as PreparedInputAdmission } from "../PreparedInputAdmission-_WYg-D0f.mjs";
|
|
6
|
+
import { n as SubscriptionInputBindings } from "../SubscriptionInput-BJWZqCWP.mjs";
|
|
7
7
|
import { Context, Crypto, Effect, Layer } from "effect";
|
|
8
8
|
declare namespace Subscriptions_d_exports {
|
|
9
9
|
export { SubscribeOptions, SubscriptionDriver, SubscriptionFailure, SubscriptionIntake, Subscriptions };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextHistory, ContextHistoryError } from "../engine/ContextHistory.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { yn as ThreadStore } from "../Records-BtxMy8xD.mjs";
|
|
3
3
|
import { Layer, Schema } from "effect";
|
|
4
4
|
declare namespace ThreadContextHistory_d_exports {
|
|
5
5
|
export { ThreadContextHistoryOptions, layer };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextHistoryError } from "../engine/ContextHistory.mjs";
|
|
2
|
-
import { l as CanonicalRecordEnvelope } from "../Records-
|
|
2
|
+
import { l as CanonicalRecordEnvelope } from "../Records-BtxMy8xD.mjs";
|
|
3
3
|
import { Effect, Schema } from "effect";
|
|
4
4
|
declare namespace ThreadContextHistoryProjection_d_exports {
|
|
5
5
|
export { ContextHistoryBoundary, ContextHistoryEvidence, ContextHistoryProjection, matchText, normalizeQuery, normalizeText, project, windowIdFor };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as ProducerId,
|
|
1
|
+
import { A as ProducerId, Eo as SubmissionSnapshot, Kr as IntegrityReport, a as BatchId, an as ThreadExport, rn as ThreadCheckpoint } from "../Records-BtxMy8xD.mjs";
|
|
2
2
|
import { Crypto, Effect } from "effect";
|
|
3
3
|
declare namespace ThreadInvariants_d_exports {
|
|
4
4
|
export { ThreadInvariantInput, verifyThreadInvariants };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { u as ThreadId } from "../Identifiers-CN2s30fF.mjs";
|
|
2
|
-
import { G as SubagentRequested, J as SubmissionSettledRecord, K as SubagentStarted, Q as ToolApprovalRequested, U as SubagentJoined, W as SubagentLineageRecorded, Z as ToolApprovalDecided, _ as Digest, l as CanonicalRecordEnvelope, q as SubmissionSettled, rt as ToolCallUnknown, t as AbortRequested } from "../Records-
|
|
2
|
+
import { G as SubagentRequested, J as SubmissionSettledRecord, K as SubagentStarted, Q as ToolApprovalRequested, U as SubagentJoined, W as SubagentLineageRecorded, Z as ToolApprovalDecided, _ as Digest, l as CanonicalRecordEnvelope, q as SubmissionSettled, rt as ToolCallUnknown, t as AbortRequested } from "../Records-BtxMy8xD.mjs";
|
|
3
3
|
import { Schema } from "effect";
|
|
4
4
|
declare namespace ThreadProjection_d_exports {
|
|
5
5
|
export { ApprovalRecord, OpenToolCallState, SubagentInvocationState, ThreadProjection, initialThreadProjection, reduceThreadRecord, replayThread, replayThreadFromCheckpoint };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Jt as AppendResult, Zt as FencedAppendRequest } from "../Records-BtxMy8xD.mjs";
|
|
2
2
|
import { Context, Effect, Layer, Option, Schema } from "effect";
|
|
3
3
|
declare namespace ThreadProjectionMaintenance_d_exports {
|
|
4
4
|
export { ThreadProjectionError, ThreadProjectionMaintenance, ThreadProjectionMaintenanceService, drainDue };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $t as
|
|
2
|
-
export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadCheckpoints, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstanding, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRecoveryCheckpoints, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreError, ThreadStoreFailure, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState };
|
|
1
|
+
import { $t as MAX_THREAD_EXPORT_RECORDS, An as readWorkerState, Dn as getRecord, En as ThreadWorkerStateRequest, Jt as AppendResult, On as getRunInput, Qt as LoadCheckpointRequest, Sn as ThreadStoreFailure, Tn as ThreadTailRequest, Xt as FenceRejected, Yt as CheckpointRejected, Zt as FencedAppendRequest, _n as ThreadRunInputRequest, an as ThreadExport, bn as ThreadStoreDiagnostic, cn as ThreadNotMaterialized, dn as ThreadOutstandingRequest, en as SaveCheckpointRequest, fn as ThreadPeerCountRequest, gn as ThreadRecoveryCheckpoints, hn as ThreadRecordRequest, in as ThreadCheckpoints, kn as readOutstanding, ln as ThreadObservation, mn as ThreadReadRequest, nn as SelectedThreadRead, on as ThreadExportRequest, pn as ThreadRead, qt as AppendConflict, rn as ThreadCheckpoint, sn as ThreadMaterialization, tn as SaveRecoveryCheckpointRequest, un as ThreadOutstanding, vn as ThreadSelection, wn as ThreadTail, xn as ThreadStoreError, yn as ThreadStore } from "../Records-BtxMy8xD.mjs";
|
|
2
|
+
export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadCheckpoints, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstanding, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRecoveryCheckpoints, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreDiagnostic, ThreadStoreError, ThreadStoreFailure, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState };
|
|
@@ -30,6 +30,7 @@ var ThreadStore_exports = /* @__PURE__ */ __exportAll({
|
|
|
30
30
|
ThreadRunInputRequest: () => ThreadRunInputRequest,
|
|
31
31
|
ThreadSelection: () => ThreadSelection,
|
|
32
32
|
ThreadStore: () => ThreadStore,
|
|
33
|
+
ThreadStoreDiagnostic: () => ThreadStoreDiagnostic,
|
|
33
34
|
ThreadStoreError: () => ThreadStoreError,
|
|
34
35
|
ThreadTail: () => ThreadTail,
|
|
35
36
|
ThreadTailRequest: () => ThreadTailRequest,
|
|
@@ -293,10 +294,23 @@ var LoadCheckpointRequest = class extends Schema.Class("@effect-agent/thread/Loa
|
|
|
293
294
|
threadId: ThreadId,
|
|
294
295
|
atOrBeforeSequence: Schema.optionalKey(CanonicalSequence)
|
|
295
296
|
}) {};
|
|
297
|
+
/**
|
|
298
|
+
* Content-free storage provenance constructed by adapters from source-authored labels.
|
|
299
|
+
* Raw foreign lookalikes are not trusted diagnostics. Never include rejected values, SQL,
|
|
300
|
+
* or schema messages.
|
|
301
|
+
*/
|
|
302
|
+
var ThreadStoreDiagnostic = class extends Schema.Class("@effect-agent/thread/ThreadStoreDiagnostic")({
|
|
303
|
+
causeTag: Schema.String.check(Schema.isMaxLength(128)),
|
|
304
|
+
operation: Schema.String.check(Schema.isMaxLength(256)),
|
|
305
|
+
decoder: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),
|
|
306
|
+
issueTag: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),
|
|
307
|
+
sequence: Schema.optionalKey(CanonicalSequence)
|
|
308
|
+
}) {};
|
|
296
309
|
var ThreadStoreError = class extends Schema.TaggedError()("ThreadStoreError", {
|
|
297
310
|
operation: Schema.String,
|
|
298
311
|
message: Schema.String,
|
|
299
|
-
cause: Schema.optionalKey(Schema.Defect())
|
|
312
|
+
cause: Schema.optionalKey(Schema.Defect()),
|
|
313
|
+
diagnostic: Schema.optionalKey(ThreadStoreDiagnostic)
|
|
300
314
|
}) {};
|
|
301
315
|
var ThreadNotMaterialized = class extends Schema.TaggedError()("ThreadNotMaterialized", { threadId: ThreadId }) {};
|
|
302
316
|
/**
|
|
@@ -331,6 +345,6 @@ var CheckpointRejected = class extends Schema.TaggedError()("CheckpointRejected"
|
|
|
331
345
|
}) {};
|
|
332
346
|
var ThreadStore = class extends Context.Service()("@effect-agent/thread/ThreadStore") {};
|
|
333
347
|
//#endregion
|
|
334
|
-
export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreError, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState, ThreadStore_exports as t };
|
|
348
|
+
export { AppendConflict, AppendResult, CheckpointRejected, FenceRejected, FencedAppendRequest, LoadCheckpointRequest, MAX_THREAD_EXPORT_RECORDS, SaveCheckpointRequest, SaveRecoveryCheckpointRequest, SelectedThreadRead, ThreadCheckpoint, ThreadExport, ThreadExportRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadObservation, ThreadOutstandingRequest, ThreadPeerCountRequest, ThreadRead, ThreadReadRequest, ThreadRecordRequest, ThreadRunInputRequest, ThreadSelection, ThreadStore, ThreadStoreDiagnostic, ThreadStoreError, ThreadTail, ThreadTailRequest, ThreadWorkerStateRequest, getRecord, getRunInput, readOutstanding, readWorkerState, ThreadStore_exports as t };
|
|
335
349
|
|
|
336
350
|
//# sourceMappingURL=ThreadStore.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadStore.mjs","names":[],"sources":["../../src/durable/ThreadStore.ts"],"sourcesContent":["import { Context, Effect, Option, Schema, Stream } from \"effect\";\n\nimport { RunId, SubmissionId, ThreadId } from \"../core/Identifiers.ts\";\nimport type { ToolCallPrepared, WorkerInputRequested } from \"./Records.ts\";\nimport {\n BatchId,\n CanonicalBatch,\n CanonicalRecordEnvelope,\n CanonicalSequence,\n Digest,\n ObservationOffset,\n PersistedJson,\n ProducerEpoch,\n RecordId,\n} from \"./Records.ts\";\nimport { runIdForSubmission, toolCallPreparedRecordId } from \"./RunJournal.ts\";\nimport { SubmissionLedger, SubmissionLookupById } from \"./SubmissionLedger.ts\";\n\nexport const MAX_THREAD_EXPORT_RECORDS = 131_072;\n\n/** Exact canonical identity; absence is not proof that an admission was never accepted. */\nexport const ThreadRecordRequest = Schema.Struct({ threadId: ThreadId, recordId: RecordId });\nexport type ThreadRecordRequest = typeof ThreadRecordRequest.Type;\n\n/** The original user input for a Run, excluding later joined inputs. */\nexport const ThreadRunInputRequest = Schema.Struct({ threadId: ThreadId, runId: RunId });\nexport type ThreadRunInputRequest = typeof ThreadRunInputRequest.Type;\n\nexport const ThreadOutstandingRequest = Schema.Struct({\n threadId: ThreadId,\n /** Exceeding this bound fails; a truncated inventory never grants authority. */\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(4_096)),\n});\n\nexport type ThreadOutstandingRequest = typeof ThreadOutstandingRequest.Type;\n\nexport interface ThreadOutstanding {\n readonly threadId: ThreadId;\n readonly throughSequence: CanonicalSequence;\n readonly complete: true;\n readonly operations: ReadonlyArray<{\n readonly submissionId: SubmissionId;\n readonly prepared: ToolCallPrepared;\n /** Prepared is not an unknown outcome or a grant to execute. */\n readonly state: \"prepared\" | \"unknown\";\n }>;\n /** Source reservations without proof that external effects are resolved. */\n readonly workerInputs: ReadonlyArray<WorkerInputRequested>;\n}\n\n/** Native worker reservation/accounting snapshot at a captured canonical tail. */\nexport const ThreadWorkerStateRequest = Schema.Struct({\n threadId: ThreadId,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n limit: Schema.Int.check(\n Schema.isGreaterThan(0),\n Schema.isLessThanOrEqualTo(MAX_THREAD_EXPORT_RECORDS),\n ),\n});\n\nexport type ThreadWorkerStateRequest = typeof ThreadWorkerStateRequest.Type;\n\n/** Saturating lifetime peer-message count: the result is at most the requested cap. */\nexport const ThreadPeerCountRequest = Schema.Struct({\n threadId: ThreadId,\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1000)),\n});\n\nexport type ThreadPeerCountRequest = typeof ThreadPeerCountRequest.Type;\n\nconst incomplete = (operation: string) =>\n ThreadStoreError.make({\n operation,\n message: \"Native canonical read is incomplete or corrupt\",\n });\n\n/** Collect a complete bounded selection, using canonical sequence as a sparse cursor. */\nconst selectedRecords = Effect.fnUntraced(function* (\n threadId: ThreadId,\n selection: ThreadSelection,\n limit: number,\n) {\n const store = yield* ThreadStore;\n const records: Array<CanonicalRecordEnvelope> = [];\n let afterSequence: CanonicalSequence | undefined;\n\n while (true) {\n const pageLimit = Math.min(1024, limit + 1 - records.length);\n\n const page = yield* Stream.runCollect(\n store.read({\n threadId,\n selection,\n page: { limit: pageLimit, ...(afterSequence === undefined ? {} : { afterSequence }) },\n }),\n );\n\n for (const entry of page) {\n if (\n entry.threadId !== threadId ||\n entry.sequence <= (afterSequence ?? 0) ||\n (\"expectedTailSequence\" in selection && entry.sequence > selection.expectedTailSequence)\n )\n return yield* incomplete(\"read selection identity\");\n afterSequence = entry.sequence;\n records.push(entry);\n }\n if (page.length > pageLimit || records.length > limit)\n return yield* incomplete(\"read selection limit\");\n if (page.length < pageLimit) return records;\n }\n});\n\n/** Host-owned read: authenticate the Thread and exact locator before calling. */\nexport const getRecord = Effect.fn(\"ThreadStore.getRecord\")(function* (\n request: ThreadRecordRequest,\n) {\n yield* Schema.decodeEffect(ThreadRecordRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRecord request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RecordId\", recordId: request.recordId },\n 1,\n );\n\n if (records.some((entry) => entry.record.recordId !== request.recordId))\n return yield* incomplete(\"getRecord identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\nexport const getRunInput = Effect.fn(\"ThreadStore.getRunInput\")(function* (\n request: ThreadRunInputRequest,\n) {\n yield* Schema.decodeEffect(ThreadRunInputRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRunInput request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RunInput\", runId: request.runId },\n 1,\n );\n\n if (\n records.some(\n ({ record: { payload } }) =>\n payload._tag !== \"UserInputRecorded\" ||\n payload.kind !== \"user\" ||\n payload.runId !== request.runId,\n )\n )\n return yield* incomplete(\"getRunInput identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\n/** A bounded snapshot of native lifetime and source-submission worker accounting. */\nexport const readWorkerState = Effect.fn(\"ThreadStore.readWorkerState\")(function* (\n request: ThreadWorkerStateRequest,\n) {\n yield* Schema.decodeEffect(ThreadWorkerStateRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readWorkerState request\")),\n );\n const store = yield* ThreadStore;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"WorkerState\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n ...(request.sourceSubmissionId === undefined\n ? {}\n : { sourceSubmissionId: request.sourceSubmissionId }),\n },\n request.limit,\n );\n\n return {\n threadId: request.threadId,\n tailSequence: tail.tailSequence,\n tailDigest: tail.tailDigest,\n records,\n };\n});\n\n/**\n * Work is proportional to outstanding records, independent of completed history. Unknown\n * effects survive abort and resolution intent; only canonical closure removes them. A\n * preparation from another Run still requires native recovery before it can be treated as\n * safe. This snapshot grants no execution authority and does not freeze other owners.\n */\nexport const readOutstanding = Effect.fn(\"ThreadStore.readOutstanding\")(function* (\n request: ThreadOutstandingRequest,\n) {\n yield* Schema.decodeEffect(ThreadOutstandingRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readOutstanding request\")),\n );\n const store = yield* ThreadStore;\n const ledger = yield* SubmissionLedger;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"Outstanding\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n },\n request.limit,\n );\n\n const operations: Array<ThreadOutstanding[\"operations\"][number]> = [];\n const workerInputs: Array<WorkerInputRequested> = [];\n\n for (const entry of records) {\n const payload = entry.record.payload;\n\n if (payload._tag === \"WorkerInputRequested\") {\n workerInputs.push(payload);\n continue;\n }\n if (payload._tag !== \"ToolCallPrepared\" && payload._tag !== \"ToolCallUnknown\")\n return yield* incomplete(\"readOutstanding record\");\n\n const preparedEntry =\n payload._tag === \"ToolCallPrepared\"\n ? entry\n : Option.getOrUndefined(\n yield* getRecord({\n threadId: request.threadId,\n recordId: toolCallPreparedRecordId(payload.runId, payload.turn, payload.toolCallId),\n }),\n );\n\n const inputEntry = Option.getOrUndefined(\n yield* getRunInput({ threadId: request.threadId, runId: payload.runId }),\n );\n\n if (\n preparedEntry === undefined ||\n inputEntry === undefined ||\n preparedEntry.sequence > tail.tailSequence ||\n inputEntry.sequence > tail.tailSequence\n )\n return yield* incomplete(\"readOutstanding proof beyond snapshot\");\n const prepared = preparedEntry.record.payload;\n const input = inputEntry.record.payload;\n\n if (\n prepared?._tag !== \"ToolCallPrepared\" ||\n prepared.runId !== payload.runId ||\n prepared.turn !== payload.turn ||\n prepared.toolCallId !== payload.toolCallId ||\n prepared.toolName !== payload.toolName ||\n input?._tag !== \"UserInputRecorded\" ||\n input.submissionId === undefined ||\n runIdForSubmission(input.submissionId) !== prepared.runId\n )\n return yield* incomplete(\"readOutstanding canonical ownership\");\n\n const submission = yield* ledger.lookup(\n SubmissionLookupById.make({ submissionId: input.submissionId }),\n );\n\n if (Option.isNone(submission) || submission.value.threadId !== request.threadId)\n return yield* incomplete(\"readOutstanding native admission\");\n operations.push({\n submissionId: input.submissionId,\n prepared,\n state: payload._tag === \"ToolCallUnknown\" ? \"unknown\" : \"prepared\",\n });\n }\n\n return {\n threadId: request.threadId,\n throughSequence: tail.tailSequence,\n complete: true as const,\n operations,\n workerInputs,\n };\n});\n\nexport class ThreadMaterialization extends Schema.Class<ThreadMaterialization>(\n \"@effect-agent/thread/ThreadMaterialization\",\n)({\n threadId: ThreadId,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class FencedAppendRequest extends Schema.Class<FencedAppendRequest>(\n \"@effect-agent/thread/FencedAppendRequest\",\n)({\n threadId: ThreadId,\n batch: CanonicalBatch,\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class AppendResult extends Schema.Class<AppendResult>(\"@effect-agent/thread/AppendResult\")({\n firstSequence: CanonicalSequence,\n lastSequence: CanonicalSequence,\n tailDigest: Digest,\n replayed: Schema.Boolean,\n}) {}\n\nexport class ThreadRead extends Schema.Class<ThreadRead>(\"@effect-agent/thread/ThreadRead\")({\n threadId: ThreadId,\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: Schema.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1_024)),\n}) {}\n\n/** Closed native selections; mutable metadata is read at this exact canonical tail. */\nexport const ThreadSelection = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"RecordId\"), recordId: RecordId }),\n Schema.Struct({ _tag: Schema.Literal(\"RunInput\"), runId: RunId }),\n Schema.Struct({\n _tag: Schema.Literal(\"Outstanding\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"WorkerState\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n }),\n]);\n\nexport type ThreadSelection = typeof ThreadSelection.Type;\n\n/** Nested page makes an old ThreadRead decoder reject, never strip a selection into history. */\nexport const SelectedThreadRead = Schema.Struct({\n threadId: ThreadId,\n selection: ThreadSelection,\n page: Schema.Struct({\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: ThreadRead.fields.limit,\n }),\n});\n\nexport type SelectedThreadRead = typeof SelectedThreadRead.Type;\nexport const ThreadReadRequest = Schema.Union([SelectedThreadRead, ThreadRead]);\nexport type ThreadReadRequest = typeof ThreadReadRequest.Type;\n\nexport class ThreadObservation extends Schema.Class<ThreadObservation>(\n \"@effect-agent/thread/ThreadObservation\",\n)({\n threadId: ThreadId,\n afterOffset: Schema.optionalKey(ObservationOffset),\n}) {}\n\nexport class ThreadExportRequest extends Schema.Class<ThreadExportRequest>(\n \"@effect-agent/thread/ThreadExportRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\nexport class ThreadTailRequest extends Schema.Class<ThreadTailRequest>(\n \"@effect-agent/thread/ThreadTailRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\n/**\n * The committed tail of one Thread Log. A resuming producer composes its next\n * FencedAppendRequest from this value instead of exporting the whole log.\n */\nexport class ThreadTail extends Schema.Class<ThreadTail>(\"@effect-agent/thread/ThreadTail\")({\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\n/** Maximum canonical records represented by one Thread export. */\n\nexport class ThreadExport extends Schema.Class<ThreadExport>(\"@effect-agent/thread/ThreadExport\")({\n format: Schema.Literal(\"effect-agent/thread@1\"),\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n records: Schema.Array(CanonicalRecordEnvelope).check(\n Schema.isMaxLength(MAX_THREAD_EXPORT_RECORDS),\n ),\n}) {}\n\n/**\n * A disposable projection snapshot. Adapters bind its sequence and digest to the canonical\n * log; consumers decode `state` and decide projection compatibility before suffix replay.\n * Legacy metadata is optional for application projections and preserved when supplied.\n * Runtime-owned recovery checkpoints populate and compare it before using cached state.\n */\nexport class ThreadCheckpoint extends Schema.Class<ThreadCheckpoint>(\n \"@effect-agent/thread/ThreadCheckpoint\",\n)({\n schemaVersion: Schema.Literal(1),\n threadId: ThreadId,\n throughSequence: CanonicalSequence,\n tailDigest: Digest,\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n engineVersion: Schema.optionalKey(Schema.NonEmptyString),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n agentDefinitionDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n modelDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n toolDigest: Schema.optionalKey(Digest),\n state: PersistedJson,\n createdAt: Schema.DateTimeUtcFromString,\n}) {}\n\nexport class SaveCheckpointRequest extends Schema.Class<SaveCheckpointRequest>(\n \"@effect-agent/thread/SaveCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n}) {}\n\n/** Replace the disposable recovery view only under the current canonical producer fence. */\nexport class SaveRecoveryCheckpointRequest extends Schema.Class<SaveRecoveryCheckpointRequest>(\n \"@effect-agent/thread/SaveRecoveryCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class LoadCheckpointRequest extends Schema.Class<LoadCheckpointRequest>(\n \"@effect-agent/thread/LoadCheckpointRequest\",\n)({\n threadId: ThreadId,\n atOrBeforeSequence: Schema.optionalKey(CanonicalSequence),\n}) {}\n\nexport class ThreadStoreError extends Schema.TaggedError<ThreadStoreError>()(\"ThreadStoreError\", {\n operation: Schema.String,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n}) {}\n\nexport class ThreadNotMaterialized extends Schema.TaggedError<ThreadNotMaterialized>()(\n \"ThreadNotMaterialized\",\n { threadId: ThreadId },\n) {}\n\n/**\n * A canonical append that cannot commit: `batch-digest` replays a batch ID with different\n * content, `record-identity` reuses a canonical record ID, and `tail` declares a stale expected\n * tail. Tail conflicts carry the actual committed tail as a diagnostic resume hint.\n */\nexport class AppendConflict extends Schema.TaggedError<AppendConflict>()(\"AppendConflict\", {\n threadId: ThreadId,\n batchId: BatchId,\n reason: Schema.Literals([\"batch-digest\", \"record-identity\", \"tail\"]),\n actualTailSequence: Schema.optionalKey(CanonicalSequence),\n actualTailDigest: Schema.optionalKey(Digest),\n}) {}\n\nexport class FenceRejected extends Schema.TaggedError<FenceRejected>()(\"FenceRejected\", {\n threadId: ThreadId,\n actualEpoch: ProducerEpoch,\n attemptedEpoch: ProducerEpoch,\n}) {}\n\nexport class CheckpointRejected extends Schema.TaggedError<CheckpointRejected>()(\n \"CheckpointRejected\",\n {\n threadId: ThreadId,\n reason: Schema.Literals([\"ahead-of-tail\", \"digest-mismatch\", \"unsupported-version\", \"corrupt\"]),\n },\n) {}\n\nexport type ThreadStoreFailure =\n | ThreadStoreError\n | ThreadNotMaterialized\n | AppendConflict\n | FenceRejected;\n\n/**\n * Optional, disposable projection storage. Neither history execution nor durable recovery\n * requires it. Adapters that offer it must bind every checkpoint to a canonical batch tail.\n * Application consumers own projection compatibility; this port does not interpret metadata.\n */\nexport interface ThreadCheckpoints {\n readonly save: (\n request: SaveCheckpointRequest,\n ) => Effect.Effect<void, ThreadStoreError | ThreadNotMaterialized | CheckpointRejected>;\n readonly load: (\n request: LoadCheckpointRequest,\n ) => Effect.Effect<\n Option.Option<ThreadCheckpoint>,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected\n >;\n}\n\n/**\n * Optional latest-only recovery cache, independent of application projection checkpoints.\n * Saves atomically validate the producer epoch and canonical batch tail. An older snapshot\n * cannot replace a newer one; equal-tail replacement repairs disposable state. Invalid cached\n * data fails with CheckpointRejected, while infrastructure failures remain ThreadStoreError.\n * Loading at an earlier tail or outside the adapter's cache locality may return none so callers\n * can replay canonical records. Canonical records and the ledger remain authority.\n */\nexport interface ThreadRecoveryCheckpoints {\n readonly save: (\n request: SaveRecoveryCheckpointRequest,\n ) => Effect.Effect<\n void,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected | FenceRejected\n >;\n readonly load: ThreadCheckpoints[\"load\"];\n}\n\nexport class ThreadStore extends Context.Service<\n ThreadStore,\n {\n readonly materialize: (\n request: ThreadMaterialization,\n ) => Effect.Effect<void, ThreadStoreError | FenceRejected>;\n readonly append: (\n request: FencedAppendRequest,\n ) => Effect.Effect<\n AppendResult,\n ThreadStoreError | ThreadNotMaterialized | AppendConflict | FenceRejected\n >;\n readonly read: (\n request: ThreadReadRequest,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly observe: (\n request: ThreadObservation,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly export: (\n request: ThreadExportRequest,\n ) => Effect.Effect<ThreadExport, ThreadStoreError | ThreadNotMaterialized>;\n readonly inspectTail: (\n request: ThreadTailRequest,\n ) => Effect.Effect<ThreadTail, ThreadStoreError | ThreadNotMaterialized>;\n /** Absent when this adapter does not support disposable checkpoints. */\n readonly checkpoints?: ThreadCheckpoints | undefined;\n readonly recoveryCheckpoints?: ThreadRecoveryCheckpoints | undefined;\n /** Indexed scalar count; unsupported adapters fail closed at the caller. */\n readonly countPeerMessages?:\n | ((\n request: ThreadPeerCountRequest,\n ) => Effect.Effect<number, ThreadStoreError | ThreadNotMaterialized>)\n | undefined;\n }\n>()(\"@effect-agent/thread/ThreadStore\") {}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThreadStore.mjs","names":[],"sources":["../../src/durable/ThreadStore.ts"],"sourcesContent":["import { Context, Effect, Option, Schema, Stream } from \"effect\";\n\nimport { RunId, SubmissionId, ThreadId } from \"../core/Identifiers.ts\";\nimport type { ToolCallPrepared, WorkerInputRequested } from \"./Records.ts\";\nimport {\n BatchId,\n CanonicalBatch,\n CanonicalRecordEnvelope,\n CanonicalSequence,\n Digest,\n ObservationOffset,\n PersistedJson,\n ProducerEpoch,\n RecordId,\n} from \"./Records.ts\";\nimport { runIdForSubmission, toolCallPreparedRecordId } from \"./RunJournal.ts\";\nimport { SubmissionLedger, SubmissionLookupById } from \"./SubmissionLedger.ts\";\n\nexport const MAX_THREAD_EXPORT_RECORDS = 131_072;\n\n/** Exact canonical identity; absence is not proof that an admission was never accepted. */\nexport const ThreadRecordRequest = Schema.Struct({ threadId: ThreadId, recordId: RecordId });\nexport type ThreadRecordRequest = typeof ThreadRecordRequest.Type;\n\n/** The original user input for a Run, excluding later joined inputs. */\nexport const ThreadRunInputRequest = Schema.Struct({ threadId: ThreadId, runId: RunId });\nexport type ThreadRunInputRequest = typeof ThreadRunInputRequest.Type;\n\nexport const ThreadOutstandingRequest = Schema.Struct({\n threadId: ThreadId,\n /** Exceeding this bound fails; a truncated inventory never grants authority. */\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(4_096)),\n});\n\nexport type ThreadOutstandingRequest = typeof ThreadOutstandingRequest.Type;\n\nexport interface ThreadOutstanding {\n readonly threadId: ThreadId;\n readonly throughSequence: CanonicalSequence;\n readonly complete: true;\n readonly operations: ReadonlyArray<{\n readonly submissionId: SubmissionId;\n readonly prepared: ToolCallPrepared;\n /** Prepared is not an unknown outcome or a grant to execute. */\n readonly state: \"prepared\" | \"unknown\";\n }>;\n /** Source reservations without proof that external effects are resolved. */\n readonly workerInputs: ReadonlyArray<WorkerInputRequested>;\n}\n\n/** Native worker reservation/accounting snapshot at a captured canonical tail. */\nexport const ThreadWorkerStateRequest = Schema.Struct({\n threadId: ThreadId,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n limit: Schema.Int.check(\n Schema.isGreaterThan(0),\n Schema.isLessThanOrEqualTo(MAX_THREAD_EXPORT_RECORDS),\n ),\n});\n\nexport type ThreadWorkerStateRequest = typeof ThreadWorkerStateRequest.Type;\n\n/** Saturating lifetime peer-message count: the result is at most the requested cap. */\nexport const ThreadPeerCountRequest = Schema.Struct({\n threadId: ThreadId,\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1000)),\n});\n\nexport type ThreadPeerCountRequest = typeof ThreadPeerCountRequest.Type;\n\nconst incomplete = (operation: string) =>\n ThreadStoreError.make({\n operation,\n message: \"Native canonical read is incomplete or corrupt\",\n });\n\n/** Collect a complete bounded selection, using canonical sequence as a sparse cursor. */\nconst selectedRecords = Effect.fnUntraced(function* (\n threadId: ThreadId,\n selection: ThreadSelection,\n limit: number,\n) {\n const store = yield* ThreadStore;\n const records: Array<CanonicalRecordEnvelope> = [];\n let afterSequence: CanonicalSequence | undefined;\n\n while (true) {\n const pageLimit = Math.min(1024, limit + 1 - records.length);\n\n const page = yield* Stream.runCollect(\n store.read({\n threadId,\n selection,\n page: { limit: pageLimit, ...(afterSequence === undefined ? {} : { afterSequence }) },\n }),\n );\n\n for (const entry of page) {\n if (\n entry.threadId !== threadId ||\n entry.sequence <= (afterSequence ?? 0) ||\n (\"expectedTailSequence\" in selection && entry.sequence > selection.expectedTailSequence)\n )\n return yield* incomplete(\"read selection identity\");\n afterSequence = entry.sequence;\n records.push(entry);\n }\n if (page.length > pageLimit || records.length > limit)\n return yield* incomplete(\"read selection limit\");\n if (page.length < pageLimit) return records;\n }\n});\n\n/** Host-owned read: authenticate the Thread and exact locator before calling. */\nexport const getRecord = Effect.fn(\"ThreadStore.getRecord\")(function* (\n request: ThreadRecordRequest,\n) {\n yield* Schema.decodeEffect(ThreadRecordRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRecord request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RecordId\", recordId: request.recordId },\n 1,\n );\n\n if (records.some((entry) => entry.record.recordId !== request.recordId))\n return yield* incomplete(\"getRecord identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\nexport const getRunInput = Effect.fn(\"ThreadStore.getRunInput\")(function* (\n request: ThreadRunInputRequest,\n) {\n yield* Schema.decodeEffect(ThreadRunInputRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"getRunInput request\")),\n );\n\n const records = yield* selectedRecords(\n request.threadId,\n { _tag: \"RunInput\", runId: request.runId },\n 1,\n );\n\n if (\n records.some(\n ({ record: { payload } }) =>\n payload._tag !== \"UserInputRecorded\" ||\n payload.kind !== \"user\" ||\n payload.runId !== request.runId,\n )\n )\n return yield* incomplete(\"getRunInput identity\");\n\n return Option.fromUndefinedOr(records[0]);\n});\n\n/** A bounded snapshot of native lifetime and source-submission worker accounting. */\nexport const readWorkerState = Effect.fn(\"ThreadStore.readWorkerState\")(function* (\n request: ThreadWorkerStateRequest,\n) {\n yield* Schema.decodeEffect(ThreadWorkerStateRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readWorkerState request\")),\n );\n const store = yield* ThreadStore;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"WorkerState\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n ...(request.sourceSubmissionId === undefined\n ? {}\n : { sourceSubmissionId: request.sourceSubmissionId }),\n },\n request.limit,\n );\n\n return {\n threadId: request.threadId,\n tailSequence: tail.tailSequence,\n tailDigest: tail.tailDigest,\n records,\n };\n});\n\n/**\n * Work is proportional to outstanding records, independent of completed history. Unknown\n * effects survive abort and resolution intent; only canonical closure removes them. A\n * preparation from another Run still requires native recovery before it can be treated as\n * safe. This snapshot grants no execution authority and does not freeze other owners.\n */\nexport const readOutstanding = Effect.fn(\"ThreadStore.readOutstanding\")(function* (\n request: ThreadOutstandingRequest,\n) {\n yield* Schema.decodeEffect(ThreadOutstandingRequest)(request).pipe(\n Effect.mapError(() => incomplete(\"readOutstanding request\")),\n );\n const store = yield* ThreadStore;\n const ledger = yield* SubmissionLedger;\n const tail = yield* store.inspectTail(ThreadTailRequest.make({ threadId: request.threadId }));\n\n const records = yield* selectedRecords(\n request.threadId,\n {\n _tag: \"Outstanding\",\n expectedTailSequence: tail.tailSequence,\n expectedTailDigest: tail.tailDigest,\n },\n request.limit,\n );\n\n const operations: Array<ThreadOutstanding[\"operations\"][number]> = [];\n const workerInputs: Array<WorkerInputRequested> = [];\n\n for (const entry of records) {\n const payload = entry.record.payload;\n\n if (payload._tag === \"WorkerInputRequested\") {\n workerInputs.push(payload);\n continue;\n }\n if (payload._tag !== \"ToolCallPrepared\" && payload._tag !== \"ToolCallUnknown\")\n return yield* incomplete(\"readOutstanding record\");\n\n const preparedEntry =\n payload._tag === \"ToolCallPrepared\"\n ? entry\n : Option.getOrUndefined(\n yield* getRecord({\n threadId: request.threadId,\n recordId: toolCallPreparedRecordId(payload.runId, payload.turn, payload.toolCallId),\n }),\n );\n\n const inputEntry = Option.getOrUndefined(\n yield* getRunInput({ threadId: request.threadId, runId: payload.runId }),\n );\n\n if (\n preparedEntry === undefined ||\n inputEntry === undefined ||\n preparedEntry.sequence > tail.tailSequence ||\n inputEntry.sequence > tail.tailSequence\n )\n return yield* incomplete(\"readOutstanding proof beyond snapshot\");\n const prepared = preparedEntry.record.payload;\n const input = inputEntry.record.payload;\n\n if (\n prepared?._tag !== \"ToolCallPrepared\" ||\n prepared.runId !== payload.runId ||\n prepared.turn !== payload.turn ||\n prepared.toolCallId !== payload.toolCallId ||\n prepared.toolName !== payload.toolName ||\n input?._tag !== \"UserInputRecorded\" ||\n input.submissionId === undefined ||\n runIdForSubmission(input.submissionId) !== prepared.runId\n )\n return yield* incomplete(\"readOutstanding canonical ownership\");\n\n const submission = yield* ledger.lookup(\n SubmissionLookupById.make({ submissionId: input.submissionId }),\n );\n\n if (Option.isNone(submission) || submission.value.threadId !== request.threadId)\n return yield* incomplete(\"readOutstanding native admission\");\n operations.push({\n submissionId: input.submissionId,\n prepared,\n state: payload._tag === \"ToolCallUnknown\" ? \"unknown\" : \"prepared\",\n });\n }\n\n return {\n threadId: request.threadId,\n throughSequence: tail.tailSequence,\n complete: true as const,\n operations,\n workerInputs,\n };\n});\n\nexport class ThreadMaterialization extends Schema.Class<ThreadMaterialization>(\n \"@effect-agent/thread/ThreadMaterialization\",\n)({\n threadId: ThreadId,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class FencedAppendRequest extends Schema.Class<FencedAppendRequest>(\n \"@effect-agent/thread/FencedAppendRequest\",\n)({\n threadId: ThreadId,\n batch: CanonicalBatch,\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class AppendResult extends Schema.Class<AppendResult>(\"@effect-agent/thread/AppendResult\")({\n firstSequence: CanonicalSequence,\n lastSequence: CanonicalSequence,\n tailDigest: Digest,\n replayed: Schema.Boolean,\n}) {}\n\nexport class ThreadRead extends Schema.Class<ThreadRead>(\"@effect-agent/thread/ThreadRead\")({\n threadId: ThreadId,\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: Schema.Natural.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1_024)),\n}) {}\n\n/** Closed native selections; mutable metadata is read at this exact canonical tail. */\nexport const ThreadSelection = Schema.Union([\n Schema.Struct({ _tag: Schema.Literal(\"RecordId\"), recordId: RecordId }),\n Schema.Struct({ _tag: Schema.Literal(\"RunInput\"), runId: RunId }),\n Schema.Struct({\n _tag: Schema.Literal(\"Outstanding\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n }),\n Schema.Struct({\n _tag: Schema.Literal(\"WorkerState\"),\n expectedTailSequence: CanonicalSequence,\n expectedTailDigest: Digest,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n }),\n]);\n\nexport type ThreadSelection = typeof ThreadSelection.Type;\n\n/** Nested page makes an old ThreadRead decoder reject, never strip a selection into history. */\nexport const SelectedThreadRead = Schema.Struct({\n threadId: ThreadId,\n selection: ThreadSelection,\n page: Schema.Struct({\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: ThreadRead.fields.limit,\n }),\n});\n\nexport type SelectedThreadRead = typeof SelectedThreadRead.Type;\nexport const ThreadReadRequest = Schema.Union([SelectedThreadRead, ThreadRead]);\nexport type ThreadReadRequest = typeof ThreadReadRequest.Type;\n\nexport class ThreadObservation extends Schema.Class<ThreadObservation>(\n \"@effect-agent/thread/ThreadObservation\",\n)({\n threadId: ThreadId,\n afterOffset: Schema.optionalKey(ObservationOffset),\n}) {}\n\nexport class ThreadExportRequest extends Schema.Class<ThreadExportRequest>(\n \"@effect-agent/thread/ThreadExportRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\nexport class ThreadTailRequest extends Schema.Class<ThreadTailRequest>(\n \"@effect-agent/thread/ThreadTailRequest\",\n)({\n threadId: ThreadId,\n}) {}\n\n/**\n * The committed tail of one Thread Log. A resuming producer composes its next\n * FencedAppendRequest from this value instead of exporting the whole log.\n */\nexport class ThreadTail extends Schema.Class<ThreadTail>(\"@effect-agent/thread/ThreadTail\")({\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n producerEpoch: ProducerEpoch,\n}) {}\n\n/** Maximum canonical records represented by one Thread export. */\n\nexport class ThreadExport extends Schema.Class<ThreadExport>(\"@effect-agent/thread/ThreadExport\")({\n format: Schema.Literal(\"effect-agent/thread@1\"),\n threadId: ThreadId,\n tailSequence: CanonicalSequence,\n tailDigest: Digest,\n records: Schema.Array(CanonicalRecordEnvelope).check(\n Schema.isMaxLength(MAX_THREAD_EXPORT_RECORDS),\n ),\n}) {}\n\n/**\n * A disposable projection snapshot. Adapters bind its sequence and digest to the canonical\n * log; consumers decode `state` and decide projection compatibility before suffix replay.\n * Legacy metadata is optional for application projections and preserved when supplied.\n * Runtime-owned recovery checkpoints populate and compare it before using cached state.\n */\nexport class ThreadCheckpoint extends Schema.Class<ThreadCheckpoint>(\n \"@effect-agent/thread/ThreadCheckpoint\",\n)({\n schemaVersion: Schema.Literal(1),\n threadId: ThreadId,\n throughSequence: CanonicalSequence,\n tailDigest: Digest,\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n engineVersion: Schema.optionalKey(Schema.NonEmptyString),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n agentDefinitionDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n modelDigest: Schema.optionalKey(Digest),\n /** @deprecated For application projections; retained for existing data and runtime recovery. */\n toolDigest: Schema.optionalKey(Digest),\n state: PersistedJson,\n createdAt: Schema.DateTimeUtcFromString,\n}) {}\n\nexport class SaveCheckpointRequest extends Schema.Class<SaveCheckpointRequest>(\n \"@effect-agent/thread/SaveCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n}) {}\n\n/** Replace the disposable recovery view only under the current canonical producer fence. */\nexport class SaveRecoveryCheckpointRequest extends Schema.Class<SaveRecoveryCheckpointRequest>(\n \"@effect-agent/thread/SaveRecoveryCheckpointRequest\",\n)({\n checkpoint: ThreadCheckpoint,\n producerEpoch: ProducerEpoch,\n}) {}\n\nexport class LoadCheckpointRequest extends Schema.Class<LoadCheckpointRequest>(\n \"@effect-agent/thread/LoadCheckpointRequest\",\n)({\n threadId: ThreadId,\n atOrBeforeSequence: Schema.optionalKey(CanonicalSequence),\n}) {}\n\n/**\n * Content-free storage provenance constructed by adapters from source-authored labels.\n * Raw foreign lookalikes are not trusted diagnostics. Never include rejected values, SQL,\n * or schema messages.\n */\nexport class ThreadStoreDiagnostic extends Schema.Class<ThreadStoreDiagnostic>(\n \"@effect-agent/thread/ThreadStoreDiagnostic\",\n)({\n causeTag: Schema.String.check(Schema.isMaxLength(128)),\n operation: Schema.String.check(Schema.isMaxLength(256)),\n decoder: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n issueTag: Schema.optionalKey(Schema.String.check(Schema.isMaxLength(128))),\n sequence: Schema.optionalKey(CanonicalSequence),\n}) {}\n\nexport class ThreadStoreError extends Schema.TaggedError<ThreadStoreError>()(\"ThreadStoreError\", {\n operation: Schema.String,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n diagnostic: Schema.optionalKey(ThreadStoreDiagnostic),\n}) {}\n\nexport class ThreadNotMaterialized extends Schema.TaggedError<ThreadNotMaterialized>()(\n \"ThreadNotMaterialized\",\n { threadId: ThreadId },\n) {}\n\n/**\n * A canonical append that cannot commit: `batch-digest` replays a batch ID with different\n * content, `record-identity` reuses a canonical record ID, and `tail` declares a stale expected\n * tail. Tail conflicts carry the actual committed tail as a diagnostic resume hint.\n */\nexport class AppendConflict extends Schema.TaggedError<AppendConflict>()(\"AppendConflict\", {\n threadId: ThreadId,\n batchId: BatchId,\n reason: Schema.Literals([\"batch-digest\", \"record-identity\", \"tail\"]),\n actualTailSequence: Schema.optionalKey(CanonicalSequence),\n actualTailDigest: Schema.optionalKey(Digest),\n}) {}\n\nexport class FenceRejected extends Schema.TaggedError<FenceRejected>()(\"FenceRejected\", {\n threadId: ThreadId,\n actualEpoch: ProducerEpoch,\n attemptedEpoch: ProducerEpoch,\n}) {}\n\nexport class CheckpointRejected extends Schema.TaggedError<CheckpointRejected>()(\n \"CheckpointRejected\",\n {\n threadId: ThreadId,\n reason: Schema.Literals([\"ahead-of-tail\", \"digest-mismatch\", \"unsupported-version\", \"corrupt\"]),\n },\n) {}\n\nexport type ThreadStoreFailure =\n | ThreadStoreError\n | ThreadNotMaterialized\n | AppendConflict\n | FenceRejected;\n\n/**\n * Optional, disposable projection storage. Neither history execution nor durable recovery\n * requires it. Adapters that offer it must bind every checkpoint to a canonical batch tail.\n * Application consumers own projection compatibility; this port does not interpret metadata.\n */\nexport interface ThreadCheckpoints {\n readonly save: (\n request: SaveCheckpointRequest,\n ) => Effect.Effect<void, ThreadStoreError | ThreadNotMaterialized | CheckpointRejected>;\n readonly load: (\n request: LoadCheckpointRequest,\n ) => Effect.Effect<\n Option.Option<ThreadCheckpoint>,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected\n >;\n}\n\n/**\n * Optional latest-only recovery cache, independent of application projection checkpoints.\n * Saves atomically validate the producer epoch and canonical batch tail. An older snapshot\n * cannot replace a newer one; equal-tail replacement repairs disposable state. Invalid cached\n * data fails with CheckpointRejected, while infrastructure failures remain ThreadStoreError.\n * Loading at an earlier tail or outside the adapter's cache locality may return none so callers\n * can replay canonical records. Canonical records and the ledger remain authority.\n */\nexport interface ThreadRecoveryCheckpoints {\n readonly save: (\n request: SaveRecoveryCheckpointRequest,\n ) => Effect.Effect<\n void,\n ThreadStoreError | ThreadNotMaterialized | CheckpointRejected | FenceRejected\n >;\n readonly load: ThreadCheckpoints[\"load\"];\n}\n\nexport class ThreadStore extends Context.Service<\n ThreadStore,\n {\n readonly materialize: (\n request: ThreadMaterialization,\n ) => Effect.Effect<void, ThreadStoreError | FenceRejected>;\n readonly append: (\n request: FencedAppendRequest,\n ) => Effect.Effect<\n AppendResult,\n ThreadStoreError | ThreadNotMaterialized | AppendConflict | FenceRejected\n >;\n readonly read: (\n request: ThreadReadRequest,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly observe: (\n request: ThreadObservation,\n ) => Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly export: (\n request: ThreadExportRequest,\n ) => Effect.Effect<ThreadExport, ThreadStoreError | ThreadNotMaterialized>;\n readonly inspectTail: (\n request: ThreadTailRequest,\n ) => Effect.Effect<ThreadTail, ThreadStoreError | ThreadNotMaterialized>;\n /** Absent when this adapter does not support disposable checkpoints. */\n readonly checkpoints?: ThreadCheckpoints | undefined;\n readonly recoveryCheckpoints?: ThreadRecoveryCheckpoints | undefined;\n /** Indexed scalar count; unsupported adapters fail closed at the caller. */\n readonly countPeerMessages?:\n | ((\n request: ThreadPeerCountRequest,\n ) => Effect.Effect<number, ThreadStoreError | ThreadNotMaterialized>)\n | undefined;\n }\n>()(\"@effect-agent/thread/ThreadStore\") {}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Sn as ThreadStoreFailure, Yt as CheckpointRejected, yn as ThreadStore } from "../Records-BtxMy8xD.mjs";
|
|
2
2
|
import { Effect, Schema } from "effect";
|
|
3
3
|
//#region src/durable/ThreadStoreConformance.d.ts
|
|
4
4
|
declare const ThreadStoreConformanceViolation_base: Schema.Class<ThreadStoreConformanceViolation, Schema.TaggedStruct<"ThreadStoreConformanceViolation", {
|
|
@@ -4,7 +4,7 @@ import { r as Principal } from "../Receipt-BAHyigAF.mjs";
|
|
|
4
4
|
import { t as AgentPolicy } from "../AgentPolicy-BqDoSXO6.mjs";
|
|
5
5
|
import { r as AnyDefinition, t as Agent_d_exports } from "../Agent-DriBcXBN.mjs";
|
|
6
6
|
import { a as WorkerError, c as WorkerRef, u as WorkerSource } from "../Worker-Du9dhVnp.mjs";
|
|
7
|
-
import {
|
|
7
|
+
import { Eo as SubmissionSnapshot, O as PersistedJson, _ as Digest, dt as WorkerOrigin, h as DefinitionDigests } from "../Records-BtxMy8xD.mjs";
|
|
8
8
|
import { Context, Effect, Option, Schema } from "effect";
|
|
9
9
|
declare namespace WorkerHost_d_exports {
|
|
10
10
|
export { WorkerBudgetAuthorizer, WorkerConcurrencyLimit, WorkerConcurrencyResolver, WorkerHostAuthorizationRequest, WorkerHostAuthorizer, WorkerHostConfig, WorkerHostLimits, WorkerPolicyResolver, WorkerPolicySource, WorkerPolicyTarget };
|
package/dist/index.d.mts
CHANGED
|
@@ -56,18 +56,18 @@ import { t as WebCapture_d_exports } from "./capabilities/WebCapture.mjs";
|
|
|
56
56
|
import { t as WebSearch_d_exports } from "./capabilities/WebSearch.mjs";
|
|
57
57
|
import { t as IdGenerator_d_exports } from "./core/IdGenerator.mjs";
|
|
58
58
|
import { t as Memory_d_exports } from "./core/Memory.mjs";
|
|
59
|
-
import {
|
|
59
|
+
import { Cn as ThreadStore_d_exports, N as Records_d_exports, Pn as SubmissionStatus_d_exports, So as SubmissionLedger_d_exports, Zi as Recovery_d_exports, ci as AgentRegistration_d_exports, vt as DurableAgentRuntime_d_exports, xi as Digest_d_exports, zn as RunJournal_d_exports, zr as Admin_d_exports } from "./Records-BtxMy8xD.mjs";
|
|
60
60
|
import { t as DurableFailpoint_d_exports } from "./DurableFailpoint-mx3-nsxU.mjs";
|
|
61
61
|
import { a as OperationAuthorizer_d_exports } from "./OperationAuthorizer-TzcQtpX5.mjs";
|
|
62
62
|
import { l as ToolReconciler_d_exports } from "./ToolReconciler-BmVRAHKs.mjs";
|
|
63
63
|
import { n as WakeScheduler_d_exports } from "./WakeScheduler-EjUF-GhC.mjs";
|
|
64
64
|
import { t as ActivityStore_d_exports } from "./durable/ActivityStore.mjs";
|
|
65
65
|
import { t as CommittedActivity_d_exports } from "./durable/CommittedActivity.mjs";
|
|
66
|
-
import { R as Schedule_d_exports } from "./Schedule-
|
|
67
|
-
import { k as Subscription_d_exports } from "./Subscription-
|
|
68
|
-
import { n as EventSource_d_exports } from "./EventSource-
|
|
69
|
-
import { n as PreparedInputAdmission_d_exports } from "./PreparedInputAdmission-
|
|
70
|
-
import { r as SubscriptionInput_d_exports } from "./SubscriptionInput-
|
|
66
|
+
import { R as Schedule_d_exports } from "./Schedule-DGPyXBzK.mjs";
|
|
67
|
+
import { k as Subscription_d_exports } from "./Subscription-B9VszlF9.mjs";
|
|
68
|
+
import { n as EventSource_d_exports } from "./EventSource-ARs56eBq.mjs";
|
|
69
|
+
import { n as PreparedInputAdmission_d_exports } from "./PreparedInputAdmission-_WYg-D0f.mjs";
|
|
70
|
+
import { r as SubscriptionInput_d_exports } from "./SubscriptionInput-BJWZqCWP.mjs";
|
|
71
71
|
import { t as Subscriptions_d_exports } from "./durable/Subscriptions.mjs";
|
|
72
72
|
import { t as MessageDelivery_d_exports } from "./durable/MessageDelivery.mjs";
|
|
73
73
|
import { t as PersistentHistory_d_exports } from "./durable/PersistentHistory.mjs";
|
package/dist/index.mjs
CHANGED
|
@@ -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 { n as DurableAgentRuntime_exports } from "./DurableAgentRuntime-
|
|
72
|
+
import { n as DurableAgentRuntime_exports } from "./DurableAgentRuntime-BIrgxwRl.mjs";
|
|
73
73
|
import { n as RunJournal_exports } from "./RunJournal-BXrq0VIK.mjs";
|
|
74
74
|
import { t as ThreadStore_exports } from "./durable/ThreadStore.mjs";
|
|
75
75
|
import { t as CommittedActivity_exports } from "./durable/CommittedActivity.mjs";
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"effect-agent","version":"0.1.0-beta.111","devDependencies":{"@effect/platform-node":"4.0.0-rc.115","@effect/vitest":"4.0.0-rc.115","effect":"4.0.0-rc.115","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.115"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./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"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-thread-native-reads":{"types":"./dist/durable/SqlThreadNativeReads.d.mts","default":"./dist/durable/SqlThreadNativeReads.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
|
|
1
|
+
{"name":"effect-agent","version":"0.1.0-beta.113","devDependencies":{"@effect/platform-node":"4.0.0-rc.116","@effect/vitest":"4.0.0-rc.116","effect":"4.0.0-rc.116","typescript":"7.0.2","vite-plus":"0.3.2"},"peerDependencies":{"effect":"^4.0.0-rc.116"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"./activity-store":{"types":"./dist/durable/ActivityStore.d.mts","default":"./dist/durable/ActivityStore.mjs"},"./admin":{"types":"./dist/durable/Admin.d.mts","default":"./dist/durable/Admin.mjs"},"./agent":{"types":"./dist/core/Agent.d.mts","default":"./dist/core/Agent.mjs"},"./agent-error":{"types":"./dist/core/AgentError.d.mts","default":"./dist/core/AgentError.mjs"},"./agent-policy":{"types":"./dist/core/AgentPolicy.d.mts","default":"./dist/core/AgentPolicy.mjs"},"./agent-registration":{"types":"./dist/durable/AgentRegistration.d.mts","default":"./dist/durable/AgentRegistration.mjs"},"./agent-runtime":{"types":"./dist/engine/AgentRuntime.d.mts","default":"./dist/engine/AgentRuntime.mjs"},"./agent-updates":{"types":"./dist/core/AgentUpdates.d.mts","default":"./dist/core/AgentUpdates.mjs"},"./approval":{"types":"./dist/capabilities/Approval.d.mts","default":"./dist/capabilities/Approval.mjs"},"./budget":{"types":"./dist/capabilities/Budget.d.mts","default":"./dist/capabilities/Budget.mjs"},"./code-executor":{"types":"./dist/sandbox/CodeExecutor.d.mts","default":"./dist/sandbox/CodeExecutor.mjs"},"./code-mode":{"types":"./dist/capabilities/CodeMode.d.mts","default":"./dist/capabilities/CodeMode.mjs"},"./commands":{"types":"./dist/capabilities/Commands.d.mts","default":"./dist/capabilities/Commands.mjs"},"./committed-activity":{"types":"./dist/durable/CommittedActivity.d.mts","default":"./dist/durable/CommittedActivity.mjs"},"./compaction":{"types":"./dist/engine/Compaction.d.mts","default":"./dist/engine/Compaction.mjs"},"./context-compactor":{"types":"./dist/engine/ContextCompactor.d.mts","default":"./dist/engine/ContextCompactor.mjs"},"./context-history":{"types":"./dist/engine/ContextHistory.d.mts","default":"./dist/engine/ContextHistory.mjs"},"./context-tools":{"types":"./dist/capabilities/ContextTools.d.mts","default":"./dist/capabilities/ContextTools.mjs"},"./context-window":{"types":"./dist/engine/ContextWindow.d.mts","default":"./dist/engine/ContextWindow.mjs"},"./digest":{"types":"./dist/durable/Digest.d.mts","default":"./dist/durable/Digest.mjs"},"./durable-agent-runtime":{"types":"./dist/durable/DurableAgentRuntime.d.mts","default":"./dist/durable/DurableAgentRuntime.mjs"},"./durable-failpoint":{"types":"./dist/durable/DurableFailpoint.d.mts","default":"./dist/durable/DurableFailpoint.mjs"},"./durable-step":{"types":"./dist/engine/DurableStep.d.mts","default":"./dist/engine/DurableStep.mjs"},"./event-source":{"types":"./dist/durable/EventSource.d.mts","default":"./dist/durable/EventSource.mjs"},"./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"},"./protected-browser":{"types":"./dist/sandbox/ProtectedBrowser.d.mts","default":"./dist/sandbox/ProtectedBrowser.mjs"},"./receipt":{"types":"./dist/core/Receipt.d.mts","default":"./dist/core/Receipt.mjs"},"./records":{"types":"./dist/durable/Records.d.mts","default":"./dist/durable/Records.mjs"},"./recovery":{"types":"./dist/durable/Recovery.d.mts","default":"./dist/durable/Recovery.mjs"},"./redaction":{"types":"./dist/capabilities/Redaction.d.mts","default":"./dist/capabilities/Redaction.mjs"},"./remembering":{"types":"./dist/capabilities/Remembering.d.mts","default":"./dist/capabilities/Remembering.mjs"},"./remembering-store":{"types":"./dist/core/RememberingStore.d.mts","default":"./dist/core/RememberingStore.mjs"},"./run-event":{"types":"./dist/core/RunEvent.d.mts","default":"./dist/core/RunEvent.mjs"},"./run-event-sink":{"types":"./dist/engine/RunEventSink.d.mts","default":"./dist/engine/RunEventSink.mjs"},"./run-hooks":{"types":"./dist/capabilities/RunHooks.d.mts","default":"./dist/capabilities/RunHooks.mjs"},"./run-journal":{"types":"./dist/durable/RunJournal.d.mts","default":"./dist/durable/RunJournal.mjs"},"./run-options":{"types":"./dist/engine/RunOptions.d.mts","default":"./dist/engine/RunOptions.mjs"},"./run-policy-usage":{"types":"./dist/core/RunPolicyUsage.d.mts","default":"./dist/core/RunPolicyUsage.mjs"},"./sandbox":{"types":"./dist/sandbox/Sandbox.d.mts","default":"./dist/sandbox/Sandbox.mjs"},"./schedule":{"types":"./dist/durable/Schedule.d.mts","default":"./dist/durable/Schedule.mjs"},"./schedule-transition":{"types":"./dist/durable/ScheduleTransition.d.mts","default":"./dist/durable/ScheduleTransition.mjs"},"./scheduling":{"types":"./dist/durable/Scheduling.d.mts","default":"./dist/durable/Scheduling.mjs"},"./semantic-memory":{"types":"./dist/capabilities/SemanticMemory.d.mts","default":"./dist/capabilities/SemanticMemory.mjs"},"./semantic-memory-index":{"types":"./dist/core/SemanticMemoryIndex.d.mts","default":"./dist/core/SemanticMemoryIndex.mjs"},"./semantic-memory-revalidation":{"types":"./dist/core/SemanticMemoryRevalidation.d.mts","default":"./dist/core/SemanticMemoryRevalidation.mjs"},"./sql-thread-native-reads":{"types":"./dist/durable/SqlThreadNativeReads.d.mts","default":"./dist/durable/SqlThreadNativeReads.mjs"},"./sql-memory-store":{"types":"./dist/durable/SqlMemoryStore.d.mts","default":"./dist/durable/SqlMemoryStore.mjs"},"./sql-message-delivery-store":{"types":"./dist/durable/SqlMessageDeliveryStore.d.mts","default":"./dist/durable/SqlMessageDeliveryStore.mjs"},"./sql-storage-v2-upgrade":{"types":"./dist/durable/SqlStorageV2Upgrade.d.mts","default":"./dist/durable/SqlStorageV2Upgrade.mjs"},"./sql-subscription-store":{"types":"./dist/durable/SqlSubscriptionStore.d.mts","default":"./dist/durable/SqlSubscriptionStore.mjs"},"./subagent":{"types":"./dist/capabilities/Subagent.d.mts","default":"./dist/capabilities/Subagent.mjs"},"./subagent-contract":{"types":"./dist/core/SubagentContract.d.mts","default":"./dist/core/SubagentContract.mjs"},"./subagent-host":{"types":"./dist/engine/SubagentHost.d.mts","default":"./dist/engine/SubagentHost.mjs"},"./subagent-reservations":{"types":"./dist/capabilities/SubagentReservations.d.mts","default":"./dist/capabilities/SubagentReservations.mjs"},"./submission-ledger":{"types":"./dist/durable/SubmissionLedger.d.mts","default":"./dist/durable/SubmissionLedger.mjs"},"./submission-status":{"types":"./dist/durable/SubmissionStatus.d.mts","default":"./dist/durable/SubmissionStatus.mjs"},"./subscription":{"types":"./dist/durable/Subscription.d.mts","default":"./dist/durable/Subscription.mjs"},"./subscription-input":{"types":"./dist/durable/SubscriptionInput.d.mts","default":"./dist/durable/SubscriptionInput.mjs"},"./subscription-tools":{"types":"./dist/durable/SubscriptionTools.d.mts","default":"./dist/durable/SubscriptionTools.mjs"},"./subscription-transition":{"types":"./dist/durable/SubscriptionTransition.d.mts","default":"./dist/durable/SubscriptionTransition.mjs"},"./subscriptions":{"types":"./dist/durable/Subscriptions.d.mts","default":"./dist/durable/Subscriptions.mjs"},"./testing/certification":{"types":"./dist/durable/Certification.d.mts","default":"./dist/durable/Certification.mjs"},"./testing/durable-failpoint-test-control":{"types":"./dist/durable/DurableFailpointTestControl.d.mts","default":"./dist/durable/DurableFailpointTestControl.mjs"},"./testing/message-delivery-store-conformance":{"types":"./dist/durable/MessageDeliveryStoreConformance.d.mts","default":"./dist/durable/MessageDeliveryStoreConformance.mjs"},"./testing/schedule-store-conformance":{"types":"./dist/durable/ScheduleStoreConformance.d.mts","default":"./dist/durable/ScheduleStoreConformance.mjs"},"./testing/submission-ledger-conformance":{"types":"./dist/durable/SubmissionLedgerConformance.d.mts","default":"./dist/durable/SubmissionLedgerConformance.mjs"},"./testing/subscription-store-conformance":{"types":"./dist/durable/SubscriptionStoreConformance.d.mts","default":"./dist/durable/SubscriptionStoreConformance.mjs"},"./testing/thread-store-conformance":{"types":"./dist/durable/ThreadStoreConformance.d.mts","default":"./dist/durable/ThreadStoreConformance.mjs"},"./thread":{"types":"./dist/core/Thread.d.mts","default":"./dist/core/Thread.mjs"},"./thread-context-history":{"types":"./dist/durable/ThreadContextHistory.d.mts","default":"./dist/durable/ThreadContextHistory.mjs"},"./thread-context-history-projection":{"types":"./dist/durable/ThreadContextHistoryProjection.d.mts","default":"./dist/durable/ThreadContextHistoryProjection.mjs"},"./thread-history":{"types":"./dist/engine/ThreadHistory.d.mts","default":"./dist/engine/ThreadHistory.mjs"},"./thread-invariants":{"types":"./dist/durable/ThreadInvariants.d.mts","default":"./dist/durable/ThreadInvariants.mjs"},"./thread-projection":{"types":"./dist/durable/ThreadProjection.d.mts","default":"./dist/durable/ThreadProjection.mjs"},"./thread-projection-maintenance":{"types":"./dist/durable/ThreadProjectionMaintenance.d.mts","default":"./dist/durable/ThreadProjectionMaintenance.mjs"},"./thread-store":{"types":"./dist/durable/ThreadStore.d.mts","default":"./dist/durable/ThreadStore.mjs"},"./tool-broker":{"types":"./dist/engine/ToolBroker.d.mts","default":"./dist/engine/ToolBroker.mjs"},"./tool-discovery":{"types":"./dist/capabilities/ToolDiscovery.d.mts","default":"./dist/capabilities/ToolDiscovery.mjs"},"./tool-exposure":{"types":"./dist/ToolExposure.d.mts","default":"./dist/ToolExposure.mjs"},"./tool-reconciler":{"types":"./dist/durable/ToolReconciler.d.mts","default":"./dist/durable/ToolReconciler.mjs"},"./tool-result":{"types":"./dist/core/ToolResult.d.mts","default":"./dist/core/ToolResult.mjs"},"./usage":{"types":"./dist/core/Usage.d.mts","default":"./dist/core/Usage.mjs"},"./wake-scheduler":{"types":"./dist/durable/WakeScheduler.d.mts","default":"./dist/durable/WakeScheduler.mjs"},"./web-capture":{"types":"./dist/capabilities/WebCapture.d.mts","default":"./dist/capabilities/WebCapture.mjs"},"./web-search":{"types":"./dist/capabilities/WebSearch.d.mts","default":"./dist/capabilities/WebSearch.mjs"},"./worker":{"types":"./dist/core/Worker.d.mts","default":"./dist/core/Worker.mjs"},"./worker-host":{"types":"./dist/durable/WorkerHost.d.mts","default":"./dist/durable/WorkerHost.mjs"}},"description":"Effect-native agents, execution, subagents, and sandbox contracts in one tree-shakeable package.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/danieljvdm/effect-agent.git","directory":"packages/effect-agent"},"files":["dist","src"],"type":"module","sideEffects":[],"publishConfig":{"access":"public"},"scripts":{"build":"vp pack","check":"tsc --noEmit -p tsconfig.json","test":"vp test --passWithNoTests"}}
|
package/src/capabilities/Mcp.ts
CHANGED
|
@@ -59,7 +59,7 @@ export class McpConnectionRequest extends Schema.Class<McpConnectionRequest>(
|
|
|
59
59
|
*/
|
|
60
60
|
export class McpToolOutputSchema extends Context.Service<
|
|
61
61
|
McpToolOutputSchema,
|
|
62
|
-
Option.Option<McpSchema.
|
|
62
|
+
Option.Option<McpSchema.ToolOutputJson>
|
|
63
63
|
>()("@effect-agent/capabilities/McpToolOutputSchema") {}
|
|
64
64
|
|
|
65
65
|
/** Typed remote connection failure; no remote execution is claimed exactly-once. */
|
|
@@ -137,12 +137,11 @@ export class McpConnector extends Context.Service<
|
|
|
137
137
|
|
|
138
138
|
/**
|
|
139
139
|
* `Tool.getJsonSchema`/`Tool.getJsonSchemaFromSchema` hoist a named, refined
|
|
140
|
-
* type into `$defs` with a top-level `$ref
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* inlines a single top-level `$ref` before either side is digested.
|
|
140
|
+
* type into `$defs` with a top-level `$ref`. MCP inputs require an object root,
|
|
141
|
+
* and connectors may advertise named object outputs in that flattened form too.
|
|
142
|
+
* Inline a single top-level `$ref` in locally derived schemas so those contracts
|
|
143
|
+
* compare consistently with discovery. Explicit output annotations retain the
|
|
144
|
+
* advertised schema unchanged, including non-object roots.
|
|
146
145
|
*/
|
|
147
146
|
const flattenTopLevelRef = (schema: JsonSchema.JsonSchema): JsonSchema.JsonSchema => {
|
|
148
147
|
const ref = schema["$ref"];
|