@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
@@ -129,7 +129,9 @@ export class Collection {
129
129
  * Returns cached results (live-updated).
130
130
  */
131
131
  async all() {
132
- await this.refresh();
132
+ // A read the authority refused, or could not answer, is raised typed --
133
+ // never answered from whatever this handle last cached.
134
+ await this.refresh({ strict: true });
133
135
  return [...this.cache];
134
136
  }
135
137
  /** List records through the canonical application collection API. */
@@ -177,6 +179,9 @@ export class Collection {
177
179
  const page = await this.db.authority_query({
178
180
  collection: this.name,
179
181
  where: entries.map(([field, eq]) => ({ field, eq })),
182
+ // The authority requires an ordering. Every match has the same value of an equality-filtered field, so
183
+ // ordering by it is a no-op that the authority completes with its record-id tie-breaker: stable pages.
184
+ orderBy: [{ field: entries[0][0], direction: 'asc' }],
180
185
  limit: 100,
181
186
  ...(cursor ? { cursor } : {}),
182
187
  });
@@ -375,7 +380,7 @@ export class Collection {
375
380
  const key = `${this.name}:${id}`;
376
381
  const result = await this.db.get(key);
377
382
  if (!result.success) {
378
- throw new Error(result.error || `Failed to read record ${id}`);
383
+ throw runtimeFailure(result, result.error || `Failed to read record ${id}`);
379
384
  }
380
385
  if (result.data) {
381
386
  return JSON.parse(result.data);
@@ -421,7 +426,7 @@ export class Collection {
421
426
  const stored = { ...data, id: recordId, __version: 1 };
422
427
  const result = await this.db.insert(key, JSON.stringify(stored));
423
428
  if (!result.success) {
424
- throw new Error(`Insert failed: ${result.error}`);
429
+ throw runtimeFailure(result, `Insert failed: ${result.error}`);
425
430
  }
426
431
  await this.publish('insert', key, String(recordId), null, stored);
427
432
  return String(recordId);
@@ -614,9 +619,11 @@ export class Collection {
614
619
  const result = await this.db.delete(key);
615
620
  if (!result.success) {
616
621
  const message = `Delete failed: ${result.error}`;
617
- throw /not found/i.test(String(result.error))
618
- ? new FeltDBServiceError(message, FeltDBErrorCode.NOT_FOUND)
619
- : new Error(message);
622
+ throw result.cause
623
+ ? runtimeFailure(result, message)
624
+ : /not found/i.test(String(result.error))
625
+ ? new FeltDBServiceError(message, FeltDBErrorCode.NOT_FOUND)
626
+ : new Error(message);
620
627
  }
621
628
  // Update indexes - find and remove the deleted record
622
629
  const deleted = await this.get(id);
@@ -686,7 +693,7 @@ export class Collection {
686
693
  throw error;
687
694
  const existing = await this.db.get(key);
688
695
  if (!existing.success) {
689
- throw new Error(existing.error || `could not read the record that won ${key}`);
696
+ throw runtimeFailure(existing, existing.error || `could not read the record that won ${key}`);
690
697
  }
691
698
  if (!existing.data) {
692
699
  throw new Error(`${key} was created and then removed while resolving a conditional create`);
@@ -914,7 +921,7 @@ export class Collection {
914
921
  /**
915
922
  * Refresh data from the database and notify subscribers.
916
923
  */
917
- async refresh() {
924
+ async refresh(options = {}) {
918
925
  try {
919
926
  // The revision is read *before* the query, so it can only ever be older
920
927
  // than the data it ends up labelling. The reverse ordering would let a
@@ -980,14 +987,32 @@ export class Collection {
980
987
  }
981
988
  }
982
989
  else if (!result.success) {
990
+ if (options.strict)
991
+ throw runtimeFailure(result, result.error || `Failed to read ${this.name}`);
983
992
  console.error('Query failed:', result.error);
984
993
  }
985
994
  }
986
995
  catch (err) {
996
+ if (options.strict)
997
+ throw err;
987
998
  console.error('Refresh error:', err);
988
999
  }
989
1000
  }
990
1001
  }
1002
+ /**
1003
+ * The error a failed runtime result is raised as. A remote runtime attaches
1004
+ * the authority's typed refusal (`cause`): its stable code, status, request id
1005
+ * and body travel on, so an unauthenticated, cross-application or interrupted
1006
+ * operation is never a bare `Error` with the code only in its message.
1007
+ */
1008
+ function runtimeFailure(result, message) {
1009
+ const cause = result.cause;
1010
+ if (!(cause instanceof FeltDBServiceError))
1011
+ return new Error(message);
1012
+ const error = new FeltDBServiceError(message, cause.code, cause.requestId, cause.status, cause.body);
1013
+ error.cause = cause;
1014
+ return error;
1015
+ }
991
1016
  /**
992
1017
  * Relationship helper for loading related data.
993
1018
  */
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schema": "feltdb.build-identity.v2",
3
3
  "package": "create-feltdb",
4
- "version": "0.13.0",
4
+ "version": "0.16.0",
5
5
  "git": {
6
- "sha1": "b67312f73ea647ffea6f87337303c170d40d541d",
6
+ "sha1": "2433b73d6e643c8476de7e3364350af0230f47be",
7
7
  "dirty": false
8
8
  },
9
9
  "path_in_vcs": "tools/create-feltdb",
10
- "source_digest": "sha256:7435af3423598673fcce76eb77444ee1e160f39f3fd83a0a788517e315bd3444",
10
+ "source_digest": "sha256:8bc6dd69a986ac9db9b709570851ebbdf8cdd9ecf2f61e60d21bb8b5c5f1ed9e",
11
11
  "inputs": [
12
12
  "Cargo.lock",
13
13
  "Cargo.toml",
@@ -20,7 +20,15 @@
20
20
  "tools/cli",
21
21
  "tools/create-feltdb"
22
22
  ],
23
- "files": 776,
23
+ "files": 792,
24
+ "release": {
25
+ "tag": "v0.16.0",
26
+ "ref": "main",
27
+ "origin_main": {
28
+ "sha1": "2433b73d6e643c8476de7e3364350af0230f47be",
29
+ "contains_commit": true
30
+ }
31
+ },
24
32
  "build": {
25
33
  "command": "npm run build",
26
34
  "node": "v24.9.0"
@@ -226,7 +226,7 @@ Deployment Target (Explicit):
226
226
 
227
227
  --managed Managed FeltDB runtime
228
228
  Best for: Production without operating servers
229
- Requires VITE_FELTDB_URL and VITE_FELTDB_API_KEY
229
+ Requires VITE_FELTDB_URL; server-side FELTDB_TOKEN only
230
230
 
231
231
  Options:
232
232
  --browser Explicit: Browser runtime with IndexedDB
@@ -1259,10 +1259,9 @@ main().catch(console.error);
1259
1259
  # FeltDB Server URL (self-hosted or managed runtime)
1260
1260
  VITE_FELTDB_URL=http://localhost:7700
1261
1261
 
1262
- # Optional credential for authenticated remote browser access
1263
- VITE_FELTDB_TOKEN=
1264
- # Legacy alias accepted by older tooling
1265
- VITE_FELTDB_API_KEY=
1262
+ # Browser code authenticates users with db.auth.signIn() (end-user sessions).
1263
+ # Never put a FeltDB service key (fdb_live_…) in a VITE_ variable: Vite
1264
+ # inlines every VITE_* value into the browser bundle.
1266
1265
 
1267
1266
  # Managed example: https://runtime.your-app.feltdb.com
1268
1267
  VITE_FELTDB_MANAGED_URL=
@@ -1508,7 +1507,7 @@ npm run feltdb:import
1508
1507
 
1509
1508
  ### Self-Hosted
1510
1509
  - \`VITE_FELTDB_URL\`: Docker container URL (default: http://localhost:7700)
1511
- - \`VITE_FELTDB_API_KEY\`: API token for authentication
1510
+ - \`FELTDB_TOKEN\`: API key for server-side code only (never a \`VITE_\` variable; browsers use \`db.auth.signIn()\`)
1512
1511
  - \`FELTDB_IMAGE\`: Docker image to use (optional override)
1513
1512
  - \`DOCKER_NETWORK\`: Custom Docker network (optional)
1514
1513
 
@@ -1701,7 +1700,6 @@ Configuration is in \`feltdb.config.json\`:
1701
1700
  Create a \`.env.local\` file (copy from \`.env.example\`):
1702
1701
 
1703
1702
  \`\`\`
1704
- VITE_FELTDB_API_KEY=your_api_key_here
1705
1703
  VITE_FELTDB_URL=http://localhost:7700
1706
1704
  VITE_FELTDB_MANAGED_URL=https://api.feltdb.com
1707
1705
  VITE_FELTDB_MANAGED_APPLICATION_ID=your_application_id
@@ -1,5 +1,39 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
+ /** Deploy-time key: publish and promote contracts of one application. Never the running app's. */
4
+ export const MANAGED_CONTROL_SCOPES = Object.freeze([
5
+ 'application:read', 'application:write', 'application:revision:create',
6
+ 'application:revision:read', 'application:revision:promote',
7
+ 'application:environment:read', 'application:environment:write',
8
+ 'connections:read',
9
+ ]);
10
+ /**
11
+ * The runtime (data) key a server-side application needs to read and write its state, and
12
+ * nothing more (docs: public-docs/managed-production.md, "Key types").
13
+ */
14
+ export const MANAGED_RUNTIME_SCOPES_MINIMAL = Object.freeze([
15
+ 'application:read', 'application:revision:read', 'state:read', 'state:write',
16
+ ]);
17
+ /** What a starter's runtime key holds: state plus events, workflows, agents and capabilities. */
18
+ export const MANAGED_RUNTIME_SCOPES_DEFAULT = Object.freeze([
19
+ ...MANAGED_RUNTIME_SCOPES_MINIMAL, 'events:read', 'workflows:run', 'agents:run', 'capabilities:run',
20
+ ]);
21
+ /**
22
+ * Scopes from the command line: `minimal`, `default`, `control`, or a comma-separated list.
23
+ * Whether each scope may be granted is the account service's decision; it never issues a
24
+ * scope the signed-in person does not hold.
25
+ */
26
+ export function resolveManagedScopes(value) {
27
+ const presets = { minimal: MANAGED_RUNTIME_SCOPES_MINIMAL, default: MANAGED_RUNTIME_SCOPES_DEFAULT, control: MANAGED_CONTROL_SCOPES };
28
+ const scopes = presets[value.trim()] ?? value.split(',').map(scope => scope.trim()).filter(Boolean);
29
+ if (!scopes.length)
30
+ throw new Error('Name at least one scope: minimal, default, control, or a comma-separated list');
31
+ for (const scope of scopes) {
32
+ if (scope === '*' || !/^[a-z][a-z_-]*(?::[a-z_-]+)+$/.test(scope))
33
+ throw new Error(`"${scope}" is not a scope (expected e.g. state:read). Wildcard keys are operator keys and never belong to an application.`);
34
+ }
35
+ return [...new Set(scopes)];
36
+ }
3
37
  function loadEnvironment(file) {
4
38
  const values = {};
5
39
  for (const raw of fs.readFileSync(file, 'utf8').split(/\r?\n/)) {
@@ -21,9 +55,8 @@ async function responseJson(response, fallback) {
21
55
  throw new Error(String(body.error || body.message || fallback));
22
56
  return body;
23
57
  }
24
- export async function configureManagedAccount(options) {
58
+ export async function signInManagedAccount(options) {
25
59
  const accountUrl = (options.accountUrl || process.env.FELTDB_MANAGED_ACCOUNT_URL || 'https://feltdb.com').replace(/\/$/, '');
26
- const apiUrl = (options.apiUrl || process.env.FELTDB_MANAGED_URL || 'https://api.feltdb.com').replace(/\/$/, '');
27
60
  const request = options.fetchImpl || fetch;
28
61
  const authenticated = await request(`${accountUrl}/api/auth`, {
29
62
  method: 'POST', headers: { 'Content-Type': 'application/json' },
@@ -33,11 +66,37 @@ export async function configureManagedAccount(options) {
33
66
  // fetch follows the feltdb.com -> www.feltdb.com redirect. Reuse the final
34
67
  // origin so Node does not strip the explicit Cookie header on later
35
68
  // cross-origin redirects.
36
- const sessionOrigin = authenticated.url ? new URL(authenticated.url).origin : accountUrl;
69
+ const origin = authenticated.url ? new URL(authenticated.url).origin : accountUrl;
37
70
  const cookie = authenticated.headers.get('set-cookie')?.split(';', 1)[0];
38
71
  if (!cookie)
39
72
  throw new Error('Managed account service did not return a secure session');
40
- const headers = { Cookie: cookie, 'Content-Type': 'application/json' };
73
+ return { origin, headers: { Cookie: cookie, 'Content-Type': 'application/json' }, request };
74
+ }
75
+ /** Mint a key bound to one application. The secret is returned once and never stored here. */
76
+ export async function createManagedKey(session, input) {
77
+ const created = await responseJson(await session.request(`${session.origin}/api/keys`, {
78
+ method: 'POST', headers: session.headers,
79
+ body: JSON.stringify({ id: input.id, namespace: input.namespace, application_id: input.applicationId, scopes: [...input.scopes] }),
80
+ }), `Could not create the managed key ${input.id}`);
81
+ if (!created.secret)
82
+ throw new Error(`Managed key service did not return the credential for ${input.id}`);
83
+ return { id: String(created.id ?? input.id), secret: String(created.secret), scopes: Array.isArray(created.scopes) ? created.scopes : [...input.scopes] };
84
+ }
85
+ /** Keys of one application: ids, scopes and state, never secrets. */
86
+ export async function listManagedKeys(session, applicationId) {
87
+ const listed = await responseJson(await session.request(`${session.origin}/api/keys?application_id=${encodeURIComponent(applicationId)}`, { headers: session.headers }), 'Could not list managed keys');
88
+ return Array.isArray(listed) ? listed : Array.isArray(listed.tokens) ? listed.tokens : [];
89
+ }
90
+ export async function revokeManagedKey(session, keyId) {
91
+ const response = await session.request(`${session.origin}/api/keys/${encodeURIComponent(keyId)}`, { method: 'DELETE', headers: session.headers });
92
+ if (!response.ok)
93
+ await responseJson(response, `Could not revoke the managed key ${keyId}`);
94
+ }
95
+ export async function configureManagedAccount(options) {
96
+ const apiUrl = (options.apiUrl || process.env.FELTDB_MANAGED_URL || 'https://api.feltdb.com').replace(/\/$/, '');
97
+ const session = await signInManagedAccount(options);
98
+ const { request, headers } = session;
99
+ const sessionOrigin = session.origin;
41
100
  const tenants = await responseJson(await request(`${sessionOrigin}/api/tenants`, { headers }), 'Could not load managed workspaces');
42
101
  let tenant = Array.isArray(tenants) ? tenants[0] : undefined;
43
102
  if (!tenant) {
@@ -58,37 +117,14 @@ export async function configureManagedAccount(options) {
58
117
  // Provision through the account origin that issued the human session. The
59
118
  // resulting key is still used against apiUrl, but setup must not require a
60
119
  // browser session to be trusted by every managed data-plane hostname.
61
- const controlKey = await responseJson(await request(`${sessionOrigin}/api/keys`, {
62
- method: 'POST', headers,
63
- body: JSON.stringify({
64
- id: `${options.applicationName}-control`,
65
- namespace: application.namespace || options.namespace,
66
- application_id: application.id,
67
- scopes: [
68
- 'application:read', 'application:write', 'application:revision:create',
69
- 'application:revision:read', 'application:revision:promote',
70
- 'application:environment:read', 'application:environment:write',
71
- 'connections:read',
72
- ],
73
- }),
74
- }), 'Could not create the managed control-plane key');
75
- if (!controlKey.secret)
76
- throw new Error('Managed key service did not return the control-plane credential');
77
- const dataKey = await responseJson(await request(`${sessionOrigin}/api/keys`, {
78
- method: 'POST', headers,
79
- body: JSON.stringify({
80
- id: `${options.applicationName}-runtime`,
81
- namespace: application.namespace || options.namespace,
82
- application_id: application.id,
83
- scopes: [
84
- 'application:read', 'application:revision:read',
85
- 'state:read', 'state:write', 'events:read',
86
- 'workflows:run', 'agents:run', 'capabilities:run',
87
- ],
88
- }),
89
- }), 'Could not create the managed application data key');
90
- if (!dataKey.secret)
91
- throw new Error('Managed key service did not return the application data credential');
120
+ const namespace = application.namespace || options.namespace;
121
+ const controlKey = await createManagedKey(session, { id: `${options.applicationName}-control`, namespace, applicationId: application.id, scopes: MANAGED_CONTROL_SCOPES })
122
+ .catch(error => { throw new Error(`Could not create the managed control-plane key: ${error.message}`); });
123
+ const dataKey = await createManagedKey(session, { id: `${options.applicationName}-runtime`, namespace, applicationId: application.id, scopes: options.runtimeScopes ?? MANAGED_RUNTIME_SCOPES_DEFAULT })
124
+ .catch(async (error) => {
125
+ await revokeManagedKey(session, controlKey.id).catch(() => undefined);
126
+ throw new Error(`Could not create the managed application data key: ${error.message}`);
127
+ });
92
128
  try {
93
129
  await responseJson(await request(`${apiUrl}/api/applications/${encodeURIComponent(application.id)}/revisions`, {
94
130
  headers: { Authorization: `Bearer ${controlKey.secret}` },
@@ -149,3 +185,25 @@ export async function finalizeManagedProvisioning(options) {
149
185
  fs.writeFileSync(managedFile, `${JSON.stringify({ ...managed, revisionId: published.revisionId }, null, 2)}\n`, { mode: 0o600 });
150
186
  return { revisionId: published.revisionId };
151
187
  }
188
+ /**
189
+ * Set `name=value` in an env file, creating it with mode 600 or replacing that one line,
190
+ * and leave the file at mode 600. Used to put a newly minted key where the server process
191
+ * (or a deploy script) reads it, without the key ever being printed.
192
+ */
193
+ export function setEnvironmentValue(file, name, value) {
194
+ if (!/^[A-Z][A-Z0-9_]*$/.test(name))
195
+ throw new Error(`${name} is not an environment variable name`);
196
+ if (/^VITE_|^NEXT_PUBLIC_|^PUBLIC_|^REACT_APP_|^EXPO_PUBLIC_/.test(name))
197
+ throw new Error(`${name} would be inlined into browser code; a FeltDB key belongs in a server-side variable such as FELTDB_TOKEN`);
198
+ const lines = fs.existsSync(file) ? fs.readFileSync(file, 'utf8').split(/\r?\n/) : [];
199
+ const index = lines.findIndex(line => line.startsWith(`${name}=`));
200
+ if (index >= 0)
201
+ lines[index] = `${name}=${value}`;
202
+ else {
203
+ if (lines.length && lines[lines.length - 1] === '')
204
+ lines.pop();
205
+ lines.push(`${name}=${value}`, '');
206
+ }
207
+ fs.writeFileSync(file, lines.join('\n'), { mode: 0o600 });
208
+ fs.chmodSync(file, 0o600);
209
+ }
@@ -1,4 +1,4 @@
1
1
  // One release train keeps generated applications installable. The repository
2
2
  // validation script checks these values against every workspace manifest.
3
- export const FELTDB_PACKAGE_VERSION = '0.13.0';
3
+ export const FELTDB_PACKAGE_VERSION = '0.16.0';
4
4
  export const feltdbPackageRange = `^${FELTDB_PACKAGE_VERSION}`;