@effect-agent/storage-sqlite 0.1.0-beta.48 → 0.1.0-beta.50
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/SqliteScheduleStore.mjs +1 -1
- package/dist/SqliteSubmissionLedger.mjs +48 -3
- package/dist/SqliteSubmissionLedger.mjs.map +1 -1
- package/dist/SqliteSubscriptionStore.mjs +17 -585
- package/dist/SqliteSubscriptionStore.mjs.map +1 -1
- package/dist/SqliteThreadStore.mjs +1 -1
- package/dist/{sqlite-journal-C5SZnSdC.mjs → sqlite-journal-BxBxOUEI.mjs} +2 -29
- package/dist/sqlite-journal-BxBxOUEI.mjs.map +1 -0
- package/package.json +1 -1
- package/src/SqliteSubmissionLedger.ts +82 -0
- package/src/SqliteSubscriptionStore.ts +31 -1038
- package/src/internal/sqlite-journal.ts +0 -39
- package/dist/sqlite-journal-C5SZnSdC.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import { a as initializeSqliteJournal } from "./sqlite-journal-
|
|
2
|
+
import { a as initializeSqliteJournal } from "./sqlite-journal-BxBxOUEI.mjs";
|
|
3
3
|
import { Effect, Layer, Result, Schema } from "effect";
|
|
4
4
|
import * as SqlClientService from "effect/unstable/sql/SqlClient";
|
|
5
5
|
import { ScheduleCapacityError, ScheduleChange, ScheduleConflict, ScheduleDueCursor, ScheduleFailpoint, ScheduleId, ScheduleInstant, ScheduleKey, ScheduleNotFound, ScheduleOwner, SchedulePageRequest, ScheduleRecord, ScheduleStorageError, ScheduleStore, defaultSchedulingLimits } from "@effect-agent/thread/Schedule";
|
|
@@ -2,14 +2,14 @@ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
|
2
2
|
import { SqliteStorageConfig } from "./SqliteStorageConfig.mjs";
|
|
3
3
|
import { SqliteLedgerError, SqliteStorageCorruptionError, SqliteStorageError, SqliteWriteContention } from "./SqliteStorageError.mjs";
|
|
4
4
|
import { SqliteStorageFailpoint } from "./SqliteStorageFailpoint.mjs";
|
|
5
|
-
import { a as initializeSqliteJournal, i as decodeRows } from "./sqlite-journal-
|
|
5
|
+
import { a as initializeSqliteJournal, i as decodeRows } from "./sqlite-journal-BxBxOUEI.mjs";
|
|
6
6
|
import { storageConfigLayer, storageFailpointLayer } from "./SqliteThreadStore.mjs";
|
|
7
7
|
import { ApprovalDecision, CanonicalSequence, DefinitionDigests, Digest, PersistedJson, ProducerEpoch, RecordEnvelope, SettlementOutcome } from "@effect-agent/thread/Records";
|
|
8
8
|
import { Clock, Context, Crypto, DateTime, Effect, Layer, Option, Schema, Stream } from "effect";
|
|
9
9
|
import * as SqlClientService from "effect/unstable/sql/SqlClient";
|
|
10
10
|
import { SqliteClient } from "@effect/sql-sqlite-node";
|
|
11
11
|
import { EMPTY_TAIL_DIGEST } from "@effect-agent/thread/Digest";
|
|
12
|
-
import { AbortCommand, AbortIntent, AdmissionAdmitted, AdmissionConflict, AdmissionNotAdmitted, AdmissionRequest, AdmissionResult, ApprovalConflict, ApprovalDecisionCommand, ApprovalDecisionIntent, AttachChildToReservationRequest, BeginChildBudgetReleaseRequest, ChildAttachmentSnapshot, ChildBudgetReservationRequest, ChildBudgetReservationSnapshot, ChildReservationConflict, ChildReservationStatus, ChildSettledNotification, Claim, ClaimJoiningRequest, ClaimRequest, InputAppliedMarker, JoinSnapshot, JoinedToHost, JoiningClaim, LedgerCapabilities, LedgerError, MarkInputAppliedRequest, MarkJoinedRequest, MarkReadyRequest, MarkUnknownRequest, OwnershipLost, OwnershipRenewal, OwnershipSnapshot, ParentLinkage, QueueSequence, RecoverySnapshot, RecoverySnapshotRequest, ReleaseChildBudgetRequest, ReleaseOwnershipRequest, RenewOwnershipRequest, ReservedChildBudget, ReservedSettlement, RevertJoiningRequest, Settlement, SettlementConflict, SettlementFinalization, SettlementReservation, SettlementReservationSnapshot, SubmissionLedger, SubmissionLookup, SubmissionLookupByKey, SubmissionSnapshot, SubmissionState, SuspendRequest, SuspensionReason, SuspensionSnapshot, UnknownResolution, UnknownResolutionCommand, UnknownResolutionConflict, UnknownResolutionIntent, settlementFailureFromRecord, submissionAbortRecordId } from "@effect-agent/thread/SubmissionLedger";
|
|
12
|
+
import { AbortCommand, AbortIntent, AbortIntentRequest, AdmissionAdmitted, AdmissionConflict, AdmissionNotAdmitted, AdmissionRequest, AdmissionResult, ApprovalConflict, ApprovalDecisionCommand, ApprovalDecisionIntent, AttachChildToReservationRequest, BeginChildBudgetReleaseRequest, ChildAttachmentSnapshot, ChildBudgetReservationRequest, ChildBudgetReservationSnapshot, ChildReservationConflict, ChildReservationStatus, ChildSettledNotification, Claim, ClaimJoiningRequest, ClaimRequest, InputAppliedMarker, JoinSnapshot, JoinedToHost, JoiningClaim, LedgerCapabilities, LedgerError, MarkInputAppliedRequest, MarkJoinedRequest, MarkReadyRequest, MarkUnknownRequest, OwnershipLost, OwnershipRenewal, OwnershipSnapshot, ParentLinkage, QueueSequence, RecoverySnapshot, RecoverySnapshotRequest, ReleaseChildBudgetRequest, ReleaseOwnershipRequest, RenewOwnershipRequest, ReservedChildBudget, ReservedSettlement, RevertJoiningRequest, Settlement, SettlementConflict, SettlementFinalization, SettlementReservation, SettlementReservationSnapshot, SubmissionLedger, SubmissionLookup, SubmissionLookupByKey, SubmissionSnapshot, SubmissionState, SuspendRequest, SuspensionReason, SuspensionSnapshot, UnknownResolution, UnknownResolutionCommand, UnknownResolutionConflict, UnknownResolutionIntent, settlementFailureFromRecord, submissionAbortRecordId } from "@effect-agent/thread/SubmissionLedger";
|
|
13
13
|
import { NodeCrypto } from "@effect/platform-node";
|
|
14
14
|
//#region src/SqliteSubmissionLedger.ts
|
|
15
15
|
var SqliteSubmissionLedger_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -107,6 +107,14 @@ var AbortIntentRow = class extends Schema.Class("AbortIntentRow")({
|
|
|
107
107
|
canonical_record_id: Schema.NullOr(BoundedIdentifier)
|
|
108
108
|
}) {};
|
|
109
109
|
var MaxQueueSequenceRow = class extends Schema.Class("MaxQueueSequenceRow")({ max_queue_sequence: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)) }) {};
|
|
110
|
+
var AbortIntentLookupRow = class extends Schema.Class("AbortIntentLookupRow")({
|
|
111
|
+
submission_id: BoundedIdentifier,
|
|
112
|
+
abort_submission_id: Schema.NullOr(BoundedIdentifier),
|
|
113
|
+
author: Schema.NullOr(BoundedIdentifier),
|
|
114
|
+
reason: Schema.NullOr(BoundedStoredText),
|
|
115
|
+
requested_at: Schema.NullOr(BoundedTimestamp),
|
|
116
|
+
canonical_record_id: Schema.NullOr(BoundedIdentifier)
|
|
117
|
+
}) {};
|
|
110
118
|
var CanonicalRecordIdRow = class extends Schema.Class("CanonicalRecordIdRow")({ record_id: BoundedIdentifier }) {};
|
|
111
119
|
const SUBMISSION_COLUMNS = `
|
|
112
120
|
submission_id,
|
|
@@ -1507,6 +1515,42 @@ const makeServices = Effect.fn("SqliteSubmissionLedger.makeServices")(function*
|
|
|
1507
1515
|
})];
|
|
1508
1516
|
});
|
|
1509
1517
|
const scanNonterminal = Stream.paginate(void 0, scanPage);
|
|
1518
|
+
const readAbortIntentForSubmission = Effect.fn("SqliteSubmissionLedger.readAbortIntentForSubmission")(function* (request) {
|
|
1519
|
+
const operation = "ledger read abort intent";
|
|
1520
|
+
const validated = yield* Schema.decodeUnknownEffect(Schema.toType(AbortIntentRequest))(request).pipe(Effect.mapError(internalFailure(operation)));
|
|
1521
|
+
const recordId = submissionAbortRecordId(validated.submissionId);
|
|
1522
|
+
const rows = yield* sql`
|
|
1523
|
+
SELECT
|
|
1524
|
+
submission.submission_id,
|
|
1525
|
+
abort.submission_id AS abort_submission_id,
|
|
1526
|
+
abort.author,
|
|
1527
|
+
abort.reason,
|
|
1528
|
+
abort.requested_at,
|
|
1529
|
+
canonical.record_id AS canonical_record_id
|
|
1530
|
+
FROM effect_agent_submissions AS submission
|
|
1531
|
+
LEFT JOIN effect_agent_abort_intents AS abort
|
|
1532
|
+
ON abort.submission_id = submission.submission_id
|
|
1533
|
+
LEFT JOIN effect_agent_canonical_records AS canonical
|
|
1534
|
+
ON canonical.thread_id = submission.thread_id
|
|
1535
|
+
AND canonical.record_id = ${recordId}
|
|
1536
|
+
WHERE submission.submission_id = ${validated.submissionId}
|
|
1537
|
+
`.pipe(Effect.mapError(sqlFailure(operation)));
|
|
1538
|
+
const decoded = yield* decodeRows(Schema.Array(AbortIntentLookupRow), "effect_agent_abort_intents", validated.submissionId, rows).pipe(Effect.mapError(internalFailure(operation)));
|
|
1539
|
+
if (decoded.length === 0) return yield* LedgerError.make({
|
|
1540
|
+
operation,
|
|
1541
|
+
message: `Unknown submission ${validated.submissionId}.`
|
|
1542
|
+
});
|
|
1543
|
+
if (decoded.length !== 1) return yield* corruptionFailure(operation, "effect_agent_abort_intents", validated.submissionId, "An abort intent lookup returned more than one row.");
|
|
1544
|
+
const row = decoded[0];
|
|
1545
|
+
if (row.abort_submission_id === null) return void 0;
|
|
1546
|
+
return yield* decodeAbortIntent({
|
|
1547
|
+
submissionId: row.abort_submission_id,
|
|
1548
|
+
author: row.author,
|
|
1549
|
+
reason: row.reason,
|
|
1550
|
+
requestedAt: row.requested_at,
|
|
1551
|
+
...row.canonical_record_id === null ? {} : { canonicalRecordId: row.canonical_record_id }
|
|
1552
|
+
}).pipe(Effect.mapError((error) => corruptionFailure(operation, "effect_agent_abort_intents", validated.submissionId, error.message)));
|
|
1553
|
+
});
|
|
1510
1554
|
const loadRecoverySnapshot = Effect.fn("SqliteSubmissionLedger.loadRecoverySnapshot")(function* (request) {
|
|
1511
1555
|
const operation = "ledger load recovery snapshot";
|
|
1512
1556
|
const validated = yield* Schema.decodeUnknownEffect(Schema.toType(RecoverySnapshotRequest))(request).pipe(Effect.mapError(internalFailure(operation)));
|
|
@@ -1636,7 +1680,8 @@ const makeServices = Effect.fn("SqliteSubmissionLedger.makeServices")(function*
|
|
|
1636
1680
|
beginChildBudgetRelease,
|
|
1637
1681
|
releaseChildBudget,
|
|
1638
1682
|
scanNonterminal,
|
|
1639
|
-
loadRecoverySnapshot
|
|
1683
|
+
loadRecoverySnapshot,
|
|
1684
|
+
readAbortIntent: readAbortIntentForSubmission
|
|
1640
1685
|
}));
|
|
1641
1686
|
});
|
|
1642
1687
|
/**
|