consciousness/src/user
Kent Overstreet 08213f9093 salience: add gRPC client + TLS plumbing for stateful vllm sessions
Adds the client-side of a stateful gRPC protocol against vllm, plus
the TLS trust machinery so we can talk to self-signed vllm servers.

Protocol (proto/salience.proto):
  Bidi-streaming Session RPC carries OpenSession / AppendTokens /
  Generate / Cancel from client and SessionReady / PrefillProgress /
  Token / GenerateDone / Error from server. Separate Fork unary RPC
  for cheap branching (prefix cache shares KV automatically). Plus
  ListSessions, CloseSession, GetReadoutManifest admin RPCs.

  Per-token readouts ship as packed f32 ([n_layers * n_concepts] per
  token, flat). Logprobs use range-selected positions plus a top-k
  parameter — empty ranges means no logprobs, any range means emit
  sampled-token logprob at those positions, top_k > 0 adds
  alternatives.

Client (src/agent/api/salience.rs):
  Tonic-generated types under pb::, a connect() helper, with_auth()
  for bearer metadata, and a Session handle wrapping the bidi stream:
  open() handshakes SessionReady; append() is fire-and-forget;
  generate() returns impl Stream<Item = Event> that drains inbound
  until Done or terminating Error. One generate at a time per session.

Peak picker (src/agent/salience.rs):
  Pure function over ReadoutEntry traces. Per-concept z-score against
  trace global stats; contiguous above-threshold regions emit one
  peak at the local max. Configurable sigma threshold and min-std
  safety floor. Deterministic tie-break on offset then concept name.
  12 unit tests covering empty traces, flat channels, single/multi
  spikes, contiguous humps, multi-concept independence, trailing
  runs, sub-threshold noise, layer-out-of-range, manifest shape
  mismatch, and threshold tunability.

TLS (src/agent/api/http.rs):
  HttpClient::build now also loads every .pem file under
  ~/.consciousness/certs/ into the rustls root store — so dropping
  a <host>.pem in that directory is enough to trust a new self-
  signed server; no code changes per new host. Also installs the
  rustls default crypto provider explicitly via OnceLock: tonic's
  tls features pulled in both ring and aws-lc-rs on the resolver
  path, and rustls 0.23 refuses to auto-pick when either could win.

Build (build.rs, Cargo.toml):
  tonic-build generates Rust types from proto/salience.proto at
  cargo-build time, using a vendored protoc binary
  (protoc-bin-vendored) so no system install is required. New
  runtime deps: tonic, prost, async-stream, tokio-stream,
  rustls-pemfile.

Co-Authored-By: Proof of Concept <poc@bcachefs.org>
2026-04-24 11:56:32 -04:00
..
amygdala.rs amygdala: default to index 0 for v2 deep manifest (layers 62, 63) 2026-04-18 02:32:51 -04:00
chat.rs user/chat: route Thinking to a new Autonomous pane 2026-04-24 11:54:25 -04:00
compare.rs user: share candidate-browser helpers between F6/F7 2026-04-17 16:22:30 -04:00
context.rs config: drop dead code and collapse to a single backend 2026-04-16 15:41:55 -04:00
learn.rs user: share candidate-browser helpers between F6/F7 2026-04-17 16:22:30 -04:00
mod.rs salience: add gRPC client + TLS plumbing for stateful vllm sessions 2026-04-24 11:56:32 -04:00
scroll_pane.rs user: fix text selection on wrapped lines 2026-04-12 15:49:57 -04:00
selectable.rs selectable: silence unused method warning 2026-04-12 16:10:58 -04:00
subconscious.rs subconscious screen: show full context window 2026-04-12 01:45:10 -04:00
thalamus.rs thalamus: add thinking mode toggles (native + tool) 2026-04-14 18:25:00 -04:00
unconscious.rs user: remove dead scroll state from thalamus and unconscious screens 2026-04-11 01:35:15 -04:00
widgets.rs user: share candidate-browser helpers between F6/F7 2026-04-17 16:22:30 -04:00