Files
ratatoskr/persistent-memory.d/2026-06-30-capabilities-me-slice-shipped-v0-18-8-get-me.md
vh ff1f9ca1e8 memory: /snapshot — #368 silo test passed; two-tier migration; stores scrubbed
- #368 (user,character) memory silo test DONE + PASSED live (WT b127):
  write-side conjunctive {end_user,agent_self} scoping + read-side cross-
  character isolation both proven end-to-end; betty (throwaway) deleted,
  Sindra intact. Full record in persistent-memory.d/2026-07-18-368-silo-
  test-passed.md. Retired the stale "silo test in progress" in-flight blocks.
- Two-tier migration: split 152 over-threshold dated entries into
  persistent-memory.d/ detail files, leaving one-line pointers in the index
  (startup load ~196KB -> ~53KB; bodies now load on demand).
- Tier-3 stores scrubbed clean (memory 0 / affect 0, provider restarted
  empty); persistent-memory + detail file updated to reflect the scrub.
2026-07-17 21:39:18 -07:00

1.6 KiB

[2026-06-30] capabilities+me slice SHIPPED (v0.18.8) — GET /me + GET /capabilities consumed via a new --whoami one-shot. get_me/get_capabilities added to sessions.py (mirror get_persona_state: 200→dict verbatim, non-200→SessionApiFailed; freeform dicts per the frozen OpenAPI). New ratatoskr --whoami CLI mode (mirrors --send's non-interactive shape) fetches both + prints an identity+capabilities report; standalone probe (mutually exclusive with --send/--session/--new/--agent, opens no session; new ParsedArgs.whoami field + main() dispatch). /capabilities is the Echo EPHEMERAL-TEMPLATE discovery endpoint ({ephemeral_templates:{echo:{allowed_models,default_model,system_prompt_max_bytes}}}), NOT a generic server-caps endpoint (audit finding — the coverage-map's earlier "server capability discovery" framing was imprecise). /me = whoami ({user_id,scopes,tier,key_id?,...}, optionals omitted-not-null). Contract-skip privilege invoked (low-effort GET wrappers) but contract #2 amended (2 FNs, validated OK) to keep the sessions spec canonical + honest test citations. TDD: 5 wrapper tests + 5 cli tests (validation + mode + error). Suite 538 green; touched code ruff-clean (mypy: only no-any-return on resp.json()→dict, identical to the pre-existing get_persona_state). Coverage: REST 9/40 (up from 7). TUI-surfacing of /me (footer identity line) + /capabilities DEFERRED — the one-shot is the minimal tracer. Frontier now: BifrostState + Tools widgets (GET /admin/sessions/{id}/{bifrost,tools}, admin-key-gated) → #11 AdminEvents (BLOCKED on admin.events.read).