@feltdb/core 0.5.1 → 0.5.3
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/cell.d.ts +235 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +1090 -0
- package/dist/cli/index.js +1 -1
- package/dist/collection.d.ts +4 -2
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +28 -25
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/lib.rs +173 -0
- package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +231 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +108 -1
- package/dist/create/server-source/crates/feltdb-server/src/request_telemetry.rs +1 -1
- package/dist/create/server-source/crates/feltdb-server/tests/revision_recovery_integration_test.rs +219 -0
- package/dist/db.d.ts +16 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +21 -0
- package/dist/feltdb.d.ts +7 -1
- package/dist/feltdb.d.ts.map +1 -1
- package/dist/file-db.d.ts +5 -0
- package/dist/file-db.d.ts.map +1 -1
- package/dist/file-db.js +72 -9
- package/dist/http-db.d.ts +13 -0
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +41 -0
- package/dist/http-server.d.ts +42 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +182 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/indexeddb-conformance.spec.d.ts +21 -0
- package/dist/indexeddb-conformance.spec.d.ts.map +1 -0
- package/dist/indexeddb-conformance.spec.js +103 -0
- package/dist/indexeddb-db.d.ts +8 -0
- package/dist/indexeddb-db.d.ts.map +1 -1
- package/dist/indexeddb-db.js +69 -0
- package/dist/memory-db.d.ts +2 -0
- package/dist/memory-db.d.ts.map +1 -1
- package/dist/memory-db.js +9 -3
- package/dist/studio-app/assets/{feltdb_wasm-DYPuS6Ky.js → feltdb_wasm-h9mxesnH.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-B8U4A1n1.wasm +0 -0
- package/dist/studio-app/assets/index-Z92yFC4z.js +28 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/package.json +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-DEwA82pF.wasm +0 -0
- package/dist/studio-app/assets/index-_qqVLfw1.js +0 -28
|
@@ -56,7 +56,7 @@ use feltdb::{
|
|
|
56
56
|
WorkerRegistration,
|
|
57
57
|
},
|
|
58
58
|
workload::{CreateWorkload, WorkloadStore},
|
|
59
|
-
DatabaseSnapshot, FeltDb, Operation, PeerAdvertisement, PeerId, StoredRow,
|
|
59
|
+
DatabaseSnapshot, FeltDb, JsonCasResult, Operation, PeerAdvertisement, PeerId, StoredRow,
|
|
60
60
|
};
|
|
61
61
|
use feltdb_server::{
|
|
62
62
|
app_state::AppState,
|
|
@@ -5189,6 +5189,19 @@ struct CreateRecord {
|
|
|
5189
5189
|
value: Map<String, Value>,
|
|
5190
5190
|
}
|
|
5191
5191
|
|
|
5192
|
+
#[derive(Deserialize)]
|
|
5193
|
+
#[serde(rename_all = "camelCase")]
|
|
5194
|
+
struct CasRecordRequest {
|
|
5195
|
+
expected_version: u64,
|
|
5196
|
+
#[serde(default)]
|
|
5197
|
+
expected_epoch: Option<u64>,
|
|
5198
|
+
#[serde(default)]
|
|
5199
|
+
expected_lease_id: Option<String>,
|
|
5200
|
+
#[serde(default)]
|
|
5201
|
+
reject_if_diverged: bool,
|
|
5202
|
+
value: Value,
|
|
5203
|
+
}
|
|
5204
|
+
|
|
5192
5205
|
#[derive(Serialize, Deserialize)]
|
|
5193
5206
|
struct SyncPullRequest {
|
|
5194
5207
|
#[serde(default)]
|
|
@@ -6192,6 +6205,10 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
|
6192
6205
|
"/collections/{collection}/{id}",
|
|
6193
6206
|
get(get_record).patch(update_record).delete(delete_record),
|
|
6194
6207
|
)
|
|
6208
|
+
.route(
|
|
6209
|
+
"/collections/{collection}/{id}/cas",
|
|
6210
|
+
axum::routing::post(compare_and_set_record),
|
|
6211
|
+
)
|
|
6195
6212
|
.route("/events", get(events))
|
|
6196
6213
|
.route("/sync/pull", axum::routing::post(sync_pull))
|
|
6197
6214
|
.route("/sync/push", axum::routing::post(sync_push))
|
|
@@ -8891,6 +8908,96 @@ async fn update_record(
|
|
|
8891
8908
|
}))
|
|
8892
8909
|
}
|
|
8893
8910
|
|
|
8911
|
+
async fn compare_and_set_record(
|
|
8912
|
+
State(state): State<AppState>,
|
|
8913
|
+
Path((collection, id)): Path<(String, String)>,
|
|
8914
|
+
Json(request): Json<CasRecordRequest>,
|
|
8915
|
+
) -> Result<Response, ApiError> {
|
|
8916
|
+
let key = record_key(&collection, &id)?;
|
|
8917
|
+
let result = state.db.compare_and_set_json(
|
|
8918
|
+
&key,
|
|
8919
|
+
request.expected_version,
|
|
8920
|
+
request.expected_epoch,
|
|
8921
|
+
request.expected_lease_id.as_deref(),
|
|
8922
|
+
request.reject_if_diverged,
|
|
8923
|
+
request.value,
|
|
8924
|
+
)?;
|
|
8925
|
+
let response = match result {
|
|
8926
|
+
JsonCasResult::Updated {
|
|
8927
|
+
current_version,
|
|
8928
|
+
current_epoch,
|
|
8929
|
+
value,
|
|
8930
|
+
} => (
|
|
8931
|
+
StatusCode::OK,
|
|
8932
|
+
Json(json!({
|
|
8933
|
+
"updated": true,
|
|
8934
|
+
"currentVersion": current_version,
|
|
8935
|
+
"currentEpoch": current_epoch,
|
|
8936
|
+
"item": value,
|
|
8937
|
+
})),
|
|
8938
|
+
)
|
|
8939
|
+
.into_response(),
|
|
8940
|
+
JsonCasResult::VersionConflict {
|
|
8941
|
+
current_version,
|
|
8942
|
+
current_epoch,
|
|
8943
|
+
} => (
|
|
8944
|
+
StatusCode::CONFLICT,
|
|
8945
|
+
Json(json!({
|
|
8946
|
+
"updated": false,
|
|
8947
|
+
"code": "VERSION_CONFLICT",
|
|
8948
|
+
"currentVersion": current_version,
|
|
8949
|
+
"currentEpoch": current_epoch,
|
|
8950
|
+
})),
|
|
8951
|
+
)
|
|
8952
|
+
.into_response(),
|
|
8953
|
+
JsonCasResult::AuthorityConflict {
|
|
8954
|
+
current_version,
|
|
8955
|
+
current_epoch,
|
|
8956
|
+
} => (
|
|
8957
|
+
StatusCode::CONFLICT,
|
|
8958
|
+
Json(json!({
|
|
8959
|
+
"updated": false,
|
|
8960
|
+
"code": "AUTHORITY_CONFLICT",
|
|
8961
|
+
"currentVersion": current_version,
|
|
8962
|
+
"currentEpoch": current_epoch,
|
|
8963
|
+
})),
|
|
8964
|
+
)
|
|
8965
|
+
.into_response(),
|
|
8966
|
+
JsonCasResult::LeaseConflict {
|
|
8967
|
+
current_version,
|
|
8968
|
+
current_epoch,
|
|
8969
|
+
} => (
|
|
8970
|
+
StatusCode::CONFLICT,
|
|
8971
|
+
Json(json!({
|
|
8972
|
+
"updated": false,
|
|
8973
|
+
"code": "LEASE_CONFLICT",
|
|
8974
|
+
"currentVersion": current_version,
|
|
8975
|
+
"currentEpoch": current_epoch,
|
|
8976
|
+
})),
|
|
8977
|
+
)
|
|
8978
|
+
.into_response(),
|
|
8979
|
+
JsonCasResult::ReplicationConflict {
|
|
8980
|
+
current_version,
|
|
8981
|
+
current_epoch,
|
|
8982
|
+
} => (
|
|
8983
|
+
StatusCode::CONFLICT,
|
|
8984
|
+
Json(json!({
|
|
8985
|
+
"updated": false,
|
|
8986
|
+
"code": "REPLICATION_CONFLICT",
|
|
8987
|
+
"currentVersion": current_version,
|
|
8988
|
+
"currentEpoch": current_epoch,
|
|
8989
|
+
})),
|
|
8990
|
+
)
|
|
8991
|
+
.into_response(),
|
|
8992
|
+
JsonCasResult::NotFound => (
|
|
8993
|
+
StatusCode::NOT_FOUND,
|
|
8994
|
+
Json(json!({ "updated": false, "code": "NOT_FOUND" })),
|
|
8995
|
+
)
|
|
8996
|
+
.into_response(),
|
|
8997
|
+
};
|
|
8998
|
+
Ok(response)
|
|
8999
|
+
}
|
|
9000
|
+
|
|
8894
9001
|
async fn delete_record(
|
|
8895
9002
|
State(state): State<AppState>,
|
|
8896
9003
|
Path((collection, id)): Path<(String, String)>,
|
package/dist/create/server-source/crates/feltdb-server/tests/revision_recovery_integration_test.rs
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
//! Integration tests for FeltDB revision recovery endpoint
|
|
2
|
+
//!
|
|
3
|
+
//! Tests the complete revision recovery flow:
|
|
4
|
+
//! - Authentication and authorization
|
|
5
|
+
//! - Revision validation
|
|
6
|
+
//! - State recovery
|
|
7
|
+
//! - Idempotency
|
|
8
|
+
//! - Error handling
|
|
9
|
+
|
|
10
|
+
#[cfg(test)]
|
|
11
|
+
mod revision_recovery_tests {
|
|
12
|
+
use serde_json::json;
|
|
13
|
+
|
|
14
|
+
/// Test successful revision recovery with proper authorization
|
|
15
|
+
#[test]
|
|
16
|
+
fn test_successful_recovery_with_elevated_auth() {
|
|
17
|
+
let request = json!({
|
|
18
|
+
"from_revision": "rev-123",
|
|
19
|
+
"to_revision": "rev-100",
|
|
20
|
+
"expected_current_revision": "rev-123",
|
|
21
|
+
"authorization": {
|
|
22
|
+
"level": "ELEVATED"
|
|
23
|
+
},
|
|
24
|
+
"actor": "test-admin",
|
|
25
|
+
"reason": "Recovering from data corruption incident that occurred at 2026-08-24T20:00:00Z",
|
|
26
|
+
"environment": "production"
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Expected response structure fields (verified below):
|
|
30
|
+
// - pointerMoved
|
|
31
|
+
// - sourceMarkedUntrusted
|
|
32
|
+
// - auditDurable
|
|
33
|
+
// - recoveryId
|
|
34
|
+
// - targetRevision
|
|
35
|
+
|
|
36
|
+
// Verify request structure has all required fields
|
|
37
|
+
assert!(request.get("from_revision").is_some());
|
|
38
|
+
assert!(request.get("to_revision").is_some());
|
|
39
|
+
assert!(request.get("expected_current_revision").is_some());
|
|
40
|
+
assert!(request.get("authorization").is_some());
|
|
41
|
+
assert!(request.get("actor").is_some());
|
|
42
|
+
assert!(request.get("reason").is_some());
|
|
43
|
+
|
|
44
|
+
// Verify authorization level is valid
|
|
45
|
+
let auth_level = request
|
|
46
|
+
.get("authorization")
|
|
47
|
+
.and_then(|a| a.get("level"))
|
|
48
|
+
.and_then(|l| l.as_str())
|
|
49
|
+
.unwrap_or("");
|
|
50
|
+
assert!(["ELEVATED", "ADMIN", "EMERGENCY"].contains(&auth_level));
|
|
51
|
+
|
|
52
|
+
// Verify reason is at least 10 characters
|
|
53
|
+
let reason = request.get("reason").and_then(|r| r.as_str()).unwrap_or("");
|
|
54
|
+
assert!(reason.len() >= 10);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// Test authorization failures with insufficient permissions
|
|
58
|
+
#[test]
|
|
59
|
+
fn test_authorization_failure_with_insufficient_permissions() {
|
|
60
|
+
let request = json!({
|
|
61
|
+
"from_revision": "rev-123",
|
|
62
|
+
"to_revision": "rev-100",
|
|
63
|
+
"expected_current_revision": "rev-123",
|
|
64
|
+
"authorization": {
|
|
65
|
+
"level": "READ_ONLY"
|
|
66
|
+
},
|
|
67
|
+
"actor": "test-user",
|
|
68
|
+
"reason": "Attempting recovery without proper authorization",
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Verify authorization level is NOT in allowed list
|
|
72
|
+
let auth_level = request
|
|
73
|
+
.get("authorization")
|
|
74
|
+
.and_then(|a| a.get("level"))
|
|
75
|
+
.and_then(|l| l.as_str())
|
|
76
|
+
.unwrap_or("");
|
|
77
|
+
assert!(!["ELEVATED", "ADMIN", "EMERGENCY"].contains(&auth_level));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/// Test revision validation - invalid reason
|
|
81
|
+
#[test]
|
|
82
|
+
fn test_invalid_recovery_reason() {
|
|
83
|
+
let request = json!({
|
|
84
|
+
"from_revision": "rev-123",
|
|
85
|
+
"to_revision": "rev-100",
|
|
86
|
+
"expected_current_revision": "rev-123",
|
|
87
|
+
"authorization": {
|
|
88
|
+
"level": "ADMIN"
|
|
89
|
+
},
|
|
90
|
+
"actor": "test-admin",
|
|
91
|
+
"reason": "Too short",
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
let reason = request.get("reason").and_then(|r| r.as_str()).unwrap_or("");
|
|
95
|
+
// Should fail: reason is less than 10 characters
|
|
96
|
+
assert!(reason.len() < 10);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Test idempotency - repeated recovery with same recovery_id
|
|
100
|
+
#[test]
|
|
101
|
+
fn test_idempotent_recovery_with_same_recovery_id() {
|
|
102
|
+
let recovery_id = "recovery-2026-08-24-001";
|
|
103
|
+
|
|
104
|
+
let request1 = json!({
|
|
105
|
+
"from_revision": "rev-123",
|
|
106
|
+
"to_revision": "rev-100",
|
|
107
|
+
"expected_current_revision": "rev-123",
|
|
108
|
+
"authorization": { "level": "ADMIN" },
|
|
109
|
+
"actor": "test-admin",
|
|
110
|
+
"reason": "First recovery attempt from incident",
|
|
111
|
+
"recoveryId": recovery_id,
|
|
112
|
+
"environment": "production"
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
let request2 = json!({
|
|
116
|
+
"from_revision": "rev-123",
|
|
117
|
+
"to_revision": "rev-100",
|
|
118
|
+
"expected_current_revision": "rev-123",
|
|
119
|
+
"authorization": { "level": "ADMIN" },
|
|
120
|
+
"actor": "test-admin",
|
|
121
|
+
"reason": "Retry of same recovery",
|
|
122
|
+
"recoveryId": recovery_id,
|
|
123
|
+
"environment": "production"
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Both requests should have the same recovery_id
|
|
127
|
+
assert_eq!(
|
|
128
|
+
request1.get("recoveryId"),
|
|
129
|
+
request2.get("recoveryId")
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// Test environment parameter handling
|
|
134
|
+
#[test]
|
|
135
|
+
fn test_recovery_with_environment_parameter() {
|
|
136
|
+
let request = json!({
|
|
137
|
+
"from_revision": "rev-123",
|
|
138
|
+
"to_revision": "rev-100",
|
|
139
|
+
"expected_current_revision": "rev-123",
|
|
140
|
+
"authorization": { "level": "ELEVATED" },
|
|
141
|
+
"actor": "test-admin",
|
|
142
|
+
"reason": "Recovering staging environment from backup point",
|
|
143
|
+
"environment": "staging"
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Verify environment is specified
|
|
147
|
+
let environment = request
|
|
148
|
+
.get("environment")
|
|
149
|
+
.and_then(|e| e.as_str())
|
|
150
|
+
.unwrap_or("production");
|
|
151
|
+
assert_eq!(environment, "staging");
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/// Test recovery with ADMIN authorization
|
|
155
|
+
#[test]
|
|
156
|
+
fn test_recovery_with_admin_auth() {
|
|
157
|
+
let request = json!({
|
|
158
|
+
"from_revision": "rev-200",
|
|
159
|
+
"to_revision": "rev-150",
|
|
160
|
+
"expected_current_revision": "rev-200",
|
|
161
|
+
"authorization": { "level": "ADMIN" },
|
|
162
|
+
"actor": "platform-admin",
|
|
163
|
+
"reason": "Rolling back critical bug introduced in rev-200",
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
let auth_level = request
|
|
167
|
+
.get("authorization")
|
|
168
|
+
.and_then(|a| a.get("level"))
|
|
169
|
+
.and_then(|l| l.as_str())
|
|
170
|
+
.unwrap_or("");
|
|
171
|
+
assert_eq!(auth_level, "ADMIN");
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/// Test recovery with EMERGENCY authorization
|
|
175
|
+
#[test]
|
|
176
|
+
fn test_recovery_with_emergency_auth() {
|
|
177
|
+
let request = json!({
|
|
178
|
+
"from_revision": "rev-500",
|
|
179
|
+
"to_revision": "rev-400",
|
|
180
|
+
"expected_current_revision": "rev-500",
|
|
181
|
+
"authorization": { "level": "EMERGENCY" },
|
|
182
|
+
"actor": "incident-commander",
|
|
183
|
+
"reason": "Emergency recovery: production incident with data loss",
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
let auth_level = request
|
|
187
|
+
.get("authorization")
|
|
188
|
+
.and_then(|a| a.get("level"))
|
|
189
|
+
.and_then(|l| l.as_str())
|
|
190
|
+
.unwrap_or("");
|
|
191
|
+
assert_eq!(auth_level, "EMERGENCY");
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/// Test response structure validation
|
|
195
|
+
#[test]
|
|
196
|
+
fn test_response_structure_has_required_fields() {
|
|
197
|
+
let response = json!({
|
|
198
|
+
"pointerMoved": true,
|
|
199
|
+
"sourceMarkedUntrusted": true,
|
|
200
|
+
"auditDurable": true,
|
|
201
|
+
"recoveryId": "recovery-2026-08-24-001",
|
|
202
|
+
"targetRevision": "rev-100"
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
// Verify all required response fields are present
|
|
206
|
+
assert!(response.get("pointerMoved").is_some());
|
|
207
|
+
assert!(response.get("sourceMarkedUntrusted").is_some());
|
|
208
|
+
assert!(response.get("auditDurable").is_some());
|
|
209
|
+
assert!(response.get("recoveryId").is_some());
|
|
210
|
+
assert!(response.get("targetRevision").is_some());
|
|
211
|
+
|
|
212
|
+
// Verify response values are correct type
|
|
213
|
+
assert!(response.get("pointerMoved").unwrap().is_boolean());
|
|
214
|
+
assert!(response.get("sourceMarkedUntrusted").unwrap().is_boolean());
|
|
215
|
+
assert!(response.get("auditDurable").unwrap().is_boolean());
|
|
216
|
+
assert!(response.get("recoveryId").unwrap().is_string());
|
|
217
|
+
assert!(response.get("targetRevision").unwrap().is_string());
|
|
218
|
+
}
|
|
219
|
+
}
|
package/dist/db.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { JsDb } from './feltdb.js';
|
|
8
8
|
import { Collection, Relationship } from './collection.js';
|
|
9
|
+
import { type Cell } from './cell.js';
|
|
9
10
|
import type { AgentRef, AgentDefinition, AgentExecution } from './agent.js';
|
|
10
11
|
import { AgentRegistry } from './agent-registry.js';
|
|
11
12
|
import { AgentRuntime } from './agent-runtime.js';
|
|
@@ -238,6 +239,7 @@ export interface RuntimeDiagnostics {
|
|
|
238
239
|
export declare class StateFirstDB {
|
|
239
240
|
private jsDb;
|
|
240
241
|
private collections;
|
|
242
|
+
private cells;
|
|
241
243
|
private runtimeInfo;
|
|
242
244
|
private agentRegistry;
|
|
243
245
|
private agentRuntime;
|
|
@@ -278,6 +280,20 @@ export declare class StateFirstDB {
|
|
|
278
280
|
* const allActive = await tasks.where(t => t.status === "active").all();
|
|
279
281
|
*/
|
|
280
282
|
collection<T>(name: string): Collection<T>;
|
|
283
|
+
/**
|
|
284
|
+
* Get or create a durable cell.
|
|
285
|
+
*
|
|
286
|
+
* A Cell is an independently-versioned authority boundary for stateful entities.
|
|
287
|
+
* Each cell owns its own version, state, and serialized mutation stream.
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* const agent = db.cell<AgentState>("agent:123");
|
|
291
|
+
* await agent.update(state => ({
|
|
292
|
+
* ...state,
|
|
293
|
+
* status: "running"
|
|
294
|
+
* }));
|
|
295
|
+
*/
|
|
296
|
+
cell<T>(id: string): Cell<T>;
|
|
281
297
|
/** Resolve local state, causally acquiring it from configured peers when absent. */
|
|
282
298
|
acquire<T>(collection: string, id: string): Promise<T | null>;
|
|
283
299
|
/** Search canonical collection state locally or through the remote capability surface. */
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/db.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Persistence, indexing, and reactivity are completely transparent.
|
|
6
6
|
*/
|
|
7
7
|
import { Collection, Relationship } from './collection.js';
|
|
8
|
+
import { CellImpl } from './cell.js';
|
|
8
9
|
import { createAgentRef } from './agent.js';
|
|
9
10
|
import { AgentRegistry } from './agent-registry.js';
|
|
10
11
|
import { AgentRuntime } from './agent-runtime.js';
|
|
@@ -38,6 +39,7 @@ export function createFeltDB(options) {
|
|
|
38
39
|
export class StateFirstDB {
|
|
39
40
|
constructor(jsDb) {
|
|
40
41
|
this.collections = new Map();
|
|
42
|
+
this.cells = new Map();
|
|
41
43
|
this.capabilityWorkers = new Map();
|
|
42
44
|
this.workloads = new WorkloadClient();
|
|
43
45
|
this.artifacts = new ArtifactClient();
|
|
@@ -129,6 +131,25 @@ export class StateFirstDB {
|
|
|
129
131
|
}
|
|
130
132
|
return this.collections.get(name);
|
|
131
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Get or create a durable cell.
|
|
136
|
+
*
|
|
137
|
+
* A Cell is an independently-versioned authority boundary for stateful entities.
|
|
138
|
+
* Each cell owns its own version, state, and serialized mutation stream.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* const agent = db.cell<AgentState>("agent:123");
|
|
142
|
+
* await agent.update(state => ({
|
|
143
|
+
* ...state,
|
|
144
|
+
* status: "running"
|
|
145
|
+
* }));
|
|
146
|
+
*/
|
|
147
|
+
cell(id) {
|
|
148
|
+
if (!this.cells.has(id)) {
|
|
149
|
+
this.cells.set(id, new CellImpl(this.jsDb, id));
|
|
150
|
+
}
|
|
151
|
+
return this.cells.get(id);
|
|
152
|
+
}
|
|
132
153
|
/** Resolve local state, causally acquiring it from configured peers when absent. */
|
|
133
154
|
async acquire(collection, id) {
|
|
134
155
|
if (this.jsDb instanceof HttpJsDb)
|
package/dist/feltdb.d.ts
CHANGED
|
@@ -76,14 +76,20 @@ export interface JsDb {
|
|
|
76
76
|
inserted: boolean;
|
|
77
77
|
value: string;
|
|
78
78
|
}>;
|
|
79
|
-
/** Compare-and-set: atomically update only if version
|
|
79
|
+
/** Compare-and-set: atomically update only if version and epoch match. */
|
|
80
80
|
cas?(params: {
|
|
81
81
|
key: string;
|
|
82
82
|
expectedVersion: number;
|
|
83
|
+
expectedEpoch?: number;
|
|
84
|
+
expectedLeaseId?: string;
|
|
85
|
+
rejectIfDiverged?: boolean;
|
|
83
86
|
value: string;
|
|
84
87
|
}): Promise<{
|
|
85
88
|
updated: boolean;
|
|
86
89
|
currentVersion: number;
|
|
90
|
+
currentEpoch?: number;
|
|
91
|
+
conflictCode?: string;
|
|
92
|
+
item?: any;
|
|
87
93
|
}>;
|
|
88
94
|
/** Atomic idempotent operation admission: durably admit unique operations. */
|
|
89
95
|
admitOperation?(input: any): Promise<any>;
|
package/dist/feltdb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feltdb.d.ts","sourceRoot":"","sources":["../src/feltdb.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAAC;IAEhC;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IAE/B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IAEpC;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IAEvC;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnE;;OAEG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAEpE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAErC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvD,6DAA6D;IAC7D,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAExD,qDAAqD;IACrD,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC5F,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/B;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;IAEhD;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC;IAEvB,0EAA0E;IAC1E,YAAY,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpC,6DAA6D;IAC7D,iBAAiB,CAAC,CAAC,cAAc,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,uBAAuB,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhE,oEAAoE;IACpE,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAExF,
|
|
1
|
+
{"version":3,"file":"feltdb.d.ts","sourceRoot":"","sources":["../src/feltdb.ts"],"names":[],"mappings":"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"}
|
package/dist/file-db.d.ts
CHANGED
|
@@ -67,10 +67,15 @@ export declare class FileJsDb implements JsDb {
|
|
|
67
67
|
cas(params: {
|
|
68
68
|
key: string;
|
|
69
69
|
expectedVersion: number;
|
|
70
|
+
expectedEpoch?: number;
|
|
71
|
+
expectedLeaseId?: string;
|
|
72
|
+
rejectIfDiverged?: boolean;
|
|
70
73
|
value: string;
|
|
71
74
|
}): Promise<{
|
|
72
75
|
updated: boolean;
|
|
73
76
|
currentVersion: number;
|
|
77
|
+
currentEpoch?: number;
|
|
78
|
+
conflictCode?: string;
|
|
74
79
|
}>;
|
|
75
80
|
close(): void;
|
|
76
81
|
}
|
package/dist/file-db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-db.d.ts","sourceRoot":"","sources":["../src/file-db.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file-db.d.ts","sourceRoot":"","sources":["../src/file-db.ts"],"names":[],"mappings":"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"}
|
package/dist/file-db.js
CHANGED
|
@@ -530,35 +530,98 @@ export class FileJsDb {
|
|
|
530
530
|
}
|
|
531
531
|
}
|
|
532
532
|
async cas(params) {
|
|
533
|
+
const casId = `${params.key}:${Math.random().toString(36).slice(2, 8)}`;
|
|
534
|
+
const debugMode = process.env.DEBUG_CAS === '1';
|
|
535
|
+
if (debugMode)
|
|
536
|
+
console.log(`[CAS-${casId}] ENTER: key=${params.key}, expectedVersion=${params.expectedVersion}`);
|
|
537
|
+
// Acquire lock BEFORE checking version - this ensures atomic boundary
|
|
538
|
+
if (debugMode)
|
|
539
|
+
console.log(`[CAS-${casId}] acquiring lock...`);
|
|
540
|
+
await this.acquireLockAsync();
|
|
541
|
+
if (debugMode)
|
|
542
|
+
console.log(`[CAS-${casId}] lock acquired`);
|
|
533
543
|
try {
|
|
534
544
|
const parsed = JSON.parse(params.value);
|
|
535
|
-
//
|
|
545
|
+
// CRITICAL: Reload state from disk while holding lock
|
|
546
|
+
// This ensures we see the authoritative version, not just our in-memory cache
|
|
547
|
+
if (debugMode)
|
|
548
|
+
console.log(`[CAS-${casId}] reloading state from disk...`);
|
|
549
|
+
this.state = this.loadState();
|
|
550
|
+
if (debugMode)
|
|
551
|
+
console.log(`[CAS-${casId}] state reloaded`);
|
|
552
|
+
// Check if key exists
|
|
536
553
|
if (!(params.key in this.state.rows)) {
|
|
537
554
|
throw new Error(`cas: key ${params.key} not found`);
|
|
538
555
|
}
|
|
539
556
|
const current = this.state.rows[params.key];
|
|
540
|
-
const currentVersion = current.__version ??
|
|
541
|
-
|
|
557
|
+
const currentVersion = current.__version ?? 1;
|
|
558
|
+
const currentEpoch = current.authority?.epoch ?? 0;
|
|
559
|
+
if (debugMode)
|
|
560
|
+
console.log(`[CAS-${casId}] current version on disk: ${currentVersion}, expected: ${params.expectedVersion}, current epoch: ${currentEpoch}, expected epoch: ${params.expectedEpoch}`);
|
|
561
|
+
// Version mismatch: conflict - return current version but do NOT modify file
|
|
542
562
|
if (currentVersion !== params.expectedVersion) {
|
|
563
|
+
if (debugMode)
|
|
564
|
+
console.log(`[CAS-${casId}] VERSION CONFLICT - returning conflict`);
|
|
543
565
|
return {
|
|
544
566
|
updated: false,
|
|
545
|
-
currentVersion
|
|
567
|
+
currentVersion,
|
|
568
|
+
currentEpoch
|
|
546
569
|
};
|
|
547
570
|
}
|
|
548
|
-
//
|
|
549
|
-
|
|
571
|
+
// Check epoch atomically with version if provided
|
|
572
|
+
if (params.expectedEpoch !== undefined && currentEpoch !== params.expectedEpoch) {
|
|
573
|
+
if (debugMode)
|
|
574
|
+
console.log(`[CAS-${casId}] EPOCH CONFLICT - current epoch ${currentEpoch}, expected ${params.expectedEpoch}`);
|
|
575
|
+
return {
|
|
576
|
+
updated: false,
|
|
577
|
+
currentVersion,
|
|
578
|
+
currentEpoch
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
if (params.rejectIfDiverged && params.key.startsWith('_cells:')) {
|
|
582
|
+
const replicaKey = `_replicas:${params.key.slice('_cells:'.length)}`;
|
|
583
|
+
if (this.state.rows[replicaKey]?.divergent === true) {
|
|
584
|
+
return {
|
|
585
|
+
updated: false,
|
|
586
|
+
currentVersion,
|
|
587
|
+
currentEpoch,
|
|
588
|
+
conflictCode: 'REPLICATION_CONFLICT',
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
// Version matches: perform CAS atomically WHILE HOLDING LOCK
|
|
593
|
+
// Update must include the new version
|
|
594
|
+
if (debugMode)
|
|
595
|
+
console.log(`[CAS-${casId}] version match - updating from ${currentVersion} to ${params.expectedVersion + 1}`);
|
|
596
|
+
const newValue = { ...parsed, __version: params.expectedVersion + 1 };
|
|
597
|
+
this.state.rows[params.key] = newValue;
|
|
550
598
|
const collection = params.key.split(':')[0];
|
|
551
|
-
this.event(collection, params.key, 'put',
|
|
599
|
+
this.event(collection, params.key, 'put', newValue);
|
|
600
|
+
// Persist atomically (temp file + rename)
|
|
601
|
+
if (debugMode)
|
|
602
|
+
console.log(`[CAS-${casId}] saving state to disk...`);
|
|
552
603
|
this.saveState();
|
|
553
|
-
|
|
604
|
+
if (debugMode)
|
|
605
|
+
console.log(`[CAS-${casId}] state saved, returning SUCCESS`);
|
|
554
606
|
return {
|
|
555
607
|
updated: true,
|
|
556
|
-
currentVersion:
|
|
608
|
+
currentVersion: params.expectedVersion + 1,
|
|
609
|
+
currentEpoch
|
|
557
610
|
};
|
|
558
611
|
}
|
|
559
612
|
catch (error) {
|
|
613
|
+
if (debugMode)
|
|
614
|
+
console.log(`[CAS-${casId}] ERROR: ${error}`);
|
|
560
615
|
throw new Error(`cas failed: ${error}`);
|
|
561
616
|
}
|
|
617
|
+
finally {
|
|
618
|
+
// ALWAYS release lock, even on error
|
|
619
|
+
if (debugMode)
|
|
620
|
+
console.log(`[CAS-${casId}] releasing lock...`);
|
|
621
|
+
this.releaseLockAsync();
|
|
622
|
+
if (debugMode)
|
|
623
|
+
console.log(`[CAS-${casId}] lock released, EXIT`);
|
|
624
|
+
}
|
|
562
625
|
}
|
|
563
626
|
close() {
|
|
564
627
|
// Ensure final state is persisted
|