<Project Sdk="Microsoft.NET.Sdk">

  <!--
    The client's session lifecycle: where a profile lives on disk, how a vault is unlocked, and how a
    fresh machine gets one in the first place.

    This is the composition layer the application shell sits on, and it is deliberately Avalonia-free
    like every other Client.* project except App. That is what lets the part that actually matters —
    that an unlock works with no network, and that a wrong passphrase is a return value rather than a
    crash — be a fast unit test instead of something only reachable by clicking.
  -->

  <ItemGroup>
    <ProjectReference Include="../DodoSSH.Client.Api/DodoSSH.Client.Api.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Auth/DodoSSH.Client.Auth.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Domain/DodoSSH.Client.Domain.csproj" />
    <!--
      The SSH layer, for one type: VaultKnownHostStore, which is the IKnownHostStore the application
      actually composes. It has to live on this side of the seam, because it is the only thing that needs
      both the interface the handshake asks and the vault the answer comes from — and it must not live in
      Client.Ssh, which has no project references at all so that connections, authentication and PTY
      handling stay testable with no cache, no keyring and no server.
    -->
    <ProjectReference Include="../DodoSSH.Client.Ssh/DodoSSH.Client.Ssh.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Storage/DodoSSH.Client.Storage.csproj" />
    <ProjectReference Include="../DodoSSH.Client.Sync/DodoSSH.Client.Sync.csproj" />
    <!--
      The terminal layer, for one interface: IConnectionLogSink, which ConnectionRecorder implements. The
      direction is the point. Client.Terminal references only Client.Ssh and must keep doing so — a workspace
      that knew about vaults would be a workspace that could not keep a shell running through a lock — so the
      hole is declared down there and filled up here, exactly as VaultKnownHostStore fills IKnownHostStore.
      Nothing in Client.Terminal references this project, so the graph stays acyclic.
    -->
    <ProjectReference Include="../DodoSSH.Client.Terminal/DodoSSH.Client.Terminal.csproj" />
  </ItemGroup>

  <ItemGroup>
    <InternalsVisibleTo Include="DodoSSH.Client.Session.Tests" />
  </ItemGroup>

</Project>
