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>
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>