@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.
- package/dist/agent-runtime.d.ts +64 -2
- package/dist/agent-runtime.d.ts.map +1 -1
- package/dist/agent-runtime.js +121 -11
- package/dist/agent-state.d.ts +68 -0
- package/dist/agent-state.d.ts.map +1 -1
- package/dist/agent-state.js +210 -12
- package/dist/agent.d.ts +10 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +10 -1
- package/dist/build-identity.json +12 -4
- package/dist/cli/commands.js +214 -10
- package/dist/cli/publish-engine.js +116 -16
- package/dist/collection.d.ts +3 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +33 -8
- package/dist/create/build-identity.json +12 -4
- package/dist/create/cli.js +1 -1
- package/dist/create/create.js +4 -6
- package/dist/create/managed-account.js +93 -35
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/Cargo.lock +8 -511
- package/dist/create/server-source/Cargo.toml +2 -13
- package/dist/create/server-source/crates/feltdb-client/Cargo.toml +1 -1
- package/dist/create/server-source/crates/feltdb-server/Cargo.toml +1 -1
- package/dist/create/server-source/crates/feltdb-server/README.md +6 -1
- package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +9 -1
- package/dist/create/server-source/crates/feltdb-server/src/auth.rs +85 -25
- package/dist/create/server-source/crates/feltdb-server/src/backup.rs +4 -0
- package/dist/create/server-source/crates/feltdb-server/src/console_accounts.rs +1009 -0
- package/dist/create/server-source/crates/feltdb-server/src/control_authorization.rs +441 -0
- package/dist/create/server-source/crates/feltdb-server/src/identity.rs +68 -6
- package/dist/create/server-source/crates/feltdb-server/src/key_management.rs +355 -23
- package/dist/create/server-source/crates/feltdb-server/src/lib.rs +3 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +1134 -96
- package/dist/create/server-source/crates/feltdb-server/src/redaction.rs +208 -0
- package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +198 -19
- package/dist/create/server-source/crates/feltdb-server/tests/transaction_precondition_contract.rs +403 -0
- package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +1 -1
- package/dist/db.d.ts +75 -10
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +168 -29
- package/dist/deployment.d.ts +19 -0
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +38 -2
- package/dist/embedded-query.d.ts.map +1 -1
- package/dist/embedded-query.js +5 -4
- package/dist/embedded-transaction.d.ts +8 -4
- package/dist/embedded-transaction.d.ts.map +1 -1
- package/dist/embedded-transaction.js +55 -19
- package/dist/error-codes.d.ts +36 -2
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +50 -3
- package/dist/feltdb.d.ts +7 -0
- package/dist/feltdb.d.ts.map +1 -1
- package/dist/file-db.d.ts +27 -0
- package/dist/file-db.d.ts.map +1 -1
- package/dist/file-db.js +145 -7
- package/dist/http-client.d.ts +11 -3
- package/dist/http-client.d.ts.map +1 -1
- package/dist/http-client.js +27 -14
- package/dist/http-db.d.ts +43 -1
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +287 -59
- package/dist/index.js +1 -1
- package/dist/local-state-lock.d.ts +34 -0
- package/dist/local-state-lock.d.ts.map +1 -0
- package/dist/local-state-lock.js +225 -0
- package/dist/managed-recovery.d.ts +6 -0
- package/dist/managed-recovery.d.ts.map +1 -1
- package/dist/managed-recovery.js +9 -0
- package/dist/reactive-graph.d.ts +0 -3
- package/dist/reactive-graph.d.ts.map +1 -1
- package/dist/reactive-graph.js +11 -1
- package/dist/runtime-registry.d.ts +7 -2
- package/dist/runtime-registry.d.ts.map +1 -1
- package/dist/runtime-registry.js +2 -2
- package/dist/studio/components/index.js +1 -1
- package/dist/studio/{components-BSGmHfif.js → components-CJmzntBi.js} +2 -1
- package/dist/studio/index.js +1 -1
- package/dist/studio-app/assets/{feltdb_wasm-3hDngl1h.js → feltdb_wasm-DtybUY0q.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-DsgIUwaB.wasm +0 -0
- package/dist/studio-app/assets/index-C4OffsZl.js +37 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/transaction.d.ts +27 -11
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +20 -14
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/dist/wasm/package.json +1 -1
- package/dist/workload.d.ts +86 -6
- package/dist/workload.d.ts.map +1 -1
- package/dist/workload.js +51 -3
- package/dist/workspace/workspace-connection.d.ts.map +1 -1
- package/dist/workspace/workspace-connection.js +14 -3
- package/package.json +1 -1
- package/dist/create/server-source/crates/feltdb/Cargo.lock +0 -175
- package/dist/create/server-source/crates/feltdb/Cargo.toml +0 -102
- package/dist/create/server-source/crates/feltdb/LICENSE +0 -21
- package/dist/create/server-source/crates/feltdb/README.md +0 -75
- package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +0 -370
- package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +0 -589
- package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +0 -247
- package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +0 -440
- package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +0 -275
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +0 -381
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +0 -467
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +0 -489
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +0 -281
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +0 -606
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +0 -531
- package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +0 -462
- package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +0 -505
- package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +0 -484
- package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +0 -758
- package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +0 -421
- package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +0 -329
- package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +0 -1705
- package/dist/create/server-source/crates/feltdb/src/acquisition.rs +0 -286
- package/dist/create/server-source/crates/feltdb/src/admission.rs +0 -185
- package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +0 -507
- package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +0 -539
- package/dist/create/server-source/crates/feltdb/src/agent_state.rs +0 -320
- package/dist/create/server-source/crates/feltdb/src/agent_transition_contract.rs +0 -1545
- package/dist/create/server-source/crates/feltdb/src/analytics.rs +0 -521
- package/dist/create/server-source/crates/feltdb/src/application.rs +0 -2674
- package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +0 -1070
- package/dist/create/server-source/crates/feltdb/src/authority.rs +0 -479
- package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +0 -847
- package/dist/create/server-source/crates/feltdb/src/authorization.rs +0 -1030
- package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +0 -1122
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority-client.rs +0 -32
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority.rs +0 -19
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +0 -1474
- package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +0 -8
- package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +0 -418
- package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +0 -482
- package/dist/create/server-source/crates/feltdb/src/capability.rs +0 -903
- package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +0 -263
- package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -77
- package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +0 -496
- package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +0 -2574
- package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +0 -212
- package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +0 -422
- package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +0 -445
- package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +0 -465
- package/dist/create/server-source/crates/feltdb/src/convergence.rs +0 -634
- package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +0 -427
- package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +0 -376
- package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +0 -365
- package/dist/create/server-source/crates/feltdb/src/cron.rs +0 -294
- package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +0 -483
- package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +0 -477
- package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +0 -1003
- package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +0 -1334
- package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +0 -368
- package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +0 -231
- package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +0 -482
- package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +0 -203
- package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +0 -317
- package/dist/create/server-source/crates/feltdb/src/equality_index.rs +0 -595
- package/dist/create/server-source/crates/feltdb/src/execution.rs +0 -426
- package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +0 -214
- package/dist/create/server-source/crates/feltdb/src/indexing.rs +0 -776
- package/dist/create/server-source/crates/feltdb/src/lib.rs +0 -7274
- package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +0 -234
- package/dist/create/server-source/crates/feltdb/src/materialization.rs +0 -184
- package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -266
- package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +0 -310
- package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +0 -736
- package/dist/create/server-source/crates/feltdb/src/observability.rs +0 -379
- package/dist/create/server-source/crates/feltdb/src/operation.rs +0 -290
- package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +0 -439
- package/dist/create/server-source/crates/feltdb/src/operation_log.rs +0 -349
- package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +0 -332
- package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +0 -718
- package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +0 -487
- package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +0 -166
- package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +0 -289
- package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +0 -566
- package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +0 -3391
- package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +0 -203
- package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +0 -261
- package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +0 -502
- package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +0 -216
- package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +0 -303
- package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +0 -323
- package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +0 -531
- package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +0 -406
- package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +0 -436
- package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +0 -387
- package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +0 -378
- package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +0 -359
- package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +0 -372
- package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +0 -404
- package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +0 -376
- package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +0 -461
- package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +0 -2125
- package/dist/create/server-source/crates/feltdb/src/production_api.rs +0 -418
- package/dist/create/server-source/crates/feltdb/src/provenance.rs +0 -207
- package/dist/create/server-source/crates/feltdb/src/query_execution_diagnostics.rs +0 -126
- package/dist/create/server-source/crates/feltdb/src/query_performance.rs +0 -218
- package/dist/create/server-source/crates/feltdb/src/read_basis.rs +0 -257
- package/dist/create/server-source/crates/feltdb/src/references.rs +0 -404
- package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +0 -401
- package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +0 -501
- package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +0 -680
- package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +0 -163
- package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +0 -133
- package/dist/create/server-source/crates/feltdb/src/routing.rs +0 -409
- package/dist/create/server-source/crates/feltdb/src/semantic_decision.rs +0 -2029
- package/dist/create/server-source/crates/feltdb/src/semantic_query.rs +0 -599
- package/dist/create/server-source/crates/feltdb/src/sharding.rs +0 -549
- package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +0 -516
- package/dist/create/server-source/crates/feltdb/src/state_contract.rs +0 -5894
- package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +0 -222
- package/dist/create/server-source/crates/feltdb/src/state_facade.rs +0 -320
- package/dist/create/server-source/crates/feltdb/src/state_hash.rs +0 -291
- package/dist/create/server-source/crates/feltdb/src/state_model.rs +0 -4158
- package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +0 -379
- package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +0 -673
- package/dist/create/server-source/crates/feltdb/src/storage.rs +0 -273
- package/dist/create/server-source/crates/feltdb/src/submission.rs +0 -471
- package/dist/create/server-source/crates/feltdb/src/sync.rs +0 -495
- package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +0 -822
- package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +0 -433
- package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +0 -462
- package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +0 -965
- package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +0 -1120
- package/dist/create/server-source/crates/feltdb/src/transactions.rs +0 -643
- package/dist/create/server-source/crates/feltdb/src/trigger.rs +0 -390
- package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +0 -749
- package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +0 -708
- package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +0 -1133
- package/dist/create/server-source/crates/feltdb/src/workflow.rs +0 -713
- package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +0 -510
- package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +0 -354
- package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +0 -594
- package/dist/create/server-source/crates/feltdb/src/workload.rs +0 -2886
- package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +0 -456
- package/dist/create/server-source/crates/feltdb/tests/agent_state_native.rs +0 -1188
- package/dist/create/server-source/crates/feltdb/tests/agent_transition_contract_conformance.rs +0 -2884
- package/dist/create/server-source/crates/feltdb/tests/authority_process.rs +0 -297
- package/dist/create/server-source/crates/feltdb/tests/authority_transaction_identity.rs +0 -534
- package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +0 -132
- package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +0 -299
- package/dist/create/server-source/crates/feltdb/tests/common/mod.rs +0 -96
- package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +0 -272
- package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +0 -467
- package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +0 -309
- package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +0 -445
- package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +0 -518
- package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +0 -392
- package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +0 -850
- package/dist/create/server-source/crates/feltdb/tests/fixtures/agent_transition_corpus.json +0 -23340
- package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +0 -1916
- package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +0 -1878
- package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +0 -1862
- package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +0 -123
- package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +0 -299
- package/dist/create/server-source/crates/feltdb/tests/local_process_ownership.rs +0 -69
- package/dist/create/server-source/crates/feltdb/tests/managed_incident_regression.rs +0 -191
- package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +0 -278
- package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +0 -234
- package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +0 -947
- package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +0 -404
- package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +0 -916
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +0 -1045
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +0 -347
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +0 -361
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +0 -330
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +0 -93
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +0 -622
- package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +0 -517
- package/dist/create/server-source/crates/feltdb/tests/production_certification.rs +0 -1153
- package/dist/create/server-source/crates/feltdb/tests/production_contract.rs +0 -771
- package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +0 -1383
- package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +0 -868
- package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +0 -221
- package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +0 -417
- package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +0 -338
- package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +0 -1039
- package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +0 -739
- package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +0 -452
- package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +0 -81
- package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +0 -438
- package/dist/create/server-source/crates/feltdb/tests/semantic_decision.rs +0 -1165
- package/dist/create/server-source/crates/feltdb/tests/semantic_query.rs +0 -767
- package/dist/create/server-source/crates/feltdb/tests/semantic_query_contract.rs +0 -363
- package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +0 -1799
- package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +0 -1316
- package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +0 -358
- package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +0 -365
- package/dist/create/server-source/crates/feltdb/tests/state_ref_authority.rs +0 -918
- package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +0 -299
- package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +0 -328
- package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +0 -255
- package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +0 -249
- package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +0 -994
- package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +0 -484
- package/dist/studio-app/assets/feltdb_wasm_bg-CFQT4gCy.wasm +0 -0
- package/dist/studio-app/assets/index-Dql1hS5m.js +0 -30
package/dist/collection.js
CHANGED
|
@@ -129,7 +129,9 @@ export class Collection {
|
|
|
129
129
|
* Returns cached results (live-updated).
|
|
130
130
|
*/
|
|
131
131
|
async all() {
|
|
132
|
-
|
|
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
|
|
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
|
|
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
|
|
618
|
-
?
|
|
619
|
-
:
|
|
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
|
|
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.
|
|
4
|
+
"version": "0.16.0",
|
|
5
5
|
"git": {
|
|
6
|
-
"sha1": "
|
|
6
|
+
"sha1": "2433b73d6e643c8476de7e3364350af0230f47be",
|
|
7
7
|
"dirty": false
|
|
8
8
|
},
|
|
9
9
|
"path_in_vcs": "tools/create-feltdb",
|
|
10
|
-
"source_digest": "sha256:
|
|
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":
|
|
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"
|
package/dist/create/cli.js
CHANGED
|
@@ -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
|
|
229
|
+
Requires VITE_FELTDB_URL; server-side FELTDB_TOKEN only
|
|
230
230
|
|
|
231
231
|
Options:
|
|
232
232
|
--browser Explicit: Browser runtime with IndexedDB
|
package/dist/create/create.js
CHANGED
|
@@ -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
|
-
#
|
|
1263
|
-
|
|
1264
|
-
#
|
|
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
|
-
- \`
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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.
|
|
3
|
+
export const FELTDB_PACKAGE_VERSION = '0.16.0';
|
|
4
4
|
export const feltdbPackageRange = `^${FELTDB_PACKAGE_VERSION}`;
|