71 const TenantQuotas& limits()
const noexcept {
return limits_; }
72 std::uint64_t active()
const noexcept;
73 std::uint64_t queued()
const noexcept;
74 std::uint64_t model_tokens()
const noexcept;
75 std::uint64_t cost_microunits()
const noexcept;
76 std::uint64_t artifacts()
const noexcept;
77 std::uint64_t retained_artifacts()
const noexcept;
81 void release_concurrency() noexcept;
83 bool try_acquire_queue() noexcept;
84 void release_queue() noexcept;
86 bool try_reserve_usage(std::uint64_t model_tokens,
87 std::uint64_t cost_microunits) noexcept;
89 void release_usage(std::uint64_t model_tokens,
90 std::uint64_t cost_microunits) noexcept;
91 bool try_acquire_artifact() noexcept;
92 void release_artifact() noexcept;
93 bool try_acquire_retained_artifact() noexcept;
94 void release_retained_artifact() noexcept;
97 bool try_increment(std::atomic<std::uint64_t>& value, std::uint64_t limit) noexcept;
98 static
void decrement(std::atomic<std::uint64_t>& value, std::uint64_t amount) noexcept;
101 std::atomic<std::uint64_t> active_{0};
102 std::atomic<std::uint64_t> queued_{0};
103 std::atomic<std::uint64_t> model_tokens_{0};
104 std::atomic<std::uint64_t> cost_microunits_{0};
105 std::atomic<std::uint64_t> artifacts_{0};
106 std::atomic<std::uint64_t> retained_artifacts_{0};
160 const TenantScope& scope()
const noexcept {
return scope_; }
163 std::optional<graph::Checkpoint>
load_latest(
const std::string& thread_id)
override;
164 std::optional<graph::Checkpoint>
load_by_id(
const std::string&
id)
override;
165 std::vector<graph::Checkpoint>
list(
const std::string& thread_id,
166 int limit = 100)
override;
168 void put_writes(
const std::string& thread_id,
const std::string& parent_checkpoint_id,
170 std::vector<graph::PendingWrite>
171 get_writes(
const std::string& thread_id,
const std::string& parent_checkpoint_id)
override;
173 const std::string& parent_checkpoint_id)
override;
175 asio::awaitable<bool> requires_managed_budget_async(std::string thread_id)
override;
176 std::shared_ptr<graph::OwnedManagedBudgetLease> acquire_managed_budget_lease(
177 const graph::ManagedBudgetLeaseScope& scope,
const std::string& expected_checkpoint_id,
178 const std::string& expected_checkpoint_commitment)
override;
179 asio::awaitable<std::shared_ptr<graph::OwnedManagedBudgetLease>>
180 acquire_managed_budget_lease_async(graph::ManagedBudgetLeaseScope scope,
181 std::string expected_checkpoint_id, std::string expected_checkpoint_commitment)
override;
183 const std::shared_ptr<graph::OwnedManagedBudgetLease>& lease,
const std::string& effect_id,
184 std::uint64_t exact_claim_amount,
const std::string& prepared_request_digest)
override;
185 asio::awaitable<graph::ManagedBudgetEffectReceipt> begin_managed_budget_effect_async(
186 std::shared_ptr<graph::OwnedManagedBudgetLease> lease, std::string effect_id,
187 std::uint64_t exact_claim_amount, std::string prepared_request_digest)
override;
188 void settle_managed_budget_effect(
const std::shared_ptr<graph::OwnedManagedBudgetLease>& lease,
190 const UsageAccumulator::AuthoritySnapshot& authority)
override;
191 asio::awaitable<void> settle_managed_budget_effect_async(
192 std::shared_ptr<graph::OwnedManagedBudgetLease> lease,
194 UsageAccumulator::AuthoritySnapshot authority)
override;
195 void publish_managed_budget_checkpoint(
196 const std::shared_ptr<graph::OwnedManagedBudgetLease>& lease,
198 asio::awaitable<void> publish_managed_budget_checkpoint_async(
199 std::shared_ptr<graph::OwnedManagedBudgetLease> lease,
graph::Checkpoint checkpoint)
override;
200 void release_managed_budget_lease(
201 const std::shared_ptr<graph::OwnedManagedBudgetLease>& lease)
override;
202 asio::awaitable<void> release_managed_budget_lease_async(
203 std::shared_ptr<graph::OwnedManagedBudgetLease> lease)
override;
205 void publish_managed_budget_fork(const graph::Checkpoint& authenticated_source,
206 const graph::Checkpoint& genuine_shared_bank_fork) override;
207 asio::awaitable<
void> publish_managed_budget_fork_async(
208 graph::Checkpoint source, graph::Checkpoint forked) override;
211 std::
string private_id(std::string_view
id) const;
212 graph::Checkpoint private_checkpoint(const graph::Checkpoint& cp) const;
213 graph::Checkpoint public_checkpoint(graph::Checkpoint cp) const;
214 graph::ManagedBudgetLeaseScope private_scope(graph::ManagedBudgetLeaseScope scope) const;
215 std::
string private_source_commitment(
216 const graph::Checkpoint& checkpoint, const std::
string& expected_checkpoint_id,
217 const std::
string& expected_checkpoint_commitment) const;
219 std::shared_ptr<graph::CheckpointStore> backend_;