@feltdb/core 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) 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 +3 -0
  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 +255 -12
  17. package/dist/create/server-source/crates/feltdb-wasm/Cargo.toml +1 -1
  18. package/dist/db.d.ts +11 -1
  19. package/dist/db.d.ts.map +1 -1
  20. package/dist/db.js +15 -2
  21. package/dist/error-codes.d.ts +5 -0
  22. package/dist/error-codes.d.ts.map +1 -1
  23. package/dist/error-codes.js +9 -1
  24. package/dist/http-db.d.ts +16 -0
  25. package/dist/http-db.d.ts.map +1 -1
  26. package/dist/http-db.js +36 -6
  27. package/dist/managed-recovery.d.ts +6 -0
  28. package/dist/managed-recovery.d.ts.map +1 -1
  29. package/dist/managed-recovery.js +9 -0
  30. package/dist/studio-app/assets/{feltdb_wasm-BjM1ylL3.js → feltdb_wasm-DtybUY0q.js} +1 -1
  31. package/dist/studio-app/assets/feltdb_wasm_bg-DsgIUwaB.wasm +0 -0
  32. package/dist/studio-app/assets/index-C4OffsZl.js +37 -0
  33. package/dist/studio-app/index.html +1 -1
  34. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  35. package/dist/wasm/package.json +1 -1
  36. package/dist/workload.d.ts +55 -3
  37. package/dist/workload.d.ts.map +1 -1
  38. package/dist/workload.js +23 -0
  39. package/dist/workspace/workspace-connection.d.ts.map +1 -1
  40. package/dist/workspace/workspace-connection.js +14 -3
  41. package/package.json +1 -1
  42. package/dist/create/server-source/crates/feltdb/Cargo.lock +0 -175
  43. package/dist/create/server-source/crates/feltdb/Cargo.toml +0 -102
  44. package/dist/create/server-source/crates/feltdb/LICENSE +0 -21
  45. package/dist/create/server-source/crates/feltdb/README.md +0 -75
  46. package/dist/create/server-source/crates/feltdb/benches/baselines/gate-13-redux.json +0 -370
  47. package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +0 -589
  48. package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +0 -247
  49. package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +0 -440
  50. package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +0 -275
  51. package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +0 -381
  52. package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +0 -467
  53. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +0 -489
  54. package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +0 -281
  55. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +0 -606
  56. package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +0 -531
  57. package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +0 -462
  58. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +0 -505
  59. package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +0 -484
  60. package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +0 -758
  61. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +0 -421
  62. package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +0 -329
  63. package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +0 -1705
  64. package/dist/create/server-source/crates/feltdb/src/acquisition.rs +0 -286
  65. package/dist/create/server-source/crates/feltdb/src/admission.rs +0 -185
  66. package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +0 -507
  67. package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +0 -539
  68. package/dist/create/server-source/crates/feltdb/src/agent_state.rs +0 -320
  69. package/dist/create/server-source/crates/feltdb/src/agent_transition_contract.rs +0 -1545
  70. package/dist/create/server-source/crates/feltdb/src/analytics.rs +0 -521
  71. package/dist/create/server-source/crates/feltdb/src/application.rs +0 -2674
  72. package/dist/create/server-source/crates/feltdb/src/application_runtime.rs +0 -1070
  73. package/dist/create/server-source/crates/feltdb/src/authority.rs +0 -479
  74. package/dist/create/server-source/crates/feltdb/src/authority_failover.rs +0 -847
  75. package/dist/create/server-source/crates/feltdb/src/authorization.rs +0 -1030
  76. package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +0 -1122
  77. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority-client.rs +0 -32
  78. package/dist/create/server-source/crates/feltdb/src/bin/feltdb-authority.rs +0 -19
  79. package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +0 -1474
  80. package/dist/create/server-source/crates/feltdb/src/capabilities/mod.rs +0 -8
  81. package/dist/create/server-source/crates/feltdb/src/capabilities/search.rs +0 -418
  82. package/dist/create/server-source/crates/feltdb/src/capabilities/vector.rs +0 -482
  83. package/dist/create/server-source/crates/feltdb/src/capability.rs +0 -903
  84. package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +0 -263
  85. package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -77
  86. package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +0 -496
  87. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +0 -2574
  88. package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +0 -212
  89. package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +0 -422
  90. package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +0 -445
  91. package/dist/create/server-source/crates/feltdb/src/content_distribution.rs +0 -465
  92. package/dist/create/server-source/crates/feltdb/src/convergence.rs +0 -634
  93. package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +0 -427
  94. package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +0 -376
  95. package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +0 -365
  96. package/dist/create/server-source/crates/feltdb/src/cron.rs +0 -294
  97. package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +0 -483
  98. package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +0 -477
  99. package/dist/create/server-source/crates/feltdb/src/distributed_tests.rs +0 -1003
  100. package/dist/create/server-source/crates/feltdb/src/distributed_transactions.rs +0 -1334
  101. package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +0 -368
  102. package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +0 -231
  103. package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +0 -482
  104. package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +0 -203
  105. package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +0 -317
  106. package/dist/create/server-source/crates/feltdb/src/equality_index.rs +0 -595
  107. package/dist/create/server-source/crates/feltdb/src/execution.rs +0 -426
  108. package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +0 -214
  109. package/dist/create/server-source/crates/feltdb/src/indexing.rs +0 -776
  110. package/dist/create/server-source/crates/feltdb/src/lib.rs +0 -7365
  111. package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +0 -234
  112. package/dist/create/server-source/crates/feltdb/src/materialization.rs +0 -184
  113. package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -266
  114. package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +0 -310
  115. package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +0 -736
  116. package/dist/create/server-source/crates/feltdb/src/observability.rs +0 -379
  117. package/dist/create/server-source/crates/feltdb/src/operation.rs +0 -290
  118. package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +0 -439
  119. package/dist/create/server-source/crates/feltdb/src/operation_log.rs +0 -349
  120. package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +0 -332
  121. package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +0 -718
  122. package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +0 -487
  123. package/dist/create/server-source/crates/feltdb/src/peer_registry.rs +0 -166
  124. package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +0 -289
  125. package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +0 -566
  126. package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +0 -3391
  127. package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +0 -203
  128. package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +0 -261
  129. package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +0 -502
  130. package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +0 -216
  131. package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +0 -303
  132. package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +0 -323
  133. package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +0 -531
  134. package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +0 -406
  135. package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +0 -436
  136. package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +0 -387
  137. package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +0 -378
  138. package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +0 -359
  139. package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +0 -372
  140. package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +0 -404
  141. package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +0 -376
  142. package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +0 -461
  143. package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +0 -2125
  144. package/dist/create/server-source/crates/feltdb/src/production_api.rs +0 -418
  145. package/dist/create/server-source/crates/feltdb/src/provenance.rs +0 -207
  146. package/dist/create/server-source/crates/feltdb/src/query_execution_diagnostics.rs +0 -126
  147. package/dist/create/server-source/crates/feltdb/src/query_performance.rs +0 -218
  148. package/dist/create/server-source/crates/feltdb/src/read_basis.rs +0 -257
  149. package/dist/create/server-source/crates/feltdb/src/references.rs +0 -404
  150. package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +0 -401
  151. package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +0 -501
  152. package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +0 -680
  153. package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +0 -163
  154. package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +0 -133
  155. package/dist/create/server-source/crates/feltdb/src/routing.rs +0 -409
  156. package/dist/create/server-source/crates/feltdb/src/semantic_decision.rs +0 -2029
  157. package/dist/create/server-source/crates/feltdb/src/semantic_query.rs +0 -599
  158. package/dist/create/server-source/crates/feltdb/src/sharding.rs +0 -549
  159. package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +0 -516
  160. package/dist/create/server-source/crates/feltdb/src/state_contract.rs +0 -6003
  161. package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +0 -222
  162. package/dist/create/server-source/crates/feltdb/src/state_facade.rs +0 -320
  163. package/dist/create/server-source/crates/feltdb/src/state_hash.rs +0 -291
  164. package/dist/create/server-source/crates/feltdb/src/state_model.rs +0 -4158
  165. package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +0 -379
  166. package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +0 -673
  167. package/dist/create/server-source/crates/feltdb/src/storage.rs +0 -273
  168. package/dist/create/server-source/crates/feltdb/src/submission.rs +0 -471
  169. package/dist/create/server-source/crates/feltdb/src/sync.rs +0 -495
  170. package/dist/create/server-source/crates/feltdb/src/sync_contract.rs +0 -822
  171. package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +0 -433
  172. package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +0 -462
  173. package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +0 -965
  174. package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +0 -1120
  175. package/dist/create/server-source/crates/feltdb/src/transactions.rs +0 -643
  176. package/dist/create/server-source/crates/feltdb/src/trigger.rs +0 -390
  177. package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +0 -749
  178. package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +0 -708
  179. package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +0 -1269
  180. package/dist/create/server-source/crates/feltdb/src/workflow.rs +0 -713
  181. package/dist/create/server-source/crates/feltdb/src/workflow_acceptance_tests.rs +0 -510
  182. package/dist/create/server-source/crates/feltdb/src/workflow_integration.rs +0 -354
  183. package/dist/create/server-source/crates/feltdb/src/workflow_runtime.rs +0 -594
  184. package/dist/create/server-source/crates/feltdb/src/workload.rs +0 -4222
  185. package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +0 -456
  186. package/dist/create/server-source/crates/feltdb/tests/agent_state_native.rs +0 -1188
  187. package/dist/create/server-source/crates/feltdb/tests/agent_transition_contract_conformance.rs +0 -2884
  188. package/dist/create/server-source/crates/feltdb/tests/authority_process.rs +0 -297
  189. package/dist/create/server-source/crates/feltdb/tests/authority_transaction_identity.rs +0 -534
  190. package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +0 -132
  191. package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +0 -299
  192. package/dist/create/server-source/crates/feltdb/tests/common/mod.rs +0 -96
  193. package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +0 -272
  194. package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +0 -467
  195. package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +0 -309
  196. package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +0 -445
  197. package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +0 -518
  198. package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +0 -392
  199. package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +0 -850
  200. package/dist/create/server-source/crates/feltdb/tests/fixtures/agent_transition_corpus.json +0 -23340
  201. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +0 -1916
  202. package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +0 -1878
  203. package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +0 -1862
  204. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +0 -123
  205. package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +0 -299
  206. package/dist/create/server-source/crates/feltdb/tests/local_process_ownership.rs +0 -69
  207. package/dist/create/server-source/crates/feltdb/tests/managed_incident_regression.rs +0 -191
  208. package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +0 -278
  209. package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +0 -234
  210. package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +0 -947
  211. package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +0 -404
  212. package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +0 -916
  213. package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +0 -1045
  214. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +0 -347
  215. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +0 -361
  216. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +0 -330
  217. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +0 -93
  218. package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +0 -622
  219. package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +0 -517
  220. package/dist/create/server-source/crates/feltdb/tests/production_certification.rs +0 -1153
  221. package/dist/create/server-source/crates/feltdb/tests/production_contract.rs +0 -771
  222. package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +0 -1383
  223. package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +0 -868
  224. package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +0 -221
  225. package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +0 -417
  226. package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +0 -338
  227. package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +0 -1039
  228. package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +0 -739
  229. package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +0 -452
  230. package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +0 -81
  231. package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +0 -438
  232. package/dist/create/server-source/crates/feltdb/tests/semantic_decision.rs +0 -1165
  233. package/dist/create/server-source/crates/feltdb/tests/semantic_query.rs +0 -767
  234. package/dist/create/server-source/crates/feltdb/tests/semantic_query_contract.rs +0 -363
  235. package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +0 -1799
  236. package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +0 -1316
  237. package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +0 -358
  238. package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +0 -365
  239. package/dist/create/server-source/crates/feltdb/tests/state_ref_authority.rs +0 -918
  240. package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +0 -299
  241. package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +0 -328
  242. package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +0 -255
  243. package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +0 -249
  244. package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +0 -994
  245. package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +0 -484
  246. package/dist/studio-app/assets/feltdb_wasm_bg-TseJn2Ax.wasm +0 -0
  247. 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.0",
5
5
  "git": {
6
- "sha1": "5ad54972a9e31a5459cadbb471428111624ec9c6",
6
+ "sha1": "2433b73d6e643c8476de7e3364350af0230f47be",
7
7
  "dirty": false
8
8
  },
9
9
  "path_in_vcs": "packages/core",
10
- "source_digest": "sha256:01efc5737aae1fef37c976e5841df3bb9b615d034f31d27b038f7fd4ca202428",
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": 789,
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"
@@ -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
  }