Files
ratatoskr/persistent-memory.d/2026-07-01-get-sessions-id-tools-quick-win-shipped-v0-18.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.3 KiB

[2026-07-01] GET /sessions/{id}/tools quick-win SHIPPED (v0.18.9) — owner-scoped tool inventory in the TUI Tools pane. get_session_tools wrapper (sessions.py, mirror get_me: 200→dict, non-200→SessionApiFailed) + _format_tool_inventory helper + _hydrate_session_tools best-effort worker (mirror _hydrate_persona) wired UNCONDITIONALLY in on_mount → writes the merged {agent_id, builtin_tools, bifrost_tools} inventory (what the LLM saw at turn-fire) to the Tools pane + audits session_tools_hydrated, never crashes on failure. Owner-scoped (ctx.user_id==session.user_id) → reachable with the CONSUMER key, NO admin scope — so this covers the design-brief §5 "Tools widget" via the reachable owner endpoint (the admin /admin/sessions/{id}/tools variant stays a gap only for cross-user operator debug). Contract #2 amended (FN, validated OK) + TDD (3 wrapper respx tests + 1 format-helper unit + 2 hydrate integration tests via _spy_writes+pilot). Suite 544 green; touched code ruff-clean (the tui.py ruff/mypy debt at other lines is pre-existing). Coverage: REST 10/40 . Frontier now: BifrostState widget (GET /admin/sessions/{id}/bifrost, admin-key) + #11 AdminEvents (BLOCKED on admin.events.read) + Tier-2 (transient-characters routing, POST /sessions/{id}/persona_state).