2 Commits
Author SHA1 Message Date
Juan DenisandClaude Fable 5 e93faac226 feat(servers): store the agent's self-reported footprint dirs
The agent (serverkit-agent bbaf4e2) now sends install_dir and
config_dir in system_info. Panel side:

- servers.agent_install_dir + agent_config_dir columns (migration 047,
  idempotent guard like its siblings) with the same coalesce contract
  as the other system_info fields — a transient payload gap never
  wipes a stored value
- exposed in Server.to_dict and /servers/available; TargetPicker
  passes them on the agent target
- the File Manager rail prefers the reported config dir over the
  installer convention (backslash-normalized for Windows agents;
  agent-logs link derives <config_dir>/logs)
- proving test: full system_info -> DB -> available round trip +
  coalesce survival

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:36:34 -04:00
Juan DenisandClaude Fable 5 9dfed262d6 feat(files): per-target quick-access rail for remote agents
Browsing a remote agent no longer shows the panel host's shortcuts:

- /servers/available now returns each server's os_type
  (linux/windows/darwin, null for pre-sysinfo agents) and TargetPicker
  passes it through on the agent target
- the File Manager rail switches per target: Linux agents link the
  agent's own footprint (/etc/serverkit-agent, fixed by the served
  installer) plus the generic Unix paths; Windows agents get
  ProgramData/ServerKit/Agent, its logs, and C:/Users instead of Unix
  paths that don't exist; darwin gets /Users + /var/log; unknown
  os_type falls back to the Linux set (the historical behavior)
- local target unchanged: panel set with the resolved install dir
- 2 proving tests for the os_type contract (present + null for legacy)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:26:46 -04:00