@feltdb/core 0.13.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/dist/agent-runtime.d.ts +64 -2
  2. package/dist/agent-runtime.d.ts.map +1 -1
  3. package/dist/agent-runtime.js +121 -11
  4. package/dist/agent-state.d.ts +68 -0
  5. package/dist/agent-state.d.ts.map +1 -1
  6. package/dist/agent-state.js +210 -12
  7. package/dist/agent.d.ts +10 -1
  8. package/dist/agent.d.ts.map +1 -1
  9. package/dist/agent.js +10 -1
  10. package/dist/build-identity.json +12 -4
  11. package/dist/cli/commands.js +214 -10
  12. package/dist/cli/publish-engine.js +116 -16
  13. package/dist/collection.d.ts +3 -1
  14. package/dist/collection.d.ts.map +1 -1
  15. package/dist/collection.js +33 -8
  16. package/dist/create/build-identity.json +12 -4
  17. package/dist/create/cli.js +1 -1
  18. package/dist/create/create.js +4 -6
  19. package/dist/create/managed-account.js +93 -35
  20. package/dist/create/package-versions.js +1 -1
  21. package/dist/create/server-source/Cargo.lock +8 -511
  22. package/dist/create/server-source/Cargo.toml +2 -13
  23. package/dist/create/server-source/crates/feltdb-client/Cargo.toml +1 -1
  24. package/dist/create/server-source/crates/feltdb-server/Cargo.toml +1 -1
  25. package/dist/create/server-source/crates/feltdb-server/README.md +6 -1
  26. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +9 -1
  27. package/dist/create/server-source/crates/feltdb-server/src/auth.rs +85 -25
  28. package/dist/create/server-source/crates/feltdb-server/src/backup.rs +4 -0
  29. package/dist/create/server-source/crates/feltdb-server/src/console_accounts.rs +1009 -0
  30. package/dist/create/server-source/crates/feltdb-server/src/control_authorization.rs +441 -0
  31. package/dist/create/server-source/crates/feltdb-server/src/identity.rs +68 -6
  32. package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +355 -23
  33. package/dist/create/server-source/crates/feltdb-server/src/lib.rs +3 -0
  34. package/dist/create/server-source/crates/feltdb-server/src/main.rs +1134 -96
  35. package/dist/create/server-source/crates/feltdb-server/src/redaction.rs +208 -0
  36. package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +198 -19
  37. package/dist/create/server-source/crates/feltdb-server/tests/transaction_precondition_contract.rs +403 -0
  38. package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +1 -1
  39. package/dist/db.d.ts +75 -10
  40. package/dist/db.d.ts.map +1 -1
  41. package/dist/db.js +168 -29
  42. package/dist/deployment.d.ts +19 -0
  43. package/dist/deployment.d.ts.map +1 -1
  44. package/dist/deployment.js +38 -2
  45. package/dist/embedded-query.d.ts.map +1 -1
  46. package/dist/embedded-query.js +5 -4
  47. package/dist/embedded-transaction.d.ts +8 -4
  48. package/dist/embedded-transaction.d.ts.map +1 -1
  49. package/dist/embedded-transaction.js +55 -19
  50. package/dist/error-codes.d.ts +36 -2
  51. package/dist/error-codes.d.ts.map +1 -1
  52. package/dist/error-codes.js +50 -3
  53. package/dist/feltdb.d.ts +7 -0
  54. package/dist/feltdb.d.ts.map +1 -1
  55. package/dist/file-db.d.ts +27 -0
  56. package/dist/file-db.d.ts.map +1 -1
  57. package/dist/file-db.js +145 -7
  58. package/dist/http-client.d.ts +11 -3
  59. package/dist/http-client.d.ts.map +1 -1
  60. package/dist/http-client.js +27 -14
  61. package/dist/http-db.d.ts +43 -1
  62. package/dist/http-db.d.ts.map +1 -1
  63. package/dist/http-db.js +287 -59
  64. package/dist/index.js +1 -1
  65. package/dist/local-state-lock.d.ts +34 -0
  66. package/dist/local-state-lock.d.ts.map +1 -0
  67. package/dist/local-state-lock.js +225 -0
  68. package/dist/managed-recovery.d.ts +6 -0
  69. package/dist/managed-recovery.d.ts.map +1 -1
  70. package/dist/managed-recovery.js +9 -0
  71. package/dist/reactive-graph.d.ts +0 -3
  72. package/dist/reactive-graph.d.ts.map +1 -1
  73. package/dist/reactive-graph.js +11 -1
  74. package/dist/runtime-registry.d.ts +7 -2
  75. package/dist/runtime-registry.d.ts.map +1 -1
  76. package/dist/runtime-registry.js +2 -2
  77. package/dist/studio/components/index.js +1 -1
  78. package/dist/studio/{components-BSGmHfif.js → components-CJmzntBi.js} +2 -1
  79. package/dist/studio/index.js +1 -1
  80. package/dist/studio-app/assets/{feltdb_wasm-3hDngl1h.js → feltdb_wasm-DtybUY0q.js} +1 -1
  81. package/dist/studio-app/assets/feltdb_wasm_bg-DsgIUwaB.wasm +0 -0
  82. package/dist/studio-app/assets/index-C4OffsZl.js +37 -0
  83. package/dist/studio-app/index.html +1 -1
  84. package/dist/transaction.d.ts +27 -11
  85. package/dist/transaction.d.ts.map +1 -1
  86. package/dist/transaction.js +20 -14
  87. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  88. package/dist/wasm/package.json +1 -1
  89. package/dist/workload.d.ts +86 -6
  90. package/dist/workload.d.ts.map +1 -1
  91. package/dist/workload.js +51 -3
  92. package/dist/workspace/workspace-connection.d.ts.map +1 -1
  93. package/dist/workspace/workspace-connection.js +14 -3
  94. package/package.json +1 -1
  95. package/dist/create/server-source/crates/feltdb/Cargo.lock +0 -175
  96. package/dist/create/server-source/crates/feltdb/Cargo.toml +0 -102
  97. package/dist/create/server-source/crates/feltdb/LICENSE +0 -21
  98. package/dist/create/server-source/crates/feltdb/README.md +0 -75
  99. package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +0 -370
  100. package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +0 -589
  101. package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +0 -247
  102. package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +0 -440
  103. package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +0 -275
  104. package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +0 -381
  105. package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +0 -467
  106. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +0 -489
  107. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +0 -281
  108. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +0 -606
  109. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +0 -531
  110. package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +0 -462
  111. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +0 -505
  112. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +0 -484
  113. package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +0 -758
  114. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +0 -421
  115. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +0 -329
  116. package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +0 -1705
  117. package/dist/create/server-source/crates/feltdb/src/acquisition.rs +0 -286
  118. package/dist/create/server-source/crates/feltdb/src/admission.rs +0 -185
  119. package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +0 -507
  120. package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +0 -539
  121. package/dist/create/server-source/crates/feltdb/src/agent_state.rs +0 -320
  122. package/dist/create/server-source/crates/feltdb/src/agent_transition_contract.rs +0 -1545
  123. package/dist/create/server-source/crates/feltdb/src/analytics.rs +0 -521
  124. package/dist/create/server-source/crates/feltdb/src/application.rs +0 -2674
  125. package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +0 -1070
  126. package/dist/create/server-source/crates/feltdb/src/authority.rs +0 -479
  127. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +0 -847
  128. package/dist/create/server-source/crates/feltdb/src/authorization.rs +0 -1030
  129. package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +0 -1122
  130. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority-client.rs +0 -32
  131. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority.rs +0 -19
  132. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +0 -1474
  133. package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +0 -8
  134. package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +0 -418
  135. package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +0 -482
  136. package/dist/create/server-source/crates/feltdb/src/capability.rs +0 -903
  137. package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +0 -263
  138. package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -77
  139. package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +0 -496
  140. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +0 -2574
  141. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +0 -212
  142. package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +0 -422
  143. package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +0 -445
  144. package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +0 -465
  145. package/dist/create/server-source/crates/feltdb/src/convergence.rs +0 -634
  146. package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +0 -427
  147. package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +0 -376
  148. package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +0 -365
  149. package/dist/create/server-source/crates/feltdb/src/cron.rs +0 -294
  150. package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +0 -483
  151. package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +0 -477
  152. package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +0 -1003
  153. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +0 -1334
  154. package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +0 -368
  155. package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +0 -231
  156. package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +0 -482
  157. package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +0 -203
  158. package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +0 -317
  159. package/dist/create/server-source/crates/feltdb/src/equality_index.rs +0 -595
  160. package/dist/create/server-source/crates/feltdb/src/execution.rs +0 -426
  161. package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +0 -214
  162. package/dist/create/server-source/crates/feltdb/src/indexing.rs +0 -776
  163. package/dist/create/server-source/crates/feltdb/src/lib.rs +0 -7274
  164. package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +0 -234
  165. package/dist/create/server-source/crates/feltdb/src/materialization.rs +0 -184
  166. package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -266
  167. package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +0 -310
  168. package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +0 -736
  169. package/dist/create/server-source/crates/feltdb/src/observability.rs +0 -379
  170. package/dist/create/server-source/crates/feltdb/src/operation.rs +0 -290
  171. package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +0 -439
  172. package/dist/create/server-source/crates/feltdb/src/operation_log.rs +0 -349
  173. package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +0 -332
  174. package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +0 -718
  175. package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +0 -487
  176. package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +0 -166
  177. package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +0 -289
  178. package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +0 -566
  179. package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +0 -3391
  180. package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +0 -203
  181. package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +0 -261
  182. package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +0 -502
  183. package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +0 -216
  184. package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +0 -303
  185. package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +0 -323
  186. package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +0 -531
  187. package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +0 -406
  188. package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +0 -436
  189. package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +0 -387
  190. package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +0 -378
  191. package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +0 -359
  192. package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +0 -372
  193. package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +0 -404
  194. package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +0 -376
  195. package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +0 -461
  196. package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +0 -2125
  197. package/dist/create/server-source/crates/feltdb/src/production_api.rs +0 -418
  198. package/dist/create/server-source/crates/feltdb/src/provenance.rs +0 -207
  199. package/dist/create/server-source/crates/feltdb/src/query_execution_diagnostics.rs +0 -126
  200. package/dist/create/server-source/crates/feltdb/src/query_performance.rs +0 -218
  201. package/dist/create/server-source/crates/feltdb/src/read_basis.rs +0 -257
  202. package/dist/create/server-source/crates/feltdb/src/references.rs +0 -404
  203. package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +0 -401
  204. package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +0 -501
  205. package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +0 -680
  206. package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +0 -163
  207. package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +0 -133
  208. package/dist/create/server-source/crates/feltdb/src/routing.rs +0 -409
  209. package/dist/create/server-source/crates/feltdb/src/semantic_decision.rs +0 -2029
  210. package/dist/create/server-source/crates/feltdb/src/semantic_query.rs +0 -599
  211. package/dist/create/server-source/crates/feltdb/src/sharding.rs +0 -549
  212. package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +0 -516
  213. package/dist/create/server-source/crates/feltdb/src/state_contract.rs +0 -5894
  214. package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +0 -222
  215. package/dist/create/server-source/crates/feltdb/src/state_facade.rs +0 -320
  216. package/dist/create/server-source/crates/feltdb/src/state_hash.rs +0 -291
  217. package/dist/create/server-source/crates/feltdb/src/state_model.rs +0 -4158
  218. package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +0 -379
  219. package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +0 -673
  220. package/dist/create/server-source/crates/feltdb/src/storage.rs +0 -273
  221. package/dist/create/server-source/crates/feltdb/src/submission.rs +0 -471
  222. package/dist/create/server-source/crates/feltdb/src/sync.rs +0 -495
  223. package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +0 -822
  224. package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +0 -433
  225. package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +0 -462
  226. package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +0 -965
  227. package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +0 -1120
  228. package/dist/create/server-source/crates/feltdb/src/transactions.rs +0 -643
  229. package/dist/create/server-source/crates/feltdb/src/trigger.rs +0 -390
  230. package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +0 -749
  231. package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +0 -708
  232. package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +0 -1133
  233. package/dist/create/server-source/crates/feltdb/src/workflow.rs +0 -713
  234. package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +0 -510
  235. package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +0 -354
  236. package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +0 -594
  237. package/dist/create/server-source/crates/feltdb/src/workload.rs +0 -2886
  238. package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +0 -456
  239. package/dist/create/server-source/crates/feltdb/tests/agent_state_native.rs +0 -1188
  240. package/dist/create/server-source/crates/feltdb/tests/agent_transition_contract_conformance.rs +0 -2884
  241. package/dist/create/server-source/crates/feltdb/tests/authority_process.rs +0 -297
  242. package/dist/create/server-source/crates/feltdb/tests/authority_transaction_identity.rs +0 -534
  243. package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +0 -132
  244. package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +0 -299
  245. package/dist/create/server-source/crates/feltdb/tests/common/mod.rs +0 -96
  246. package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +0 -272
  247. package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +0 -467
  248. package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +0 -309
  249. package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +0 -445
  250. package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +0 -518
  251. package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +0 -392
  252. package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +0 -850
  253. package/dist/create/server-source/crates/feltdb/tests/fixtures/agent_transition_corpus.json +0 -23340
  254. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +0 -1916
  255. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +0 -1878
  256. package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +0 -1862
  257. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +0 -123
  258. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +0 -299
  259. package/dist/create/server-source/crates/feltdb/tests/local_process_ownership.rs +0 -69
  260. package/dist/create/server-source/crates/feltdb/tests/managed_incident_regression.rs +0 -191
  261. package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +0 -278
  262. package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +0 -234
  263. package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +0 -947
  264. package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +0 -404
  265. package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +0 -916
  266. package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +0 -1045
  267. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +0 -347
  268. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +0 -361
  269. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +0 -330
  270. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +0 -93
  271. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +0 -622
  272. package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +0 -517
  273. package/dist/create/server-source/crates/feltdb/tests/production_certification.rs +0 -1153
  274. package/dist/create/server-source/crates/feltdb/tests/production_contract.rs +0 -771
  275. package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +0 -1383
  276. package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +0 -868
  277. package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +0 -221
  278. package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +0 -417
  279. package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +0 -338
  280. package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +0 -1039
  281. package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +0 -739
  282. package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +0 -452
  283. package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +0 -81
  284. package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +0 -438
  285. package/dist/create/server-source/crates/feltdb/tests/semantic_decision.rs +0 -1165
  286. package/dist/create/server-source/crates/feltdb/tests/semantic_query.rs +0 -767
  287. package/dist/create/server-source/crates/feltdb/tests/semantic_query_contract.rs +0 -363
  288. package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +0 -1799
  289. package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +0 -1316
  290. package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +0 -358
  291. package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +0 -365
  292. package/dist/create/server-source/crates/feltdb/tests/state_ref_authority.rs +0 -918
  293. package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +0 -299
  294. package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +0 -328
  295. package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +0 -255
  296. package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +0 -249
  297. package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +0 -994
  298. package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +0 -484
  299. package/dist/studio-app/assets/feltdb_wasm_bg-CFQT4gCy.wasm +0 -0
  300. package/dist/studio-app/assets/index-Dql1hS5m.js +0 -30
@@ -1,3 +1,3 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#17211b"/><title>FeltDB Studio</title> <script type="module" crossorigin src="/assets/index-Dql1hS5m.js"></script>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#17211b"/><title>FeltDB Studio</title> <script type="module" crossorigin src="/assets/index-C4OffsZl.js"></script>
2
2
  <link rel="stylesheet" crossorigin href="/assets/index-vi21oEQa.css">
3
3
  </head><body><div id="root"></div></body></html>
@@ -22,6 +22,7 @@
22
22
  * a runtime that cannot provide that path refuses the transaction rather than
23
23
  * silently degrading it into a sequence of independent writes.
24
24
  */
25
+ import { FeltDBServiceError } from './error-codes.js';
25
26
  /**
26
27
  * What must be true of one record for the transaction to commit.
27
28
  *
@@ -31,8 +32,10 @@
31
32
  *
32
33
  * Every predicate is optional and only a supplied one is checked. `version` is
33
34
  * the record's `__version` -- the field you read back and pass to
34
- * `updateIfVersion` -- and it is owned by the writer, so a transaction that
35
- * wants to exclude its own successor must write an advanced `__version`.
35
+ * `updateIfVersion`. When the transaction also writes the guarded record, the
36
+ * authority writes it at `expectedVersion + 1`, so a second transaction
37
+ * guarded on the same version is refused: two writers cannot both progress
38
+ * from one version.
36
39
  */
37
40
  export interface AtomicTransactionPrecondition {
38
41
  collection: string;
@@ -250,12 +253,17 @@ export interface AtomicTransactionOptions {
250
253
  */
251
254
  transactionId?: string;
252
255
  }
253
- /** Thrown when a transaction cannot be committed. Nothing was applied. */
254
- export declare class AtomicTransactionError extends Error {
256
+ /**
257
+ * Thrown when a transaction cannot be committed, or when its outcome is not
258
+ * known (`code: 'COMMIT_OUTCOME_UNKNOWN'`, `'DURABILITY_FAILURE'`).
259
+ *
260
+ * A `FeltDBServiceError`, so one `instanceof` and one `code` describe every
261
+ * typed failure, whichever runtime or transport produced it. `status` and
262
+ * `requestId` are the authority's, when it answered.
263
+ */
264
+ export declare class AtomicTransactionError extends FeltDBServiceError {
255
265
  readonly transactionId: string;
256
- readonly code?: string;
257
- readonly status?: number;
258
- constructor(message: string, transactionId: string, code?: string, status?: number, cause?: unknown);
266
+ constructor(message: string, transactionId: string, code?: string, status?: number, cause?: unknown, requestId?: string);
259
267
  }
260
268
  /**
261
269
  * The transaction id was already committed with a different payload.
@@ -266,7 +274,7 @@ export declare class AtomicTransactionError extends Error {
266
274
  */
267
275
  export declare class TransactionIdConflictError extends AtomicTransactionError {
268
276
  readonly code: "IDEMPOTENCY_CONFLICT";
269
- constructor(transactionId: string, message?: string);
277
+ constructor(transactionId: string, message?: string, status?: number, requestId?: string);
270
278
  }
271
279
  /**
272
280
  * The transaction id exists, but its recorded identity cannot be checked by
@@ -277,12 +285,20 @@ export declare class TransactionIdConflictError extends AtomicTransactionError {
277
285
  */
278
286
  export declare class TransactionIdUnverifiableError extends AtomicTransactionError {
279
287
  readonly code: "IDEMPOTENCY_UNVERIFIABLE";
280
- constructor(transactionId: string, message?: string);
288
+ constructor(transactionId: string, message?: string, status?: number, requestId?: string);
281
289
  }
282
- /** Which predicate failed, and what the authority actually holds. */
290
+ /**
291
+ * Which predicate failed, and what the authority actually holds.
292
+ *
293
+ * The same shape on every runtime and route: `collection` is the
294
+ * application's collection name (never a storage namespace), `id` the record
295
+ * id, and `key` the record's `collection:id`. A fence failure names the
296
+ * first fenced collection, `key: 'read-basis'`, and no `id`.
297
+ */
283
298
  export interface ConditionalConflictDetail {
284
299
  predicate: 'version' | 'epoch' | 'lease' | 'present' | 'missing' | 'fence';
285
300
  collection: string;
301
+ id?: string;
286
302
  key: string;
287
303
  expected?: number | string;
288
304
  actual?: number | string | null;
@@ -300,7 +316,7 @@ export interface ConditionalConflictDetail {
300
316
  export declare class ConditionalConflictError extends AtomicTransactionError {
301
317
  readonly code: "PRECONDITION_FAILED";
302
318
  readonly failure?: ConditionalConflictDetail;
303
- constructor(message: string, transactionId: string, failure?: ConditionalConflictDetail);
319
+ constructor(message: string, transactionId: string, failure?: ConditionalConflictDetail, status?: number, requestId?: string);
304
320
  }
305
321
  /**
306
322
  * A refusal a conditional write is *allowed* to have, told apart from every
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@
22
22
  * a runtime that cannot provide that path refuses the transaction rather than
23
23
  * silently degrading it into a sequence of independent writes.
24
24
  */
25
+ import { FeltDBServiceError } from './error-codes.js';
25
26
  /** Largest number of records plus predicates one read basis may name. */
26
27
  export const TRANSACTION_READ_SET_LIMIT = 1_000;
27
28
  const READ_SET_SEGMENT = /^[A-Za-z0-9._-]{1,128}$/;
@@ -66,17 +67,22 @@ export function normaliseReadSet(reads) {
66
67
  predicates: [...predicates.entries()].sort(([left], [right]) => (left < right ? -1 : 1)).map(([, value]) => value),
67
68
  };
68
69
  }
69
- /** Thrown when a transaction cannot be committed. Nothing was applied. */
70
- export class AtomicTransactionError extends Error {
70
+ /**
71
+ * Thrown when a transaction cannot be committed, or when its outcome is not
72
+ * known (`code: 'COMMIT_OUTCOME_UNKNOWN'`, `'DURABILITY_FAILURE'`).
73
+ *
74
+ * A `FeltDBServiceError`, so one `instanceof` and one `code` describe every
75
+ * typed failure, whichever runtime or transport produced it. `status` and
76
+ * `requestId` are the authority's, when it answered.
77
+ */
78
+ export class AtomicTransactionError extends FeltDBServiceError {
71
79
  transactionId;
72
- code;
73
- status;
74
- constructor(message, transactionId, code, status, cause) {
75
- super(message, { cause });
80
+ constructor(message, transactionId, code, status, cause, requestId) {
81
+ super(message, code ?? 'TRANSACTION_FAILED', requestId, status);
82
+ if (cause !== undefined)
83
+ this.cause = cause;
76
84
  this.name = 'AtomicTransactionError';
77
85
  this.transactionId = transactionId;
78
- this.code = code;
79
- this.status = status;
80
86
  }
81
87
  }
82
88
  /**
@@ -88,8 +94,8 @@ export class AtomicTransactionError extends Error {
88
94
  */
89
95
  export class TransactionIdConflictError extends AtomicTransactionError {
90
96
  code = 'IDEMPOTENCY_CONFLICT';
91
- constructor(transactionId, message) {
92
- super(message ?? `Transaction ${transactionId} was already committed with a different payload`, transactionId);
97
+ constructor(transactionId, message, status, requestId) {
98
+ super(message ?? `Transaction ${transactionId} was already committed with a different payload`, transactionId, 'IDEMPOTENCY_CONFLICT', status, undefined, requestId);
93
99
  this.name = 'TransactionIdConflictError';
94
100
  }
95
101
  }
@@ -102,8 +108,8 @@ export class TransactionIdConflictError extends AtomicTransactionError {
102
108
  */
103
109
  export class TransactionIdUnverifiableError extends AtomicTransactionError {
104
110
  code = 'IDEMPOTENCY_UNVERIFIABLE';
105
- constructor(transactionId, message) {
106
- super(message ?? `Transaction ${transactionId} exists, but its recorded identity cannot be verified by this build`, transactionId);
111
+ constructor(transactionId, message, status, requestId) {
112
+ super(message ?? `Transaction ${transactionId} exists, but its recorded identity cannot be verified by this build`, transactionId, 'IDEMPOTENCY_UNVERIFIABLE', status, undefined, requestId);
107
113
  this.name = 'TransactionIdUnverifiableError';
108
114
  }
109
115
  }
@@ -120,8 +126,8 @@ export class TransactionIdUnverifiableError extends AtomicTransactionError {
120
126
  export class ConditionalConflictError extends AtomicTransactionError {
121
127
  code = 'PRECONDITION_FAILED';
122
128
  failure;
123
- constructor(message, transactionId, failure) {
124
- super(message, transactionId);
129
+ constructor(message, transactionId, failure, status, requestId) {
130
+ super(message, transactionId, 'PRECONDITION_FAILED', status, undefined, requestId);
125
131
  this.name = 'ConditionalConflictError';
126
132
  this.failure = failure;
127
133
  }
Binary file
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "feltdb-wasm",
3
3
  "type": "module",
4
- "version": "0.2.2",
4
+ "version": "0.4.1",
5
5
  "files": [
6
6
  "feltdb_wasm_bg.wasm",
7
7
  "feltdb_wasm.js",
@@ -1,5 +1,27 @@
1
1
  import type { AuthorizationSubject, SignedGrant } from './authorization.js';
2
- export type WorkloadState = 'CREATED' | 'READY' | 'CLAIMED' | 'RUNNING' | 'CHECKPOINTED' | 'RECOVERING' | 'CANCELLATION_REQUESTED' | 'SUCCEEDED' | 'FAILED' | 'CANCELLED' | 'TIMED_OUT' | 'DEAD_LETTER';
2
+ /** Whether a runtime can run Durable Work: `supported` here, `requires-server` only through a configured `feltdb-server`, or `unsupported`. */
3
+ export type DurableWorkSupport = 'supported' | 'requires-server' | 'unsupported';
4
+ export type WorkloadState = 'CREATED' | 'READY' | 'CLAIMED' | 'RUNNING' | 'CHECKPOINTED' | 'RECOVERING' | 'CANCELLATION_REQUESTED' | 'SUCCEEDED' | 'FAILED' | 'CANCELLED' | 'TIMED_OUT' | 'DEAD_LETTER' | 'AWAITING_APPROVAL' | 'REJECTED';
5
+ /** Who may decide work admitted with `approval`. Presence on admission is the requirement; a decider also needs a `workload:approve` grant. */
6
+ export interface WorkloadApprovalPolicy {
7
+ approver_kinds: Array<'human' | 'service'>; /** When non-empty, only these subjects may decide. The requester never may. */
8
+ approvers?: AuthorizationSubject[];
9
+ }
10
+ export interface WorkloadApprovalDecision {
11
+ outcome: 'approved' | 'rejected';
12
+ decided_by: AuthorizationSubject;
13
+ decided_at: number;
14
+ reason?: string;
15
+ grant_id: string;
16
+ input_hash: string;
17
+ }
18
+ export interface WorkloadApproval {
19
+ policy: {
20
+ approver_kinds: Array<'human' | 'service'>;
21
+ approvers: AuthorizationSubject[];
22
+ };
23
+ decision?: WorkloadApprovalDecision;
24
+ }
3
25
  export interface WorkloadRetryPolicy {
4
26
  max_attempts: number;
5
27
  initial_delay_ms: number;
@@ -28,7 +50,8 @@ export interface CreateWorkloadInput {
28
50
  required_state?: WorkloadState;
29
51
  }>; /** Unix seconds before which no worker may claim this workload. Omit for work that is claimable as soon as it is READY. */
30
52
  not_before?: number;
31
- created_at?: number;
53
+ created_at?: number; /** Require an authorized approval before the work can be claimed. */
54
+ approval?: WorkloadApprovalPolicy;
32
55
  }
33
56
  export interface Workload {
34
57
  workload_id: string;
@@ -46,8 +69,9 @@ export interface Workload {
46
69
  current_claim?: WorkloadClaim;
47
70
  execution_history: unknown[];
48
71
  attempts: unknown[];
49
- checkpoints: unknown[];
72
+ checkpoints: WorkloadCheckpoint[];
50
73
  result?: WorkloadResult;
74
+ approval?: WorkloadApproval;
51
75
  }
52
76
  export interface WorkloadClaim {
53
77
  claim_id: string;
@@ -69,11 +93,39 @@ export interface WorkloadResult {
69
93
  produced_by: string;
70
94
  created_at: number;
71
95
  }
96
+ export interface WorkloadCheckpoint {
97
+ checkpoint_id: string;
98
+ workload_id: string;
99
+ attempt_id: string;
100
+ sequence: number;
101
+ state: unknown;
102
+ state_hash: string;
103
+ created_at: number;
104
+ produced_by: string;
105
+ }
106
+ /** What a fenced worker may read: its input and every committed checkpoint, including those of lost attempts. */
107
+ export interface WorkloadExecutionContext {
108
+ workload_id: string;
109
+ attempt_id: string;
110
+ worker_id: string;
111
+ capabilities: string[];
112
+ connection_scopes: string[];
113
+ secret_references: string[];
114
+ expires_at: number;
115
+ fencing_token: number;
116
+ input: unknown;
117
+ checkpoints: WorkloadCheckpoint[];
118
+ }
72
119
  export declare class WorkloadClient {
73
120
  private baseUrl;
74
121
  private fetcher;
75
122
  constructor(baseUrl?: string, fetcher?: typeof fetch);
76
- private json;
123
+ /**
124
+ * Refusals are `FeltDBServiceError`s carrying the authority's code, status and body (`details` reads its details). A transport failure on a
125
+ * write is `COMMIT_OUTCOME_UNKNOWN`: the report may have landed, so retry the same report (same fence, result id
126
+ * and output), which the authority replays, rather than a different one.
127
+ */
128
+ protected json<T>(path: string, init?: RequestInit): Promise<T>;
77
129
  create(input: CreateWorkloadInput): Promise<Workload>;
78
130
  list(applicationId: string): Promise<{
79
131
  workloads: Workload[];
@@ -92,12 +144,40 @@ export declare class WorkloadClient {
92
144
  state: WorkloadState;
93
145
  }>;
94
146
  confirmCancelled(id: string, fence: unknown): Promise<void>;
95
- executionContext(id: string, input: unknown): Promise<unknown>;
147
+ executionContext(id: string, input: unknown): Promise<WorkloadExecutionContext>;
96
148
  cancel(id: string, grant: SignedGrant): Promise<{
97
149
  state: WorkloadState;
98
150
  }>;
99
- retry(id: string, grant: SignedGrant): Promise<void>;
151
+ /** Approve work awaiting approval as the authenticated caller, who must be the grant's subject; `input_hash` is the input that was reviewed. */
152
+ approve(id: string, input: {
153
+ grant: SignedGrant;
154
+ input_hash: string;
155
+ reason?: string;
156
+ }): Promise<{
157
+ decision: WorkloadApprovalDecision;
158
+ state: WorkloadState;
159
+ }>;
160
+ /** Reject work awaiting approval; `reason` is required. A rejection is final. */
161
+ reject(id: string, input: {
162
+ grant: SignedGrant;
163
+ input_hash: string;
164
+ reason: string;
165
+ }): Promise<{
166
+ decision: WorkloadApprovalDecision;
167
+ state: WorkloadState;
168
+ }>;
169
+ retry(id: string, grant: SignedGrant, reason?: string): Promise<void>;
100
170
  history(id: string): Promise<unknown>;
101
171
  result(id: string): Promise<WorkloadResult | undefined>;
102
172
  }
173
+ /**
174
+ * `db.workloads` on a runtime with no Durable Work authority (memory, local file, browser). Durable Work is the server's admission, claim,
175
+ * fencing, checkpoint, approval and recovery machinery; the embedded database does not reimplement it, so every operation refuses the same
176
+ * way, before any request is made: `CONTRACT_UNSUPPORTED`, never a transport failure, with `details` naming how to configure a server.
177
+ */
178
+ export declare class UnsupportedWorkloadClient extends WorkloadClient {
179
+ private readonly runtime;
180
+ constructor(runtime: string);
181
+ protected json<T>(path: string, init?: RequestInit): Promise<T>;
182
+ }
103
183
  //# sourceMappingURL=workload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workload.d.ts","sourceRoot":"","sources":["../src/workload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workload.d.ts","sourceRoot":"","sources":["../src/workload.ts"],"names":[],"mappings":"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"}
package/dist/workload.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { FeltDBErrorCode, FeltDBServiceError } from './error-codes.js';
1
2
  export class WorkloadClient {
2
3
  baseUrl;
3
4
  fetcher;
@@ -5,8 +6,32 @@ export class WorkloadClient {
5
6
  this.baseUrl = baseUrl;
6
7
  this.fetcher = fetcher;
7
8
  }
8
- async json(path, init) { const response = await this.fetcher(`${this.baseUrl}${path}`, { credentials: 'include', headers: { 'content-type': 'application/json', ...(init?.headers || {}) }, ...init }); const value = response.status === 204 ? undefined : await response.json(); if (!response.ok)
9
- throw new Error(value?.error || `Workload request failed (${response.status})`); return value; }
9
+ /**
10
+ * Refusals are `FeltDBServiceError`s carrying the authority's code, status and body (`details` reads its details). A transport failure on a
11
+ * write is `COMMIT_OUTCOME_UNKNOWN`: the report may have landed, so retry the same report (same fence, result id
12
+ * and output), which the authority replays, rather than a different one.
13
+ */
14
+ async json(path, init) {
15
+ let response;
16
+ try {
17
+ response = await this.fetcher(`${this.baseUrl}${path}`, { credentials: 'include', headers: { 'content-type': 'application/json', ...(init?.headers || {}) }, ...init });
18
+ }
19
+ catch (error) {
20
+ const mutating = (init?.method ?? 'GET').toUpperCase() !== 'GET';
21
+ throw new FeltDBServiceError(error instanceof Error ? error.message : String(error), mutating ? FeltDBErrorCode.COMMIT_OUTCOME_UNKNOWN : FeltDBErrorCode.SERVICE_UNAVAILABLE);
22
+ }
23
+ const text = response.status === 204 ? '' : await response.text();
24
+ let value;
25
+ try {
26
+ value = text ? JSON.parse(text) : undefined;
27
+ }
28
+ catch {
29
+ value = { message: text };
30
+ }
31
+ if (!response.ok)
32
+ throw new FeltDBServiceError(value?.error || value?.message || `Workload request failed (${response.status})`, value?.code || value?.error || `HTTP_${response.status}`, value?.request_id, response.status, value && typeof value === 'object' && !Array.isArray(value) ? value : undefined);
33
+ return value;
34
+ }
10
35
  create(input) { return this.json('/v1/workloads', { method: 'POST', body: JSON.stringify({ ...input, created_at: input.created_at || Math.floor(Date.now() / 1000) }) }); }
11
36
  list(applicationId) { return this.json(`/v1/workloads?application_id=${encodeURIComponent(applicationId)}`); }
12
37
  inspect(id) { return this.json(`/v1/workloads/${encodeURIComponent(id)}`); }
@@ -19,7 +44,30 @@ export class WorkloadClient {
19
44
  confirmCancelled(id, fence) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/cancelled`, { method: 'POST', body: JSON.stringify(fence) }); }
20
45
  executionContext(id, input) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/context`, { method: 'POST', body: JSON.stringify(input) }); }
21
46
  cancel(id, grant) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/cancel`, { method: 'POST', body: JSON.stringify({ grant }) }); }
22
- retry(id, grant) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/retry`, { method: 'POST', body: JSON.stringify({ grant }) }); }
47
+ /** Approve work awaiting approval as the authenticated caller, who must be the grant's subject; `input_hash` is the input that was reviewed. */
48
+ approve(id, input) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/approve`, { method: 'POST', body: JSON.stringify(input) }); }
49
+ /** Reject work awaiting approval; `reason` is required. A rejection is final. */
50
+ reject(id, input) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/reject`, { method: 'POST', body: JSON.stringify(input) }); }
51
+ retry(id, grant, reason) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/retry`, { method: 'POST', body: JSON.stringify(reason === undefined ? { grant } : { grant, reason }) }); }
23
52
  history(id) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/history`); }
24
53
  result(id) { return this.json(`/v1/workloads/${encodeURIComponent(id)}/result`); }
25
54
  }
55
+ /**
56
+ * `db.workloads` on a runtime with no Durable Work authority (memory, local file, browser). Durable Work is the server's admission, claim,
57
+ * fencing, checkpoint, approval and recovery machinery; the embedded database does not reimplement it, so every operation refuses the same
58
+ * way, before any request is made: `CONTRACT_UNSUPPORTED`, never a transport failure, with `details` naming how to configure a server.
59
+ */
60
+ export class UnsupportedWorkloadClient extends WorkloadClient {
61
+ runtime;
62
+ constructor(runtime) {
63
+ super();
64
+ this.runtime = runtime;
65
+ }
66
+ async json(path, init) {
67
+ const operation = `${(init?.method ?? 'GET').toUpperCase()} ${path.split('?')[0]}`;
68
+ const details = { operation, runtime: this.runtime, requires: 'feltdb-server', support: 'requires-server',
69
+ remediation: 'Run a local server (`feltdb-server --data <path> --auth`) or use a managed FeltDB deployment, then connect with createFeltDB({ url, token }). Check db.capabilities().durableWork before calling db.workloads.' };
70
+ const message = `CONTRACT_UNSUPPORTED: Durable Work (${operation}) requires a feltdb-server; this ${this.runtime} runtime does not provide it. ${details.remediation}`;
71
+ throw new FeltDBServiceError(message, FeltDBErrorCode.CONTRACT_UNSUPPORTED, undefined, undefined, { code: FeltDBErrorCode.CONTRACT_UNSUPPORTED, message, details });
72
+ }
73
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-connection.d.ts","sourceRoot":"","sources":["../../src/workspace/workspace-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-connection.d.ts","sourceRoot":"","sources":["../../src/workspace/workspace-connection.ts"],"names":[],"mappings":"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"}
@@ -64,10 +64,21 @@ export async function resolvePairingCode(pairingCode, source = {}) {
64
64
  else {
65
65
  const discoveryEndpoint = (source.endpoint || DEFAULT_PAIRING_DISCOVERY_ENDPOINT).replace(/\/$/, '');
66
66
  let response;
67
+ const discover = () => fetch(`${discoveryEndpoint}/api/v1/development/pairing/${encodeURIComponent(pairingCode)}`, {
68
+ headers: { Accept: 'application/json' },
69
+ });
67
70
  try {
68
- response = await fetch(`${discoveryEndpoint}/api/v1/development/pairing/${encodeURIComponent(pairingCode)}`, {
69
- headers: { Accept: 'application/json' },
70
- });
71
+ try {
72
+ response = await discover();
73
+ }
74
+ catch (error) {
75
+ // A development server restarts on the same port, and the pooled keep-alive socket to its predecessor is
76
+ // reset on first use. Discovery is an idempotent GET, so one retry on a fresh connection is safe.
77
+ const code = error?.cause?.code;
78
+ if (code !== 'ECONNRESET' && code !== 'UND_ERR_SOCKET')
79
+ throw error;
80
+ response = await discover();
81
+ }
71
82
  }
72
83
  catch (error) {
73
84
  throw new Error(`Pairing discovery unavailable at ${discoveryEndpoint}: ${error instanceof Error ? error.message : String(error)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@feltdb/core",
3
- "version": "0.13.0",
3
+ "version": "0.16.0",
4
4
  "description": "FeltDB Core - Application-facing database with Browser, Local, and Server runtimes. Durable state, reactive APIs.",
5
5
  "license": "MIT",
6
6
  "type": "module",