@feltdb/core 0.15.0 → 0.16.1

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 (248) hide show
  1. package/dist/agent-state.d.ts +20 -0
  2. package/dist/agent-state.d.ts.map +1 -1
  3. package/dist/agent-state.js +36 -0
  4. package/dist/build-identity.json +12 -4
  5. package/dist/cli/commands.js +187 -4
  6. package/dist/cli/publish-engine.js +116 -16
  7. package/dist/collection.d.ts.map +1 -1
  8. package/dist/collection.js +20 -2
  9. package/dist/create/build-identity.json +12 -4
  10. package/dist/create/managed-account.js +93 -35
  11. package/dist/create/package-versions.js +1 -1
  12. package/dist/create/server-source/Cargo.lock +6 -509
  13. package/dist/create/server-source/Cargo.toml +2 -13
  14. package/dist/create/server-source/crates/feltdb-client/Cargo.toml +1 -1
  15. package/dist/create/server-source/crates/feltdb-server/Cargo.toml +1 -1
  16. package/dist/create/server-source/crates/feltdb-server/src/main.rs +356 -24
  17. package/dist/create/server-source/crates/feltdb-server/tests/rust_client.rs +10 -1
  18. package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +1 -1
  19. package/dist/db.d.ts +11 -1
  20. package/dist/db.d.ts.map +1 -1
  21. package/dist/db.js +15 -2
  22. package/dist/error-codes.d.ts +5 -0
  23. package/dist/error-codes.d.ts.map +1 -1
  24. package/dist/error-codes.js +9 -1
  25. package/dist/http-db.d.ts +16 -0
  26. package/dist/http-db.d.ts.map +1 -1
  27. package/dist/http-db.js +36 -6
  28. package/dist/managed-recovery.d.ts +6 -0
  29. package/dist/managed-recovery.d.ts.map +1 -1
  30. package/dist/managed-recovery.js +9 -0
  31. package/dist/studio-app/assets/{feltdb_wasm-BjM1ylL3.js → feltdb_wasm-BUIxCuTR.js} +1 -1
  32. package/dist/studio-app/assets/feltdb_wasm_bg-C3D6y6DK.wasm +0 -0
  33. package/dist/studio-app/assets/index-BhXYAhgS.js +37 -0
  34. package/dist/studio-app/index.html +1 -1
  35. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  36. package/dist/wasm/package.json +1 -1
  37. package/dist/workload.d.ts +55 -3
  38. package/dist/workload.d.ts.map +1 -1
  39. package/dist/workload.js +23 -0
  40. package/dist/workspace/workspace-connection.d.ts.map +1 -1
  41. package/dist/workspace/workspace-connection.js +14 -3
  42. package/package.json +1 -1
  43. package/dist/create/server-source/crates/feltdb/Cargo.lock +0 -175
  44. package/dist/create/server-source/crates/feltdb/Cargo.toml +0 -102
  45. package/dist/create/server-source/crates/feltdb/LICENSE +0 -21
  46. package/dist/create/server-source/crates/feltdb/README.md +0 -75
  47. package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +0 -370
  48. package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +0 -589
  49. package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +0 -247
  50. package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +0 -440
  51. package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +0 -275
  52. package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +0 -381
  53. package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +0 -467
  54. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +0 -489
  55. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +0 -281
  56. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +0 -606
  57. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +0 -531
  58. package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +0 -462
  59. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +0 -505
  60. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +0 -484
  61. package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +0 -758
  62. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +0 -421
  63. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +0 -329
  64. package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +0 -1705
  65. package/dist/create/server-source/crates/feltdb/src/acquisition.rs +0 -286
  66. package/dist/create/server-source/crates/feltdb/src/admission.rs +0 -185
  67. package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +0 -507
  68. package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +0 -539
  69. package/dist/create/server-source/crates/feltdb/src/agent_state.rs +0 -320
  70. package/dist/create/server-source/crates/feltdb/src/agent_transition_contract.rs +0 -1545
  71. package/dist/create/server-source/crates/feltdb/src/analytics.rs +0 -521
  72. package/dist/create/server-source/crates/feltdb/src/application.rs +0 -2674
  73. package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +0 -1070
  74. package/dist/create/server-source/crates/feltdb/src/authority.rs +0 -479
  75. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +0 -847
  76. package/dist/create/server-source/crates/feltdb/src/authorization.rs +0 -1030
  77. package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +0 -1122
  78. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority-client.rs +0 -32
  79. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority.rs +0 -19
  80. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +0 -1474
  81. package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +0 -8
  82. package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +0 -418
  83. package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +0 -482
  84. package/dist/create/server-source/crates/feltdb/src/capability.rs +0 -903
  85. package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +0 -263
  86. package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -77
  87. package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +0 -496
  88. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +0 -2574
  89. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +0 -212
  90. package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +0 -422
  91. package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +0 -445
  92. package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +0 -465
  93. package/dist/create/server-source/crates/feltdb/src/convergence.rs +0 -634
  94. package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +0 -427
  95. package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +0 -376
  96. package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +0 -365
  97. package/dist/create/server-source/crates/feltdb/src/cron.rs +0 -294
  98. package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +0 -483
  99. package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +0 -477
  100. package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +0 -1003
  101. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +0 -1334
  102. package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +0 -368
  103. package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +0 -231
  104. package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +0 -482
  105. package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +0 -203
  106. package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +0 -317
  107. package/dist/create/server-source/crates/feltdb/src/equality_index.rs +0 -595
  108. package/dist/create/server-source/crates/feltdb/src/execution.rs +0 -426
  109. package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +0 -214
  110. package/dist/create/server-source/crates/feltdb/src/indexing.rs +0 -776
  111. package/dist/create/server-source/crates/feltdb/src/lib.rs +0 -7365
  112. package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +0 -234
  113. package/dist/create/server-source/crates/feltdb/src/materialization.rs +0 -184
  114. package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -266
  115. package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +0 -310
  116. package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +0 -736
  117. package/dist/create/server-source/crates/feltdb/src/observability.rs +0 -379
  118. package/dist/create/server-source/crates/feltdb/src/operation.rs +0 -290
  119. package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +0 -439
  120. package/dist/create/server-source/crates/feltdb/src/operation_log.rs +0 -349
  121. package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +0 -332
  122. package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +0 -718
  123. package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +0 -487
  124. package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +0 -166
  125. package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +0 -289
  126. package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +0 -566
  127. package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +0 -3391
  128. package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +0 -203
  129. package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +0 -261
  130. package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +0 -502
  131. package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +0 -216
  132. package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +0 -303
  133. package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +0 -323
  134. package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +0 -531
  135. package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +0 -406
  136. package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +0 -436
  137. package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +0 -387
  138. package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +0 -378
  139. package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +0 -359
  140. package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +0 -372
  141. package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +0 -404
  142. package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +0 -376
  143. package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +0 -461
  144. package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +0 -2125
  145. package/dist/create/server-source/crates/feltdb/src/production_api.rs +0 -418
  146. package/dist/create/server-source/crates/feltdb/src/provenance.rs +0 -207
  147. package/dist/create/server-source/crates/feltdb/src/query_execution_diagnostics.rs +0 -126
  148. package/dist/create/server-source/crates/feltdb/src/query_performance.rs +0 -218
  149. package/dist/create/server-source/crates/feltdb/src/read_basis.rs +0 -257
  150. package/dist/create/server-source/crates/feltdb/src/references.rs +0 -404
  151. package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +0 -401
  152. package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +0 -501
  153. package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +0 -680
  154. package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +0 -163
  155. package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +0 -133
  156. package/dist/create/server-source/crates/feltdb/src/routing.rs +0 -409
  157. package/dist/create/server-source/crates/feltdb/src/semantic_decision.rs +0 -2029
  158. package/dist/create/server-source/crates/feltdb/src/semantic_query.rs +0 -599
  159. package/dist/create/server-source/crates/feltdb/src/sharding.rs +0 -549
  160. package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +0 -516
  161. package/dist/create/server-source/crates/feltdb/src/state_contract.rs +0 -6003
  162. package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +0 -222
  163. package/dist/create/server-source/crates/feltdb/src/state_facade.rs +0 -320
  164. package/dist/create/server-source/crates/feltdb/src/state_hash.rs +0 -291
  165. package/dist/create/server-source/crates/feltdb/src/state_model.rs +0 -4158
  166. package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +0 -379
  167. package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +0 -673
  168. package/dist/create/server-source/crates/feltdb/src/storage.rs +0 -273
  169. package/dist/create/server-source/crates/feltdb/src/submission.rs +0 -471
  170. package/dist/create/server-source/crates/feltdb/src/sync.rs +0 -495
  171. package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +0 -822
  172. package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +0 -433
  173. package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +0 -462
  174. package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +0 -965
  175. package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +0 -1120
  176. package/dist/create/server-source/crates/feltdb/src/transactions.rs +0 -643
  177. package/dist/create/server-source/crates/feltdb/src/trigger.rs +0 -390
  178. package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +0 -749
  179. package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +0 -708
  180. package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +0 -1269
  181. package/dist/create/server-source/crates/feltdb/src/workflow.rs +0 -713
  182. package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +0 -510
  183. package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +0 -354
  184. package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +0 -594
  185. package/dist/create/server-source/crates/feltdb/src/workload.rs +0 -4222
  186. package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +0 -456
  187. package/dist/create/server-source/crates/feltdb/tests/agent_state_native.rs +0 -1188
  188. package/dist/create/server-source/crates/feltdb/tests/agent_transition_contract_conformance.rs +0 -2884
  189. package/dist/create/server-source/crates/feltdb/tests/authority_process.rs +0 -297
  190. package/dist/create/server-source/crates/feltdb/tests/authority_transaction_identity.rs +0 -534
  191. package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +0 -132
  192. package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +0 -299
  193. package/dist/create/server-source/crates/feltdb/tests/common/mod.rs +0 -96
  194. package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +0 -272
  195. package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +0 -467
  196. package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +0 -309
  197. package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +0 -445
  198. package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +0 -518
  199. package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +0 -392
  200. package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +0 -850
  201. package/dist/create/server-source/crates/feltdb/tests/fixtures/agent_transition_corpus.json +0 -23340
  202. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +0 -1916
  203. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +0 -1878
  204. package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +0 -1862
  205. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +0 -123
  206. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +0 -299
  207. package/dist/create/server-source/crates/feltdb/tests/local_process_ownership.rs +0 -69
  208. package/dist/create/server-source/crates/feltdb/tests/managed_incident_regression.rs +0 -191
  209. package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +0 -278
  210. package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +0 -234
  211. package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +0 -947
  212. package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +0 -404
  213. package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +0 -916
  214. package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +0 -1045
  215. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +0 -347
  216. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +0 -361
  217. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +0 -330
  218. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +0 -93
  219. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +0 -622
  220. package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +0 -517
  221. package/dist/create/server-source/crates/feltdb/tests/production_certification.rs +0 -1153
  222. package/dist/create/server-source/crates/feltdb/tests/production_contract.rs +0 -771
  223. package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +0 -1383
  224. package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +0 -868
  225. package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +0 -221
  226. package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +0 -417
  227. package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +0 -338
  228. package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +0 -1039
  229. package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +0 -739
  230. package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +0 -452
  231. package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +0 -81
  232. package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +0 -438
  233. package/dist/create/server-source/crates/feltdb/tests/semantic_decision.rs +0 -1165
  234. package/dist/create/server-source/crates/feltdb/tests/semantic_query.rs +0 -767
  235. package/dist/create/server-source/crates/feltdb/tests/semantic_query_contract.rs +0 -363
  236. package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +0 -1799
  237. package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +0 -1316
  238. package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +0 -358
  239. package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +0 -365
  240. package/dist/create/server-source/crates/feltdb/tests/state_ref_authority.rs +0 -918
  241. package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +0 -299
  242. package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +0 -328
  243. package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +0 -255
  244. package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +0 -249
  245. package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +0 -994
  246. package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +0 -484
  247. package/dist/studio-app/assets/feltdb_wasm_bg-TseJn2Ax.wasm +0 -0
  248. package/dist/studio-app/assets/index-1wd0uKua.js +0 -30
@@ -27,6 +27,7 @@
27
27
  * Contract and guarantees: docs/reference/agent-state.md.
28
28
  */
29
29
  import type { AuthorityQueryPage, AuthorityQueryRequest } from './http-db.js';
30
+ import type { ManifestCollection } from './application-manifest.js';
30
31
  import type { IndexConfig } from './index-types.js';
31
32
  import { type AtomicTransactionOptions, type AtomicTransactionResult, type AtomicTransactionScope } from './transaction.js';
32
33
  export declare const FELTDB_AGENT_TASK_COLLECTION = "_feltdb.AgentTask";
@@ -39,6 +40,25 @@ export declare const AGENT_STATE_INDEXES: ReadonlyArray<{
39
40
  collection: string;
40
41
  index: IndexConfig;
41
42
  }>;
43
+ /**
44
+ * The application-contract entries for agent state.
45
+ *
46
+ * An application-scoped authority (Managed FeltDB) stores only collections and
47
+ * fields its promoted contract declares, so an application that opens agent
48
+ * state there declares these entries in its contract beside its own, unchanged:
49
+ * `{ collections: [...mine, ...FELTDB_AGENT_STATE_CONTRACT.collections],
50
+ * indexes: [...myIndexes, ...FELTDB_AGENT_STATE_CONTRACT.indexes] }`.
51
+ * Policies stay the application's decision. The record shapes are FeltDB's and
52
+ * move with it; a test checks that every field agent state writes is declared.
53
+ */
54
+ export declare const FELTDB_AGENT_STATE_CONTRACT: {
55
+ readonly collections: readonly ManifestCollection[];
56
+ readonly indexes: readonly {
57
+ name: string;
58
+ collection: string;
59
+ fields: string[];
60
+ }[];
61
+ };
42
62
  export type AgentTaskStatus = 'ready' | 'running' | 'blocked' | 'completed' | 'cancelled';
43
63
  export type AgentStateErrorCode = 'INVALID_REQUEST' | 'NOT_FOUND' | 'VERSION_CONFLICT' | 'INVALID_TRANSITION' | 'OWNERSHIP_CONFLICT' | 'HANDOFF_CLAIMED' | 'HANDOFF_STALE' | 'SCOPE_REQUIRED' | 'BUDGET_EXCEEDED' | 'CONTRACT_UNSUPPORTED';
44
64
  /** Every refusal. A refused write committed nothing. */
@@ -1 +1 @@
1
- {"version":3,"file":"agent-state.d.ts","sourceRoot":"","sources":["../src/agent-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-state.d.ts","sourceRoot":"","sources":["../src/agent-state.ts"],"names":[],"mappings":"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"}
@@ -125,6 +125,42 @@ export const AGENT_STATE_INDEXES = [
125
125
  },
126
126
  },
127
127
  ];
128
+ /**
129
+ * The application-contract entries for agent state.
130
+ *
131
+ * An application-scoped authority (Managed FeltDB) stores only collections and
132
+ * fields its promoted contract declares, so an application that opens agent
133
+ * state there declares these entries in its contract beside its own, unchanged:
134
+ * `{ collections: [...mine, ...FELTDB_AGENT_STATE_CONTRACT.collections],
135
+ * indexes: [...myIndexes, ...FELTDB_AGENT_STATE_CONTRACT.indexes] }`.
136
+ * Policies stay the application's decision. The record shapes are FeltDB's and
137
+ * move with it; a test checks that every field agent state writes is declared.
138
+ */
139
+ export const FELTDB_AGENT_STATE_CONTRACT = (() => {
140
+ const field = (spec) => {
141
+ const [name, type] = spec.split(':');
142
+ return name === 'id'
143
+ ? { name, type: 'text', required: true, nullable: false }
144
+ : { name, type, required: false, nullable: true };
145
+ };
146
+ const collection = (name, fields) => ({ name, fields: fields.trim().split(/\s+/).map(field) });
147
+ return Object.freeze({
148
+ collections: Object.freeze([
149
+ collection(FELTDB_AGENT_TASK_COLLECTION, `id:text task_id:text objective:text scope:json status:text owner:text
150
+ checkpoint_version:integer pending_work:json constraints:json created_at:text created_by:text updated_at:text
151
+ updated_by:text ${TASK_PROJECT_FIELD}:text ${TASK_STATUS_PROJECT_FIELD}:text`),
152
+ collection(FELTDB_AGENT_CHECKPOINT_COLLECTION, `id:text checkpoint_id:text task_id:text version:integer status:text
153
+ summary:text completed:json completed_work:json pending_work:json constraints:json decisions:json evidence:json
154
+ actor:text execution:json created_at:text`),
155
+ collection(FELTDB_AGENT_MEMORY_COLLECTION, `id:text memory_id:text scope:json scope_key:text kind:text content:json
156
+ source:json status:text supersedes:text superseded_by:text invalidated_reason:text created_at:text updated_at:text`),
157
+ collection(FELTDB_AGENT_HANDOFF_COLLECTION, `id:text handoff_id:text task_id:text checkpoint_version:integer from:text
158
+ to:text note:text memory_refs:json evidence_refs:json artifact_refs:json status:text lease:json claim:json
159
+ accepted_by:text accepted_at:text created_at:text updated_at:text`),
160
+ ]),
161
+ indexes: Object.freeze(AGENT_STATE_INDEXES.map(({ collection, index }) => ({ name: index.name, collection, fields: [...(index.fields ?? [])] }))),
162
+ });
163
+ })();
128
164
  const TASK_STATUSES = ['ready', 'running', 'blocked', 'completed', 'cancelled'];
129
165
  const TERMINAL = ['completed', 'cancelled'];
130
166
  const HANDOFF_STATUSES = ['open', 'claimed', 'accepted'];
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schema": "feltdb.build-identity.v2",
3
3
  "package": "@feltdb/core",
4
- "version": "0.15.0",
4
+ "version": "0.16.1",
5
5
  "git": {
6
- "sha1": "5ad54972a9e31a5459cadbb471428111624ec9c6",
6
+ "sha1": "dd9fe9449e38054dee71cc9e6e5ea929d25026ee",
7
7
  "dirty": false
8
8
  },
9
9
  "path_in_vcs": "packages/core",
10
- "source_digest": "sha256:01efc5737aae1fef37c976e5841df3bb9b615d034f31d27b038f7fd4ca202428",
10
+ "source_digest": "sha256:f5f01ce7dad3501af8542326bdbe3cabfd4859b1e2a31851f6be419988360ce0",
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": 789,
23
+ "files": 790,
24
+ "release": {
25
+ "tag": "v0.16.1",
26
+ "ref": "main",
27
+ "origin_main": {
28
+ "sha1": "dd9fe9449e38054dee71cc9e6e5ea929d25026ee",
29
+ "contains_commit": true
30
+ }
31
+ },
24
32
  "build": {
25
33
  "command": "npm run build",
26
34
  "node": "v24.9.0"
@@ -17,14 +17,14 @@ import { applicationIsRunning, applicationUrlCandidate, detectApplication, disco
17
17
  import { resolveApplicationLifecycle, startManagedApplication, waitForManagedApplication } from './application-lifecycle.js';
18
18
  import { createDevelopmentSession, developmentSessionEnvironment, developmentSessionSummary, developmentStudioArguments, transitionDevelopmentSession } from './development-session.js';
19
19
  import { openApplication, openStudio } from './browser-opening.js';
20
- import { publishApplication } from './publish-engine.js';
20
+ import { publishApplication, readApplicationContract } from './publish-engine.js';
21
21
  import { applyFlowProposalAtomic, assertProposalSourcePlan, describeProposal, loadLocalDevelopmentContract, repositoryContext, reviewFlowProposal, syncGeneratedSource } from './source-sync.js';
22
22
  import { configureAiModel, generateConfiguredFlowProposal, publicAiModelConfiguration } from './ai-model-config.js';
23
23
  import { proposalService } from './proposal-client.js';
24
24
  import { resolveManagedAuthorityEnvironment } from './managed-environment.js';
25
25
  import { readManagedProjectState } from './managed-project.js';
26
26
  import { resolveCanonicalStudioArtifact } from './studio-artifact.js';
27
- import { configureManagedAccount, finalizeManagedProvisioning } from '../create/index.js';
27
+ import { configureManagedAccount, createManagedKey, finalizeManagedProvisioning, listManagedKeys, resolveManagedScopes, revokeManagedKey, setEnvironmentValue, signInManagedAccount } from '../create/index.js';
28
28
  function loadProjectEnvironment(file = path.resolve('.env.local')) {
29
29
  if (!fs.existsSync(file))
30
30
  return;
@@ -85,6 +85,8 @@ export async function handleCommand(command, args) {
85
85
  return handleKeys(args);
86
86
  case 'init-managed':
87
87
  return handleInitManaged(args);
88
+ case 'managed':
89
+ return handleManaged(args);
88
90
  case 'connect':
89
91
  return handleConnect(args);
90
92
  case 'status':
@@ -641,6 +643,7 @@ async function handleManagedPublish(args) {
641
643
  yes: args.includes('--yes'),
642
644
  approveDestructive: args.includes('--approve-destructive-changes') || args.includes('--allow-destructive'),
643
645
  noBuild: args.includes('--no-build'),
646
+ contract: valueAfter('--contract'),
644
647
  confirm,
645
648
  });
646
649
  }
@@ -947,6 +950,9 @@ export function ensureManagedProjectContract(projectDir) {
947
950
  return { ...created, configPath, flowPath };
948
951
  }
949
952
  async function handleInitManaged(args) {
953
+ const contract = flagValue(args, '--contract');
954
+ if (contract)
955
+ return initManagedWithContract(args, contract);
950
956
  loadProjectEnvironment();
951
957
  const projectDir = process.cwd();
952
958
  const initialized = ensureManagedProjectContract(projectDir);
@@ -999,10 +1005,11 @@ async function handleInitManaged(args) {
999
1005
  // Prompt for credentials
1000
1006
  console.log('☁️ Setting up managed FeltDB for this project\n');
1001
1007
  const prompt = await import('node:readline/promises').then(m => m.createInterface({ input: process.stdin, output: process.stdout }));
1002
- const email = args[0] || await prompt.question('Email: ');
1008
+ const [emailArgument, passwordArgument] = positionalArguments(args);
1009
+ const email = emailArgument || await prompt.question('Email: ');
1003
1010
  if (!email)
1004
1011
  throw new Error('Email is required');
1005
- const password = args[1] || await promptSecret('Password (8+ characters): ');
1012
+ const password = passwordArgument || await promptSecret('Password (8+ characters): ');
1006
1013
  if (password.length < 8)
1007
1014
  throw new Error('Password must be at least 8 characters');
1008
1015
  prompt.close();
@@ -1062,6 +1069,169 @@ async function handleInitManaged(args) {
1062
1069
  throw error;
1063
1070
  }
1064
1071
  }
1072
+ /** The value after `--flag`, if the flag is given. */
1073
+ function flagValue(args, flag) {
1074
+ const index = args.indexOf(flag);
1075
+ if (index < 0)
1076
+ return undefined;
1077
+ const value = args[index + 1];
1078
+ if (!value || value.startsWith('--'))
1079
+ throw new Error(`${flag} needs a value`);
1080
+ return value;
1081
+ }
1082
+ const VALUE_FLAGS = new Set(['--contract', '--runtime-scopes', '--name', '--scopes', '--application', '--env-var', '--save-to', '--environment', '--message']);
1083
+ /** Arguments that are neither flags nor flag values. */
1084
+ function positionalArguments(args) {
1085
+ return args.filter((value, index) => !value.startsWith('--') && !VALUE_FLAGS.has(args[index - 1] ?? ''));
1086
+ }
1087
+ /**
1088
+ * The managed account's e-mail and password: positional arguments, else
1089
+ * FELTDB_MANAGED_EMAIL and FELTDB_MANAGED_PASSWORD (non-interactive), else a prompt
1090
+ * (the password is never echoed).
1091
+ */
1092
+ async function managedAccountCredentials(args) {
1093
+ const [emailArgument, passwordArgument] = positionalArguments(args);
1094
+ let email = emailArgument || process.env.FELTDB_MANAGED_EMAIL || '';
1095
+ if (!email && process.stdin.isTTY) {
1096
+ const prompt = (await import('node:readline/promises')).createInterface({ input: process.stdin, output: process.stdout });
1097
+ try {
1098
+ email = await prompt.question('Email: ');
1099
+ }
1100
+ finally {
1101
+ prompt.close();
1102
+ }
1103
+ }
1104
+ const password = passwordArgument || process.env.FELTDB_MANAGED_PASSWORD || await promptSecret('Password (8+ characters): ');
1105
+ if (!email || password.length < 8) {
1106
+ throw new Error('Managed sign-in needs your FeltDB account e-mail and an 8+ character password. Non-interactively, set FELTDB_MANAGED_EMAIL and FELTDB_MANAGED_PASSWORD.');
1107
+ }
1108
+ return { email, password };
1109
+ }
1110
+ /**
1111
+ * `feltdb init-managed --contract <file>`: a project whose state contract is a JSON file
1112
+ * (generated by FeltKit, for one) rather than feltdb.flow. Creates or reuses the managed
1113
+ * application named after the project, mints its control key and a runtime key with the
1114
+ * scopes asked for (`minimal` unless `--runtime-scopes` says otherwise), writes `.env.local`
1115
+ * (mode 600) and `.feltdb/managed.json`, then publishes and promotes the contract and checks
1116
+ * that the runtime key resolves it. Re-running it on a configured project publishes again.
1117
+ */
1118
+ async function initManagedWithContract(args, contractFile) {
1119
+ const projectDir = process.cwd();
1120
+ const contractPath = path.resolve(projectDir, contractFile);
1121
+ readApplicationContract(contractPath);
1122
+ const runtimeScopes = resolveManagedScopes(flagValue(args, '--runtime-scopes') ?? 'minimal');
1123
+ const existing = readManagedProjectState(projectDir);
1124
+ if (existing.applicationId) {
1125
+ console.log(`✓ Already configured for managed FeltDB: application ${existing.applicationId}, ${existing.url}`);
1126
+ console.log(' Its keys are unchanged. Publishing the contract again.\n');
1127
+ }
1128
+ else {
1129
+ if (fs.existsSync(path.join(projectDir, '.env.local'))) {
1130
+ throw new Error('.env.local exists. Managed setup writes the project\'s FeltDB settings and keys there; move it aside first, so nothing in it is replaced.');
1131
+ }
1132
+ const packageFile = path.join(projectDir, 'package.json');
1133
+ const packageName = fs.existsSync(packageFile) ? String(JSON.parse(fs.readFileSync(packageFile, 'utf8')).name ?? '') : '';
1134
+ const applicationName = flagValue(args, '--name') || packageName.replace(/^@[^/]+\//, '') || path.basename(projectDir);
1135
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(applicationName))
1136
+ throw new Error(`"${applicationName}" is not an application name (lowercase letters, digits, dashes); pass --name`);
1137
+ const { email, password } = await managedAccountCredentials(args);
1138
+ console.log('\nProvisioning managed application...\n');
1139
+ const managed = await configureManagedAccount({ projectDir, applicationName, namespace: applicationName, email, password, runtimeScopes });
1140
+ console.log(`✓ Managed application: ${managed.application.name} (${managed.application.id})`);
1141
+ console.log(`✓ Runtime key scopes: ${runtimeScopes.join(', ')}`);
1142
+ console.log('✓ Settings and keys written to .env.local (mode 600) and .feltdb/managed.json. Never commit either.\n');
1143
+ }
1144
+ const result = await publishApplication({
1145
+ cwd: projectDir,
1146
+ contract: contractFile,
1147
+ yes: args.includes('--yes') || !process.stdin.isTTY,
1148
+ // A new application has no active contract to break: its first contract (policies
1149
+ // included) is approved as `feltdb init-managed` approves a first feltdb.flow. A
1150
+ // configured application's changes still need --approve-destructive-changes.
1151
+ approveDestructive: args.includes('--approve-destructive-changes') || !existing.applicationId,
1152
+ confirm: async (question) => {
1153
+ const prompt = (await import('node:readline/promises')).createInterface({ input: process.stdin, output: process.stdout });
1154
+ try {
1155
+ return !/^(n|no)$/i.test((await prompt.question(`${question} [Y/n] `)).trim());
1156
+ }
1157
+ finally {
1158
+ prompt.close();
1159
+ }
1160
+ },
1161
+ });
1162
+ if (result.status === 'published') {
1163
+ const finalized = await finalizeManagedProvisioning({ projectDir });
1164
+ console.log(`✓ Managed runtime verified at revision ${finalized.revisionId}\n`);
1165
+ }
1166
+ }
1167
+ /** `feltdb managed keys create|list|revoke`: keys of a managed application (not local `feltdb keys`). */
1168
+ async function handleManaged(args) {
1169
+ const [group, action, ...rest] = args;
1170
+ if (group !== 'keys' || !['create', 'list', 'revoke'].includes(action ?? '')) {
1171
+ console.log(`Managed FeltDB keys (an application on the managed service; local keys are \`feltdb keys\`):
1172
+
1173
+ feltdb managed keys create --name <key-id> [--scopes minimal|default|control|<scope,scope>]
1174
+ [--application <app_id>] [--env-var FELTDB_TOKEN] [--save-to .env.local | --stdout]
1175
+ feltdb managed keys list [--application <app_id>]
1176
+ feltdb managed keys revoke <key-id>
1177
+
1178
+ Sign-in: your FeltDB account (prompted; or FELTDB_MANAGED_EMAIL / FELTDB_MANAGED_PASSWORD).
1179
+ The application defaults to the one in .feltdb/managed.json (or FELTDB_APPLICATION_ID).
1180
+ A new key's secret is written to the env file (mode 600), or with --stdout printed as
1181
+ NAME=secret for a pipe into a secret manager. It is never printed to a terminal.`);
1182
+ if (group)
1183
+ process.exitCode = 1;
1184
+ return;
1185
+ }
1186
+ loadProjectEnvironment();
1187
+ const state = readManagedProjectState();
1188
+ const applicationId = flagValue(rest, '--application') || state.applicationId || process.env.FELTDB_APPLICATION_ID;
1189
+ if (!applicationId && action !== 'revoke')
1190
+ throw new Error('Which application? Pass --application <app_id>, or run this in a project set up with `feltdb init-managed`.');
1191
+ // Key ids are the positional arguments here, so credentials come from the environment or a prompt.
1192
+ const session = await signInManagedAccount(await managedAccountCredentials([]));
1193
+ if (action === 'list') {
1194
+ console.log('id\tname\tstate\tscopes');
1195
+ for (const key of await listManagedKeys(session, applicationId)) {
1196
+ const scopes = Array.isArray(key.scopes) ? key.scopes.join(',') : '';
1197
+ console.log(`${String(key.id)}\t${String(key.name ?? '')}\t${key.revoked ? 'revoked' : 'active'}\t${scopes}`);
1198
+ }
1199
+ return;
1200
+ }
1201
+ if (action === 'revoke') {
1202
+ const target = positionalArguments(rest)[0];
1203
+ if (!target)
1204
+ throw new Error('Usage: feltdb managed keys revoke <key-id|key-name>');
1205
+ // The control plane assigns key ids; the name is what `create --name` gave it.
1206
+ const keys = applicationId ? await listManagedKeys(session, applicationId) : [];
1207
+ const byName = keys.filter(key => key.name === target && !key.revoked);
1208
+ if (byName.length > 1)
1209
+ throw new Error(`${byName.length} active keys are named ${target}; revoke one by id (feltdb managed keys list)`);
1210
+ const keyId = keys.some(key => key.id === target) ? target : byName[0] ? String(byName[0].id) : target;
1211
+ await revokeManagedKey(session, keyId);
1212
+ console.log(`✓ Revoked ${target}${keyId !== target ? ` (${keyId})` : ''}. Requests carrying it are now refused with AUTHENTICATION_REQUIRED.`);
1213
+ return;
1214
+ }
1215
+ const id = flagValue(rest, '--name');
1216
+ if (!id)
1217
+ throw new Error('Name the key: --name <key-id> (for example myapp-runtime-2026-10)');
1218
+ const scopes = resolveManagedScopes(flagValue(rest, '--scopes') ?? 'minimal');
1219
+ const envVar = flagValue(rest, '--env-var') ?? (scopes.includes('application:revision:promote') ? 'FELTDB_MANAGED_CONTROL_API_KEY' : 'FELTDB_TOKEN');
1220
+ const toStdout = rest.includes('--stdout');
1221
+ if (toStdout && process.stdout.isTTY)
1222
+ throw new Error('--stdout would show the secret on this terminal. Pipe it into your secret manager instead, or write it to an env file (the default).');
1223
+ const namespace = state.namespace || process.env.FELTDB_NAMESPACE || applicationId;
1224
+ const key = await createManagedKey(session, { id, namespace, applicationId: applicationId, scopes });
1225
+ if (toStdout) {
1226
+ process.stdout.write(`${envVar}=${key.secret}\n`);
1227
+ console.error(`✓ Created ${id} (key id ${key.id}) for ${applicationId}: ${key.scopes.join(', ')}; written to stdout as ${envVar}.`);
1228
+ return;
1229
+ }
1230
+ const envFile = path.resolve(flagValue(rest, '--save-to') ?? '.env.local');
1231
+ setEnvironmentValue(envFile, envVar, key.secret);
1232
+ console.log(`✓ Created ${id} (key id ${key.id}) for ${applicationId}: ${key.scopes.join(', ')}`);
1233
+ console.log(`✓ ${envVar} written to ${path.relative(process.cwd(), envFile) || envFile} (mode 600). Never commit it.`);
1234
+ }
1065
1235
  async function handleExplain(args) {
1066
1236
  const flowRef = args[0];
1067
1237
  if (!flowRef || !flowRef.startsWith('flow://')) {
@@ -2266,7 +2436,9 @@ Commands:
2266
2436
  diff [file] Diff FlowSpec against the last deployed model
2267
2437
  deploy [file] Validate, version, and deploy FlowSpec
2268
2438
  publish [file] Build and publish/update a managed application
2439
+ publish --contract <f> Publish and promote a JSON state contract (no feltdb.flow)
2269
2440
  init-managed Set up managed FeltDB for an existing project
2441
+ managed keys Create, list, or revoke a managed application's keys
2270
2442
  ai Open the canonical interactive local-AI workflow
2271
2443
  ai --dry-run Open an ephemeral preview-only AI session
2272
2444
  ai model show Show the selected local or user-provided model
@@ -2323,6 +2495,16 @@ Managed FeltDB Setup (Existing Projects):
2323
2495
  Prompts for email and password, provisions resources,
2324
2496
  and optionally publishes the initial revision
2325
2497
  feltdb init-managed <email> <password> Non-interactive setup with provided credentials
2498
+ feltdb init-managed --contract feltdb.contract.json [--runtime-scopes minimal] [--name <app>] [--yes]
2499
+ A project whose state contract is a JSON file
2500
+ (e.g. generated by FeltKit): provision, mint a control
2501
+ key and a least-privilege runtime key, publish, verify
2502
+
2503
+ Managed Keys (not the local keys above):
2504
+ feltdb managed keys create --name <id> [--scopes minimal|default|control|<list>]
2505
+ [--env-var FELTDB_TOKEN] [--save-to .env.local | --stdout]
2506
+ feltdb managed keys list
2507
+ feltdb managed keys revoke <id>
2326
2508
 
2327
2509
  Development:
2328
2510
  dev Start development server
@@ -2334,6 +2516,7 @@ Development:
2334
2516
 
2335
2517
  Publish:
2336
2518
  feltdb publish --dry-run Validate and preview without activation
2519
+ feltdb publish --contract feltdb.contract.json --yes Publish a JSON state contract
2337
2520
  feltdb publish --yes Publish to the configured environment
2338
2521
  feltdb publish --status Compare local and active cloud versions
2339
2522
  feltdb publish --environment staging Override the configured environment
@@ -19,25 +19,34 @@ function loadEnv(file) {
19
19
  }
20
20
  return values;
21
21
  }
22
- export function discoverPublishConfiguration(cwd = process.cwd(), environmentOverride) {
22
+ /**
23
+ * Where to publish, from the project's managed setup (`.env.local`, `.feltdb/managed.json`,
24
+ * written by `feltdb init-managed`) or the process environment (CI). A `feltdb.flow` project
25
+ * needs `feltdb.config.json`; a contract (`contract`) does not, and its tenant is the
26
+ * application's own, read from the draft.
27
+ */
28
+ export function discoverPublishConfiguration(cwd = process.cwd(), environmentOverride, options = {}) {
23
29
  const configFile = path.join(cwd, 'feltdb.config.json');
24
- if (!fs.existsSync(configFile))
30
+ if (!options.contract && !fs.existsSync(configFile))
25
31
  throw new Error('feltdb.config.json is required for publish');
26
- const project = JSON.parse(fs.readFileSync(configFile, 'utf8'));
32
+ const project = fs.existsSync(configFile) ? JSON.parse(fs.readFileSync(configFile, 'utf8')) : {};
27
33
  const file = loadEnv(path.join(cwd, '.env.local'));
28
34
  const managedFile = path.join(cwd, '.feltdb', 'managed.json');
29
35
  const managed = fs.existsSync(managedFile) ? JSON.parse(fs.readFileSync(managedFile, 'utf8')) : {};
30
36
  const value = (name) => process.env[name] || file[name];
31
37
  const configuration = {
32
- url: value('VITE_FELTDB_MANAGED_URL') || managed.url, token: value('FELTDB_MANAGED_CONTROL_API_KEY'),
33
- tenantId: managed.tenantId || value('VITE_FELTDB_MANAGED_TENANT_ID'), applicationId: value('VITE_FELTDB_MANAGED_APPLICATION_ID') || managed.applicationId,
34
- namespace: managed.namespace || value('VITE_FELTDB_MANAGED_NAMESPACE') || project.namespace,
35
- environment: environmentOverride || managed.environment || value('VITE_FELTDB_MANAGED_ENVIRONMENT') || 'production',
38
+ url: value('VITE_FELTDB_MANAGED_URL') || managed.url || value('FELTDB_URL'), token: value('FELTDB_MANAGED_CONTROL_API_KEY'),
39
+ tenantId: managed.tenantId || value('VITE_FELTDB_MANAGED_TENANT_ID') || '',
40
+ applicationId: value('VITE_FELTDB_MANAGED_APPLICATION_ID') || managed.applicationId || value('FELTDB_APPLICATION_ID'),
41
+ namespace: managed.namespace || value('VITE_FELTDB_MANAGED_NAMESPACE') || project.namespace || value('FELTDB_NAMESPACE') || (options.contract ? path.basename(cwd) : undefined),
42
+ environment: environmentOverride || managed.environment || value('VITE_FELTDB_MANAGED_ENVIRONMENT') || value('FELTDB_ENVIRONMENT') || 'production',
36
43
  };
37
- const missing = Object.entries(configuration).filter(([, value]) => !value).map(([name]) => name);
38
- if (missing.length)
39
- throw new Error(`Managed publish configuration is incomplete in .env.local: ${missing.join(', ')}`);
40
- return configuration;
44
+ const missing = Object.entries(configuration).filter(([name, value]) => !value && !(options.contract && name === 'tenantId')).map(([name]) => name);
45
+ if (missing.length) {
46
+ throw new Error(`Managed publish configuration is incomplete: ${missing.join(', ')}. Run \`feltdb init-managed\` in this project, or set FELTDB_URL, FELTDB_APPLICATION_ID and FELTDB_MANAGED_CONTROL_API_KEY.`);
47
+ }
48
+ const runtimeToken = value('FELTDB_TOKEN');
49
+ return { ...configuration, ...(runtimeToken ? { runtimeToken } : {}) };
41
50
  }
42
51
  function filesBelow(root, directory) {
43
52
  const target = path.join(root, directory);
@@ -88,6 +97,86 @@ export function buildPublishBundle(cwd, configuration) {
88
97
  manifest.metadata.labels['feltdb.source_revision'] = sourceRevision;
89
98
  return { manifest, artifacts, artifactHash, sourceRevision };
90
99
  }
100
+ const CONTRACT_KEYS = ['collections', 'indexes', 'references', 'policies'];
101
+ export function readApplicationContract(file) {
102
+ if (!fs.existsSync(file))
103
+ throw new Error(`Contract file not found: ${file}`);
104
+ let contract;
105
+ try {
106
+ contract = JSON.parse(fs.readFileSync(file, 'utf8'));
107
+ }
108
+ catch (error) {
109
+ throw new Error(`Contract file ${file} is not JSON: ${error.message}`);
110
+ }
111
+ if (!contract || typeof contract !== 'object' || Array.isArray(contract))
112
+ throw new Error(`Contract file ${file} must hold an object with collections and policies`);
113
+ const unknown = Object.keys(contract).filter(key => !CONTRACT_KEYS.includes(key));
114
+ if (unknown.length)
115
+ throw new Error(`Contract file ${file} has keys a contract cannot carry: ${unknown.join(', ')} (allowed: ${CONTRACT_KEYS.join(', ')})`);
116
+ if (!Array.isArray(contract.collections) || !contract.collections.length)
117
+ throw new Error(`Contract file ${file} declares no collections`);
118
+ for (const collection of contract.collections) {
119
+ if (!collection || typeof collection.name !== 'string' || !Array.isArray(collection.fields))
120
+ throw new Error(`Contract file ${file}: every collection needs a name and a fields array`);
121
+ }
122
+ if (!Array.isArray(contract.policies))
123
+ throw new Error(`Contract file ${file} declares no policies; without one per collection the authority refuses every read and write`);
124
+ for (const key of ['indexes', 'references'])
125
+ if (contract[key] !== undefined && !Array.isArray(contract[key]))
126
+ throw new Error(`Contract file ${file}: ${key} must be an array`);
127
+ return contract;
128
+ }
129
+ export function buildContractBundle(cwd, configuration, contractFile) {
130
+ const absolute = path.resolve(cwd, contractFile);
131
+ const contract = readApplicationContract(absolute);
132
+ const relative = path.relative(cwd, absolute).split(path.sep).join('/');
133
+ if (relative.startsWith('../'))
134
+ throw new Error(`The contract file must be inside the project: ${contractFile}`);
135
+ const content = Buffer.from(fs.readFileSync(absolute));
136
+ const artifact = { path: relative, hash: `sha256:${sha256(content)}`, bytes: content.byteLength, mediaType: 'application/json', content: content.toString('base64') };
137
+ const artifactHash = `sha256:${sha256(`${artifact.path}\0${artifact.hash}`)}`;
138
+ // The manifest defaults (environments, runtime bounds, UI) are the ones every published
139
+ // application carries; only the state contract comes from the file.
140
+ const manifest = flowSpecToManifest({ version: 1, app: configuration.namespace, collections: [], capabilities: [], agents: [], workflows: [], triggers: [], policies: [], schedules: [], modules: [] }, configuration.tenantId, configuration.applicationId);
141
+ manifest.collections = contract.collections;
142
+ manifest.indexes = contract.indexes ?? [];
143
+ manifest.references = contract.references ?? [];
144
+ manifest.policies = contract.policies;
145
+ const contractHash = (value) => `sha256:${sha256(Buffer.from(canonicalApplicationBytes(value)))}`;
146
+ manifest.metadata.labels = {
147
+ 'feltdb.model_hash': contractHash({ collections: manifest.collections, indexes: manifest.indexes, references: manifest.references }),
148
+ 'feltdb.authorization_hash': contractHash(manifest.policies),
149
+ 'feltdb.contract_hash': contractHash({ contract }),
150
+ 'feltdb.contract_file': relative,
151
+ 'feltdb.artifact_hash': artifactHash,
152
+ 'feltdb.namespace': configuration.namespace,
153
+ };
154
+ manifest.artifacts = [{ name: relative, uri: `artifact://${artifact.hash}`, media_type: artifact.mediaType, content: artifact.content }];
155
+ const git = spawnSync('git', ['rev-parse', 'HEAD'], { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] });
156
+ const sourceRevision = git.status === 0 ? git.stdout.trim() : undefined;
157
+ if (sourceRevision)
158
+ manifest.metadata.labels['feltdb.source_revision'] = sourceRevision;
159
+ return { manifest, artifacts: [artifact], artifactHash, sourceRevision };
160
+ }
161
+ /**
162
+ * The runtime (data) key resolves the revision just promoted: URL, key, application and
163
+ * environment agree. Without the key here (CI holding only the control key) it is not checked.
164
+ */
165
+ async function verifyRuntimeKey(configuration, revisionId, log) {
166
+ if (!configuration.runtimeToken) {
167
+ log('• Runtime key (FELTDB_TOKEN) not available here; the application\'s own check is its health endpoint.');
168
+ return false;
169
+ }
170
+ const url = `${configuration.url.replace(/\/$/, '')}/v1/application?application_id=${encodeURIComponent(configuration.applicationId)}&environment=${encodeURIComponent(configuration.environment)}`;
171
+ const response = await fetch(url, { headers: { authorization: `Bearer ${configuration.runtimeToken}`, accept: 'application/json' } });
172
+ const body = await response.json().catch(() => ({}));
173
+ if (!response.ok)
174
+ throw new Error(`The runtime key (FELTDB_TOKEN) is refused for application ${configuration.applicationId} in ${configuration.environment}: HTTP ${response.status} ${String(body.code ?? '')} ${String(body.message ?? '')}`.trim());
175
+ if (body.revision_id !== revisionId)
176
+ throw new Error(`The runtime key resolves revision ${String(body.revision_id)}, not the promoted ${revisionId}`);
177
+ log('✓ The runtime key (FELTDB_TOKEN) resolves the promoted revision');
178
+ return true;
179
+ }
91
180
  function sameDefinition(left, right) {
92
181
  return left.metadata.labels?.['feltdb.artifact_hash'] === right.metadata.labels?.['feltdb.artifact_hash'];
93
182
  }
@@ -105,8 +194,8 @@ function describeChanges(current, bundle) {
105
194
  export async function publishApplication(options = {}) {
106
195
  const cwd = options.cwd || process.cwd();
107
196
  const log = options.log || console.log;
108
- const configuration = discoverPublishConfiguration(cwd, options.environment);
109
- const bundle = buildPublishBundle(cwd, configuration);
197
+ const configuration = discoverPublishConfiguration(cwd, options.environment, { contract: Boolean(options.contract) });
198
+ const bundle = options.contract ? buildContractBundle(cwd, configuration, options.contract) : buildPublishBundle(cwd, configuration);
110
199
  const client = new ApplicationManifestClient(configuration.url.replace(/\/$/, ''), configuration.token);
111
200
  const cloud = await client.revisions(configuration.applicationId);
112
201
  const current = activeRevision(cloud.revisions, cloud.environment_pointers, configuration.environment);
@@ -128,7 +217,8 @@ export async function publishApplication(options = {}) {
128
217
  }
129
218
  log('Changes:');
130
219
  changes.forEach(value => log(` ${value}`));
131
- if (!options.noBuild) {
220
+ // A contract is the artifact itself; the application is built and deployed on its own.
221
+ if (!options.noBuild && !options.contract) {
132
222
  const packageFile = path.join(cwd, 'package.json');
133
223
  const packageManifest = JSON.parse(fs.readFileSync(packageFile, 'utf8'));
134
224
  if (!packageManifest.scripts?.build)
@@ -140,6 +230,15 @@ export async function publishApplication(options = {}) {
140
230
  throw new Error(`Application build failed with exit code ${result.status}`);
141
231
  }
142
232
  const draft = await client.createDraft(configuration.applicationId, current?.revision_id);
233
+ if (options.contract) {
234
+ // The authority requires state_schema_version to increase whenever the state schema
235
+ // changes; an unchanged schema keeps the active one.
236
+ const model = (manifest) => canonicalApplicationBytes({ collections: manifest.collections, indexes: manifest.indexes ?? [], references: manifest.references ?? [] }).toString();
237
+ const previous = current?.manifest.state_schema_version ?? 0;
238
+ bundle.manifest.state_schema_version = current && model(current.manifest) === model(bundle.manifest) ? previous : previous + 1;
239
+ bundle.manifest.tenant_id = draft.tenant_id;
240
+ bundle.manifest.metadata.name = draft.manifest?.metadata?.name || bundle.manifest.metadata.name;
241
+ }
143
242
  const updated = await client.updateDraft(configuration.applicationId, draft, bundle.manifest);
144
243
  const validation = await client.validateDraft(configuration.applicationId, updated.draft_id);
145
244
  if (!validation.valid)
@@ -158,8 +257,9 @@ export async function publishApplication(options = {}) {
158
257
  }
159
258
  const promoted = await client.promoteEnvironment(configuration.applicationId, configuration.environment, revision.revision_id, current?.revision_id, options.message || 'Published from feltdb CLI', Boolean(options.approveDestructive));
160
259
  fs.mkdirSync(path.join(cwd, '.feltdb'), { recursive: true });
161
- fs.writeFileSync(path.join(cwd, '.feltdb', 'last-published.json'), `${JSON.stringify({ applicationId: configuration.applicationId, tenantId: configuration.tenantId, namespace: configuration.namespace, environment: configuration.environment, version: revision.revision_number, revisionId: revision.revision_id, contractHash: bundle.manifest.metadata.labels?.['feltdb.contract_hash'], artifactHash: bundle.artifactHash, sourceRevision: bundle.sourceRevision, publishedAt: new Date().toISOString() }, null, 2)}\n`, { mode: 0o600 });
260
+ fs.writeFileSync(path.join(cwd, '.feltdb', 'last-published.json'), `${JSON.stringify({ applicationId: configuration.applicationId, tenantId: bundle.manifest.tenant_id || configuration.tenantId, namespace: configuration.namespace, environment: configuration.environment, version: revision.revision_number, revisionId: revision.revision_id, contractHash: bundle.manifest.metadata.labels?.['feltdb.contract_hash'], artifactHash: bundle.artifactHash, sourceRevision: bundle.sourceRevision, publishedAt: new Date().toISOString() }, null, 2)}\n`, { mode: 0o600 });
162
261
  log(`✓ Published immutable version ${revision.revision_number}`);
163
262
  log(`✓ Activated in ${configuration.environment}`);
164
- return { status: 'published', current, bundle, revision, diff, promoted };
263
+ const verified = options.contract ? await verifyRuntimeKey(configuration, revision.revision_id, log) : undefined;
264
+ return { status: 'published', current, bundle, revision, diff, promoted, verified };
165
265
  }