pub struct Storage {
pub db_path: PathBuf,
pub content_dim: usize,
pub trigger_dim: usize,
/* private fields */
}Fields§
§db_path: PathBuf§content_dim: usize§trigger_dim: usizeImplementations§
Source§impl Storage
impl Storage
pub fn insert_chunk(&self, c: &ChunkRow) -> Result<()>
pub fn insert_vec_content(&self, chunk_id: &str, emb: &[u8]) -> Result<()>
pub fn insert_vec_trigger(&self, chunk_id: &str, emb: &[u8]) -> Result<()>
Sourcepub fn list_chunks(
&self,
state: Option<&str>,
origin: Option<&str>,
limit: usize,
offset: usize,
) -> Result<Vec<Value>>
pub fn list_chunks( &self, state: Option<&str>, origin: Option<&str>, limit: usize, offset: usize, ) -> Result<Vec<Value>>
Paginated chunk listing for the web viewer. Filters by exact state and
origin when provided; returns a compact projection (content truncated to
a preview) ordered newest-first. Read-only — never mutates.
pub fn get_chunk(&self, id: &str) -> Result<Option<Value>>
pub fn update_chunk_state( &self, id: &str, state: &str, reason: Option<&str>, now: &str, ) -> Result<()>
pub fn update_chunk_confidence( &self, id: &str, conf: f64, reason: Option<&str>, now: &str, ) -> Result<()>
pub fn update_chunk_last_used(&self, id: &str, now: &str) -> Result<()>
pub fn get_chunk_by_hash(&self, hash: &str) -> Result<Option<Value>>
pub fn search_vec_content( &self, query: &[f32], limit: usize, ) -> Result<Vec<(String, f32)>>
pub fn search_vec_trigger( &self, query: &[f32], limit: usize, ) -> Result<Vec<(String, f32)>>
Sourcepub fn get_chunks_by_ids(&self, ids: &[&str]) -> Result<HashMap<String, Value>>
pub fn get_chunks_by_ids(&self, ids: &[&str]) -> Result<HashMap<String, Value>>
Fetch multiple chunks by id in one query; returns a map of id → chunk JSON.
pub fn is_hash_invalidated(&self, hash: &str) -> Result<bool>
pub fn insert_invalidated_hash( &self, hash: &str, reason: Option<&str>, ts: &str, ) -> Result<()>
pub fn get_deps(&self, chunk_id: &str) -> Result<Vec<DepEdge>>
Sourcepub fn get_deps_batch(
&self,
srcs: &[&str],
) -> Result<HashMap<String, Vec<DepEdge>>>
pub fn get_deps_batch( &self, srcs: &[&str], ) -> Result<HashMap<String, Vec<DepEdge>>>
Batch variant of get_deps: fetch outgoing edges for many sources in one
query. Returns src → [(dst, kind, dst_lib)]. Sources with no edges are
simply absent from the map.
pub fn get_reverse_deps(&self, chunk_id: &str) -> Result<Vec<String>>
pub fn insert_dep( &self, src: &str, dst: &str, kind: &str, dst_lib: Option<&str>, ) -> Result<()>
pub fn upsert_chunk_success_trace( &self, chunk_id: &str, trace_id: &str, ts: &str, ) -> Result<()>
Source§impl Storage
impl Storage
pub fn upsert_governance_proposal( &self, id: &str, chunk_id: &str, proposal_type: &str, reason: &str, evidence_count: i64, evidence_score: f64, actor_count: i64, now: &str, ) -> Result<()>
Sourcepub fn list_governance_proposals(
&self,
state: &str,
limit: usize,
) -> Result<Vec<Value>>
pub fn list_governance_proposals( &self, state: &str, limit: usize, ) -> Result<Vec<Value>>
Read-only listing of governance proposals for the web review queue, joined with a compact chunk projection so a reviewer sees what was flagged and why (evidence_score / actor_count) in one round-trip. Ordered by evidence_score DESC so the strongest cases surface first.
pub fn request_evolve(&self, id: &str, reason: &str, now: &str) -> Result<()>
pub fn request_evolve_at( &self, id: &str, reason: &str, now: &str, next_retry_at: Option<&str>, ) -> Result<()>
pub fn claim_evolve_request_with_reason( &self, now: &str, stale_before: &str, ) -> Result<Option<EvolveRequestClaim>>
pub fn defer_evolve_request( &self, id: &str, note: &str, next_retry_at: &str, ) -> Result<()>
pub fn finish_evolve_request( &self, id: &str, state: &str, note: Option<&str>, now: &str, ) -> Result<()>
pub fn finish_covered_evolve_requests( &self, requested_before: &str, now: &str, ) -> Result<()>
Sourcepub fn update_episodic_log_state_by_id(
&self,
id: &str,
state: &str,
note: Option<&str>,
outcome: Option<&str>,
) -> Result<()>
pub fn update_episodic_log_state_by_id( &self, id: &str, state: &str, note: Option<&str>, outcome: Option<&str>, ) -> Result<()>
Update by primary-key id (used after distill where we have the row id, not trace_id).
pub fn finish_distill_log( &self, id: &str, state: &str, note: Option<&str>, prompt_tokens: i64, completion_tokens: i64, accounted_at: &str, ) -> Result<()>
Sourcepub fn claim_distill_batch(
&self,
run_id: &str,
limit: usize,
locked_at: &str,
) -> Result<Vec<Value>>
pub fn claim_distill_batch( &self, run_id: &str, limit: usize, locked_at: &str, ) -> Result<Vec<Value>>
Claim a batch of ‘new’ logs for distillation: mark them ‘screening’ atomically. Returns the claimed rows (with distill_run_id set to run_id).
pub fn query_episodic_logs_open(&self, limit: usize) -> Result<Vec<Value>>
Source§impl Storage
impl Storage
Source§impl Storage
impl Storage
pub fn insert_usage_trace( &self, trace_id: &str, chunk_id: Option<&str>, event: &str, strength: f64, similarity: Option<f64>, refine_mode: Option<&str>, tokens: Option<i64>, rank: Option<i64>, attribution: Option<&str>, source: &str, ts: &str, ) -> Result<usize>
pub fn replace_used_trace( &self, trace_id: &str, used_ids: &[String], strength: f64, attribution: &str, source: &str, ts: &str, ) -> Result<()>
pub fn merge_used_trace( &self, trace_id: &str, used_ids: &[String], strength: f64, attribution: &str, source: &str, ts: &str, ) -> Result<()>
pub fn refresh_chunk_last_used(&self, chunk_id: &str, now: &str) -> Result<()>
pub fn get_outcome_for_trace(&self, trace_id: &str) -> Result<Option<String>>
pub fn purge_usage_trace(&self, before_ts: &str) -> Result<usize>
pub fn upsert_episodic_log(&self, log: &EpisodicLogRow) -> Result<()>
pub fn get_episodic_log(&self, trace_id: &str) -> Result<Option<Value>>
pub fn update_episodic_log_state( &self, trace_id: &str, state: &str, note: Option<&str>, outcome: Option<&str>, ) -> Result<()>
Sourcepub fn patch_episodic_log_content(
&self,
trace_id: &str,
query: Option<&str>,
output: Option<&str>,
output_summary: Option<&str>,
nomination: Option<&str>,
priority: i64,
) -> Result<()>
pub fn patch_episodic_log_content( &self, trace_id: &str, query: Option<&str>, output: Option<&str>, output_summary: Option<&str>, nomination: Option<&str>, priority: i64, ) -> Result<()>
Patch content fields on an existing episodic_log row (補写: output_summary, nomination, etc.)