@effect-agent/storage-sqlite 0.1.0-beta.12 → 0.1.0-beta.120
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/SqliteActivityStore.d.mts +14 -0
- package/dist/SqliteActivityStore.mjs +310 -0
- package/dist/SqliteActivityStore.mjs.map +1 -0
- package/dist/SqliteMessageDeliveryStore.d.mts +14 -0
- package/dist/SqliteMessageDeliveryStore.mjs +24 -0
- package/dist/SqliteMessageDeliveryStore.mjs.map +1 -0
- package/dist/SqliteScheduleStore.d.mts +14 -0
- package/dist/SqliteScheduleStore.mjs +255 -0
- package/dist/SqliteScheduleStore.mjs.map +1 -0
- package/dist/SqliteStorageConfig.d.mts +34 -0
- package/dist/SqliteStorageConfig.mjs +39 -0
- package/dist/SqliteStorageConfig.mjs.map +1 -0
- package/dist/SqliteStorageError-DVWeaWLm.d.mts +86 -0
- package/dist/SqliteStorageError.d.mts +2 -0
- package/dist/SqliteStorageError.mjs +150 -0
- package/dist/SqliteStorageError.mjs.map +1 -0
- package/dist/SqliteStorageFailpoint.d.mts +17 -0
- package/dist/SqliteStorageFailpoint.mjs +14 -0
- package/dist/SqliteStorageFailpoint.mjs.map +1 -0
- package/dist/SqliteStorageFailpointTesting.d.mts +14 -0
- package/dist/SqliteStorageFailpointTesting.mjs +19 -0
- package/dist/SqliteStorageFailpointTesting.mjs.map +1 -0
- package/dist/SqliteStorageVersion-BBmy73KE.d.mts +11 -0
- package/dist/SqliteStorageVersion.d.mts +2 -0
- package/dist/SqliteStorageVersion.mjs +8 -0
- package/dist/SqliteStorageVersion.mjs.map +1 -0
- package/dist/SqliteSubmissionLedger.d.mts +23 -0
- package/dist/SqliteSubmissionLedger.mjs +1866 -0
- package/dist/SqliteSubmissionLedger.mjs.map +1 -0
- package/dist/SqliteSubscriptionStore.d.mts +13 -0
- package/dist/SqliteSubscriptionStore.mjs +28 -0
- package/dist/SqliteSubscriptionStore.mjs.map +1 -0
- package/dist/SqliteThreadStore.d.mts +49 -0
- package/dist/SqliteThreadStore.mjs +464 -0
- package/dist/SqliteThreadStore.mjs.map +1 -0
- package/dist/index.d.mts +11 -193
- package/dist/index.mjs +11 -3082
- package/dist/migrations-BmgwzT68.mjs +365 -0
- package/dist/migrations-BmgwzT68.mjs.map +1 -0
- package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
- package/dist/sqlite-journal-DE4MN8uP.mjs +1106 -0
- package/dist/sqlite-journal-DE4MN8uP.mjs.map +1 -0
- package/package.json +1 -41
- package/src/SqliteActivityStore.ts +556 -0
- package/src/SqliteMessageDeliveryStore.ts +42 -0
- package/src/SqliteScheduleStore.ts +404 -0
- package/src/{sqlite-storage-config.ts → SqliteStorageConfig.ts} +1 -1
- package/src/{errors.ts → SqliteStorageError.ts} +10 -3
- package/src/SqliteStorageFailpoint.ts +23 -0
- package/src/{sqlite-storage-failpoint.ts → SqliteStorageFailpointTesting.ts} +7 -18
- package/src/SqliteStorageVersion.ts +2 -0
- package/src/{sqlite-ledger.ts → SqliteSubmissionLedger.ts} +1105 -240
- package/src/SqliteSubscriptionStore.ts +55 -0
- package/src/SqliteThreadStore.ts +1004 -0
- package/src/index.ts +10 -6
- package/src/internal/message-delivery-schema.ts +24 -0
- package/src/internal/migrations.ts +373 -0
- package/src/internal/recovery-checkpoint-schema.ts +17 -0
- package/src/internal/sqlite-journal.ts +1792 -0
- package/dist/index.mjs.map +0 -1
- package/src/migrations.ts +0 -275
- package/src/sqlite-conversation-store.ts +0 -841
- package/src/sqlite-journal.ts +0 -1086
package/src/migrations.ts
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
import { SqliteMigrator } from "@effect/sql-sqlite-node";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
4
|
-
|
|
5
|
-
export const CurrentSqliteStorageVersion = 4;
|
|
6
|
-
|
|
7
|
-
export const sqliteMigrations = SqliteMigrator.fromRecord({
|
|
8
|
-
"1_current_persistent_conversation_foundation": Effect.gen(function* () {
|
|
9
|
-
const sql = yield* SqlClient.SqlClient;
|
|
10
|
-
|
|
11
|
-
yield* sql`
|
|
12
|
-
CREATE TABLE effect_agent_conversations (
|
|
13
|
-
conversation_id TEXT PRIMARY KEY NOT NULL,
|
|
14
|
-
created_at TEXT NOT NULL,
|
|
15
|
-
tail_sequence INTEGER NOT NULL,
|
|
16
|
-
tail_digest TEXT NOT NULL,
|
|
17
|
-
producer_epoch INTEGER NOT NULL
|
|
18
|
-
)
|
|
19
|
-
`.withoutTransform;
|
|
20
|
-
|
|
21
|
-
yield* sql`
|
|
22
|
-
CREATE TABLE effect_agent_canonical_batches (
|
|
23
|
-
conversation_id TEXT NOT NULL,
|
|
24
|
-
batch_id TEXT NOT NULL,
|
|
25
|
-
first_sequence INTEGER NOT NULL,
|
|
26
|
-
last_sequence INTEGER NOT NULL,
|
|
27
|
-
batch_digest TEXT NOT NULL,
|
|
28
|
-
tail_digest TEXT NOT NULL,
|
|
29
|
-
batch_json TEXT NOT NULL,
|
|
30
|
-
PRIMARY KEY (conversation_id, batch_id),
|
|
31
|
-
FOREIGN KEY (conversation_id)
|
|
32
|
-
REFERENCES effect_agent_conversations(conversation_id)
|
|
33
|
-
ON DELETE RESTRICT
|
|
34
|
-
)
|
|
35
|
-
`.withoutTransform;
|
|
36
|
-
|
|
37
|
-
yield* sql`
|
|
38
|
-
CREATE TABLE effect_agent_canonical_records (
|
|
39
|
-
conversation_id TEXT NOT NULL,
|
|
40
|
-
sequence INTEGER NOT NULL,
|
|
41
|
-
record_id TEXT NOT NULL,
|
|
42
|
-
batch_id TEXT NOT NULL,
|
|
43
|
-
record_json TEXT NOT NULL,
|
|
44
|
-
PRIMARY KEY (conversation_id, sequence),
|
|
45
|
-
UNIQUE (conversation_id, record_id),
|
|
46
|
-
FOREIGN KEY (conversation_id, batch_id)
|
|
47
|
-
REFERENCES effect_agent_canonical_batches(conversation_id, batch_id)
|
|
48
|
-
ON DELETE RESTRICT
|
|
49
|
-
)
|
|
50
|
-
`.withoutTransform;
|
|
51
|
-
|
|
52
|
-
yield* sql`
|
|
53
|
-
CREATE INDEX effect_agent_canonical_records_batch
|
|
54
|
-
ON effect_agent_canonical_records (conversation_id, batch_id, sequence)
|
|
55
|
-
`.withoutTransform;
|
|
56
|
-
|
|
57
|
-
yield* sql`
|
|
58
|
-
CREATE TABLE effect_agent_checkpoints (
|
|
59
|
-
conversation_id TEXT NOT NULL,
|
|
60
|
-
through_sequence INTEGER NOT NULL,
|
|
61
|
-
tail_digest TEXT NOT NULL,
|
|
62
|
-
checkpoint_json TEXT NOT NULL,
|
|
63
|
-
PRIMARY KEY (conversation_id, through_sequence),
|
|
64
|
-
FOREIGN KEY (conversation_id)
|
|
65
|
-
REFERENCES effect_agent_conversations(conversation_id)
|
|
66
|
-
ON DELETE RESTRICT
|
|
67
|
-
)
|
|
68
|
-
`.withoutTransform;
|
|
69
|
-
|
|
70
|
-
yield* sql`PRAGMA user_version = 1`.withoutTransform;
|
|
71
|
-
}),
|
|
72
|
-
"2_durable_submission_ledger": Effect.gen(function* () {
|
|
73
|
-
const sql = yield* SqlClient.SqlClient;
|
|
74
|
-
|
|
75
|
-
// Admission rows exist before Conversation materialization (durability §4), so
|
|
76
|
-
// conversation_id intentionally carries no foreign key into effect_agent_conversations.
|
|
77
|
-
yield* sql`
|
|
78
|
-
CREATE TABLE effect_agent_submissions (
|
|
79
|
-
submission_id TEXT PRIMARY KEY NOT NULL,
|
|
80
|
-
conversation_id TEXT NOT NULL,
|
|
81
|
-
queue_sequence INTEGER NOT NULL,
|
|
82
|
-
principal TEXT NOT NULL,
|
|
83
|
-
idempotency_key TEXT NOT NULL,
|
|
84
|
-
agent_id TEXT NOT NULL,
|
|
85
|
-
agent_digests_json TEXT NOT NULL,
|
|
86
|
-
deployment_id TEXT NOT NULL,
|
|
87
|
-
input_json TEXT NOT NULL,
|
|
88
|
-
input_digest TEXT NOT NULL,
|
|
89
|
-
receipt_id TEXT NOT NULL,
|
|
90
|
-
state TEXT NOT NULL,
|
|
91
|
-
settled_outcome TEXT,
|
|
92
|
-
created_at TEXT NOT NULL,
|
|
93
|
-
ready_at TEXT,
|
|
94
|
-
input_applied_record_id TEXT,
|
|
95
|
-
input_applied_sequence INTEGER,
|
|
96
|
-
UNIQUE (conversation_id, principal, idempotency_key),
|
|
97
|
-
UNIQUE (conversation_id, queue_sequence)
|
|
98
|
-
)
|
|
99
|
-
`.withoutTransform;
|
|
100
|
-
|
|
101
|
-
yield* sql`
|
|
102
|
-
CREATE TABLE effect_agent_submission_ownership (
|
|
103
|
-
submission_id TEXT PRIMARY KEY NOT NULL,
|
|
104
|
-
attempt_id TEXT NOT NULL,
|
|
105
|
-
ownership_token TEXT NOT NULL,
|
|
106
|
-
producer_epoch INTEGER NOT NULL,
|
|
107
|
-
owner_producer_id TEXT NOT NULL,
|
|
108
|
-
lease_expires_at TEXT NOT NULL,
|
|
109
|
-
FOREIGN KEY (submission_id)
|
|
110
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
111
|
-
ON DELETE RESTRICT
|
|
112
|
-
)
|
|
113
|
-
`.withoutTransform;
|
|
114
|
-
|
|
115
|
-
yield* sql`
|
|
116
|
-
CREATE TABLE effect_agent_attempts (
|
|
117
|
-
attempt_id TEXT PRIMARY KEY NOT NULL,
|
|
118
|
-
submission_id TEXT NOT NULL,
|
|
119
|
-
conversation_id TEXT NOT NULL,
|
|
120
|
-
owner_producer_id TEXT NOT NULL,
|
|
121
|
-
producer_epoch INTEGER NOT NULL,
|
|
122
|
-
claimed_at TEXT NOT NULL,
|
|
123
|
-
FOREIGN KEY (submission_id)
|
|
124
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
125
|
-
ON DELETE RESTRICT
|
|
126
|
-
)
|
|
127
|
-
`.withoutTransform;
|
|
128
|
-
|
|
129
|
-
yield* sql`
|
|
130
|
-
CREATE TABLE effect_agent_settlement_reservations (
|
|
131
|
-
submission_id TEXT PRIMARY KEY NOT NULL,
|
|
132
|
-
settlement_id TEXT NOT NULL,
|
|
133
|
-
outcome TEXT NOT NULL,
|
|
134
|
-
record_id TEXT NOT NULL,
|
|
135
|
-
record_json TEXT NOT NULL,
|
|
136
|
-
record_digest TEXT NOT NULL,
|
|
137
|
-
reserved_at TEXT NOT NULL,
|
|
138
|
-
finalized_at TEXT,
|
|
139
|
-
FOREIGN KEY (submission_id)
|
|
140
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
141
|
-
ON DELETE RESTRICT
|
|
142
|
-
)
|
|
143
|
-
`.withoutTransform;
|
|
144
|
-
|
|
145
|
-
yield* sql`
|
|
146
|
-
CREATE TABLE effect_agent_abort_intents (
|
|
147
|
-
submission_id TEXT PRIMARY KEY NOT NULL,
|
|
148
|
-
author TEXT NOT NULL,
|
|
149
|
-
reason TEXT NOT NULL,
|
|
150
|
-
requested_at TEXT NOT NULL,
|
|
151
|
-
canonical_record_id TEXT,
|
|
152
|
-
FOREIGN KEY (submission_id)
|
|
153
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
154
|
-
ON DELETE RESTRICT
|
|
155
|
-
)
|
|
156
|
-
`.withoutTransform;
|
|
157
|
-
|
|
158
|
-
yield* sql`PRAGMA user_version = 2`.withoutTransform;
|
|
159
|
-
}),
|
|
160
|
-
"3_durable_tools_and_joined_input": Effect.gen(function* () {
|
|
161
|
-
const sql = yield* SqlClient.SqlClient;
|
|
162
|
-
|
|
163
|
-
// Joined queued input (plan §2.5, DUR-016): a joining/joined Submission records which host
|
|
164
|
-
// Run claimed it. The canonical input marker reuses input_applied_record_id/_sequence
|
|
165
|
-
// because the joined input IS the Submission's own canonical `input:{sid}` record.
|
|
166
|
-
yield* sql`
|
|
167
|
-
ALTER TABLE effect_agent_submissions
|
|
168
|
-
ADD COLUMN joined_host_submission_id TEXT
|
|
169
|
-
`.withoutTransform;
|
|
170
|
-
|
|
171
|
-
// Durable approval suspension (plan §2.6): the reason is the Schema-encoded
|
|
172
|
-
// SuspensionReason union so later suspension families stay additive.
|
|
173
|
-
yield* sql`
|
|
174
|
-
ALTER TABLE effect_agent_submissions
|
|
175
|
-
ADD COLUMN suspended_reason_json TEXT
|
|
176
|
-
`.withoutTransform;
|
|
177
|
-
yield* sql`
|
|
178
|
-
ALTER TABLE effect_agent_submissions
|
|
179
|
-
ADD COLUMN suspended_at TEXT
|
|
180
|
-
`.withoutTransform;
|
|
181
|
-
|
|
182
|
-
// Unknown Outcome marking (DUR-009/DUR-017): the marked open Tool Call identities are
|
|
183
|
-
// stored so `recordUnknownResolution` can reopen the lane only when every marked call
|
|
184
|
-
// has a durable resolution intent.
|
|
185
|
-
yield* sql`
|
|
186
|
-
ALTER TABLE effect_agent_submissions
|
|
187
|
-
ADD COLUMN unknown_reason TEXT
|
|
188
|
-
`.withoutTransform;
|
|
189
|
-
yield* sql`
|
|
190
|
-
ALTER TABLE effect_agent_submissions
|
|
191
|
-
ADD COLUMN unknown_tool_call_ids_json TEXT
|
|
192
|
-
`.withoutTransform;
|
|
193
|
-
|
|
194
|
-
yield* sql`
|
|
195
|
-
CREATE INDEX effect_agent_submissions_joined_host
|
|
196
|
-
ON effect_agent_submissions (joined_host_submission_id)
|
|
197
|
-
`.withoutTransform;
|
|
198
|
-
|
|
199
|
-
yield* sql`
|
|
200
|
-
CREATE TABLE effect_agent_approval_decisions (
|
|
201
|
-
submission_id TEXT NOT NULL,
|
|
202
|
-
tool_call_id TEXT NOT NULL,
|
|
203
|
-
decision TEXT NOT NULL,
|
|
204
|
-
resolver TEXT NOT NULL,
|
|
205
|
-
reason TEXT NOT NULL,
|
|
206
|
-
decided_at TEXT NOT NULL,
|
|
207
|
-
PRIMARY KEY (submission_id, tool_call_id),
|
|
208
|
-
FOREIGN KEY (submission_id)
|
|
209
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
210
|
-
ON DELETE RESTRICT
|
|
211
|
-
)
|
|
212
|
-
`.withoutTransform;
|
|
213
|
-
|
|
214
|
-
yield* sql`
|
|
215
|
-
CREATE TABLE effect_agent_unknown_resolutions (
|
|
216
|
-
submission_id TEXT NOT NULL,
|
|
217
|
-
tool_call_id TEXT NOT NULL,
|
|
218
|
-
author TEXT NOT NULL,
|
|
219
|
-
reason TEXT NOT NULL,
|
|
220
|
-
resolution_json TEXT NOT NULL,
|
|
221
|
-
resolved_at TEXT NOT NULL,
|
|
222
|
-
PRIMARY KEY (submission_id, tool_call_id),
|
|
223
|
-
FOREIGN KEY (submission_id)
|
|
224
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
225
|
-
ON DELETE RESTRICT
|
|
226
|
-
)
|
|
227
|
-
`.withoutTransform;
|
|
228
|
-
|
|
229
|
-
yield* sql`PRAGMA user_version = 3`.withoutTransform;
|
|
230
|
-
}),
|
|
231
|
-
"4_durable_subagents": Effect.gen(function* () {
|
|
232
|
-
const sql = yield* SqlClient.SqlClient;
|
|
233
|
-
|
|
234
|
-
// Durable attached children (spec §12, SUB-004): a child Submission records its immutable
|
|
235
|
-
// parent linkage at admission; the parent-side index serves the recovery attachment view.
|
|
236
|
-
yield* sql`
|
|
237
|
-
ALTER TABLE effect_agent_submissions
|
|
238
|
-
ADD COLUMN parent_submission_id TEXT
|
|
239
|
-
`.withoutTransform;
|
|
240
|
-
yield* sql`
|
|
241
|
-
ALTER TABLE effect_agent_submissions
|
|
242
|
-
ADD COLUMN parent_tool_call_id TEXT
|
|
243
|
-
`.withoutTransform;
|
|
244
|
-
yield* sql`
|
|
245
|
-
CREATE INDEX effect_agent_submissions_parent
|
|
246
|
-
ON effect_agent_submissions (parent_submission_id)
|
|
247
|
-
`.withoutTransform;
|
|
248
|
-
|
|
249
|
-
// Parent-owned child budget reservations (spec §12 steps 2 and 6, SUB-010): generic
|
|
250
|
-
// opaque-payload state-machine rows (D8) — allocation and accounting are Schema-encoded
|
|
251
|
-
// JSON documents the adapter never interprets; status moves
|
|
252
|
-
// reserved → releasePending → released, applied exactly once.
|
|
253
|
-
yield* sql`
|
|
254
|
-
CREATE TABLE effect_agent_child_reservations (
|
|
255
|
-
reservation_id TEXT PRIMARY KEY NOT NULL,
|
|
256
|
-
parent_submission_id TEXT NOT NULL,
|
|
257
|
-
parent_tool_call_id TEXT NOT NULL,
|
|
258
|
-
child_submission_id TEXT,
|
|
259
|
-
status TEXT NOT NULL,
|
|
260
|
-
allocation_json TEXT NOT NULL,
|
|
261
|
-
allocation_digest TEXT NOT NULL,
|
|
262
|
-
accounting_json TEXT,
|
|
263
|
-
reserved_at TEXT NOT NULL,
|
|
264
|
-
release_began_at TEXT,
|
|
265
|
-
released_at TEXT,
|
|
266
|
-
UNIQUE (parent_submission_id, parent_tool_call_id),
|
|
267
|
-
FOREIGN KEY (parent_submission_id)
|
|
268
|
-
REFERENCES effect_agent_submissions(submission_id)
|
|
269
|
-
ON DELETE RESTRICT
|
|
270
|
-
)
|
|
271
|
-
`.withoutTransform;
|
|
272
|
-
|
|
273
|
-
yield* sql`PRAGMA user_version = 4`.withoutTransform;
|
|
274
|
-
}),
|
|
275
|
-
});
|