x/ref: Restructure services/agent to follow conventions.

Here are the renamings:

services/agent/*.go            -> services/agent/agentlib
services/agent/server          -> services/agent/internal/server
services/agent/server/wire.vdl -> services/agent/wire.vdl

For reference, our convention is as follows:

services/gizmo          - VDL files, the "API"
services/gizmo/gizmo    - Client tool binary
services/gizmo/gizmod   - Server daemon binary
services/gizmo/gizmolib - Library used by others

Change-Id: Ia0a821f142944a3ce18462e3f084014e47700463
diff --git a/services/agent/agentd/main.go b/services/agent/agentd/main.go
index 60bccd3..f5d69e0 100644
--- a/services/agent/agentd/main.go
+++ b/services/agent/agentd/main.go
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+// Daemon agentd holds a private key in memory and makes it available to a
+// subprocess via the agent protocol.
 package main
 
 import (
@@ -23,8 +25,8 @@
 	"v.io/x/ref/envvar"
 	vsecurity "v.io/x/ref/lib/security"
 	vsignals "v.io/x/ref/lib/signals"
-	"v.io/x/ref/services/agent"
-	"v.io/x/ref/services/agent/server"
+	"v.io/x/ref/services/agent/agentlib"
+	"v.io/x/ref/services/agent/internal/server"
 
 	_ "v.io/x/ref/profiles"
 )
@@ -108,7 +110,7 @@
 		vlog.Panic("failed to set principal for ctx: %v", err)
 	}
 
-	if err = os.Setenv(agent.FdVarName, "3"); err != nil {
+	if err = os.Setenv(agentlib.FdVarName, "3"); err != nil {
 		vlog.Fatalf("setenv: %v", err)
 	}
 
diff --git a/services/agent/agent_test.go b/services/agent/agentlib/agent_test.go
similarity index 96%
rename from services/agent/agent_test.go
rename to services/agent/agentlib/agent_test.go
index 2c3c17d..a8a70e5 100644
--- a/services/agent/agent_test.go
+++ b/services/agent/agentlib/agent_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package agent_test
+package agentlib_test
 
 import (
 	"fmt"
@@ -17,8 +17,8 @@
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/security"
-	"v.io/x/ref/services/agent"
-	"v.io/x/ref/services/agent/server"
+	"v.io/x/ref/services/agent/agentlib"
+	"v.io/x/ref/services/agent/internal/server"
 	"v.io/x/ref/test"
 	"v.io/x/ref/test/modules"
 	"v.io/x/ref/test/testutil"
@@ -44,9 +44,9 @@
 		return nil, err
 	}
 	if cached {
-		return agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
+		return agentlib.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 	} else {
-		return agent.NewUncachedPrincipal(ctx, fd, v23.GetClient(ctx))
+		return agentlib.NewUncachedPrincipal(ctx, fd, v23.GetClient(ctx))
 	}
 }
 
diff --git a/services/agent/agent_v23_test.go b/services/agent/agentlib/agent_v23_test.go
similarity index 99%
rename from services/agent/agent_v23_test.go
rename to services/agent/agentlib/agent_v23_test.go
index 33f60eb..daa9185 100644
--- a/services/agent/agent_v23_test.go
+++ b/services/agent/agentlib/agent_v23_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package agent_test
+package agentlib_test
 
 import (
 	"bytes"
diff --git a/services/agent/client.go b/services/agent/agentlib/client.go
similarity index 97%
rename from services/agent/client.go
rename to services/agent/agentlib/client.go
index 64cd670..f6aaeba 100644
--- a/services/agent/client.go
+++ b/services/agent/agentlib/client.go
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package agent provides a client for communicating with an "Agent"
-// process holding the private key for an identity.
-package agent
+// Package agentlib implements a client for communicating with an agentd process
+// holding the private key for an identity.
+package agentlib
 
 import (
 	"fmt"
diff --git a/services/agent/peer_test.go b/services/agent/agentlib/peer_test.go
similarity index 95%
rename from services/agent/peer_test.go
rename to services/agent/agentlib/peer_test.go
index 3c5ff13..ea5959d 100644
--- a/services/agent/peer_test.go
+++ b/services/agent/agentlib/peer_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package agent
+package agentlib
 
 import (
 	"v.io/v23/context"
diff --git a/services/agent/v23_test.go b/services/agent/agentlib/v23_test.go
similarity index 97%
rename from services/agent/v23_test.go
rename to services/agent/agentlib/v23_test.go
index a6b4044..3e4061b 100644
--- a/services/agent/v23_test.go
+++ b/services/agent/agentlib/v23_test.go
@@ -4,7 +4,7 @@
 
 // This file was auto-generated via go generate.
 // DO NOT UPDATE MANUALLY
-package agent_test
+package agentlib_test
 
 import "fmt"
 import "testing"
diff --git a/services/agent/server/server.go b/services/agent/internal/server/server.go
similarity index 97%
rename from services/agent/server/server.go
rename to services/agent/internal/server/server.go
index 6710b1a..46b5e0b 100644
--- a/services/agent/server/server.go
+++ b/services/agent/internal/server/server.go
@@ -26,12 +26,13 @@
 	"v.io/v23/verror"
 	"v.io/x/lib/vlog"
 	vsecurity "v.io/x/ref/lib/security"
+	"v.io/x/ref/services/agent"
 	"v.io/x/ref/services/agent/internal/unixfd"
 )
 
 const PrincipalHandleByteSize = sha512.Size
 
-const pkgPath = "v.io/x/ref/services/agent/server"
+const pkgPath = "v.io/x/ref/services/agent/internal/server"
 
 // Errors
 var (
@@ -261,9 +262,8 @@
 				}
 				spec := rpc.ListenSpec{Addrs: rpc.ListenAddrs(a)}
 				if _, err = s.Listen(spec); err == nil {
-					agent := &agentd{w.newID(), w, principal, ctx}
-					serverAgent := AgentServer(agent)
-					err = s.Serve("", serverAgent, nil)
+					server := agent.AgentServer(&agentd{w.newID(), w, principal, ctx})
+					err = s.Serve("", server, nil)
 				}
 				ack()
 			}
@@ -430,7 +430,7 @@
 	return a.principal.Roots().DebugString(), nil
 }
 
-func (a agentd) NotifyWhenChanged(call AgentNotifyWhenChangedServerCall) error {
+func (a agentd) NotifyWhenChanged(call agent.AgentNotifyWhenChangedServerCall) error {
 	ch := a.w.register(a.id)
 	defer a.w.unregister(a.id, ch)
 	for {
diff --git a/services/agent/server/sharing.go b/services/agent/internal/server/sharing.go
similarity index 100%
rename from services/agent/server/sharing.go
rename to services/agent/internal/server/sharing.go
diff --git a/services/agent/server/sharing_test.go b/services/agent/internal/server/sharing_test.go
similarity index 100%
rename from services/agent/server/sharing_test.go
rename to services/agent/internal/server/sharing_test.go
diff --git a/services/agent/internal/test_principal/main.go b/services/agent/internal/test_principal/main.go
index d60f430..06bbc52 100644
--- a/services/agent/internal/test_principal/main.go
+++ b/services/agent/internal/test_principal/main.go
@@ -16,7 +16,7 @@
 	"v.io/v23"
 	"v.io/v23/security"
 	"v.io/x/ref/envvar"
-	"v.io/x/ref/services/agent"
+	"v.io/x/ref/services/agent/agentlib"
 
 	_ "v.io/x/ref/profiles"
 )
@@ -56,8 +56,8 @@
 	if got := os.Getenv(envvar.Credentials); len(got) != 0 {
 		errorf("%v environment variable is unexpectedly set", envvar.Credentials)
 	}
-	if got := os.Getenv(agent.FdVarName); len(got) == 0 {
-		errorf("%v environment variable is not set", agent.FdVarName)
+	if got := os.Getenv(agentlib.FdVarName); len(got) == 0 {
+		errorf("%v environment variable is not set", agentlib.FdVarName)
 	}
 	// A pristine agent has a single blessing "agent_principal" (from agentd/main.go).
 	if blessings := p.BlessingsInfo(p.BlessingStore().Default()); len(blessings) != 1 {
diff --git a/services/agent/keymgr/client.go b/services/agent/keymgr/client.go
index d6c34a3..01098de 100644
--- a/services/agent/keymgr/client.go
+++ b/services/agent/keymgr/client.go
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package keymgr provides a client for the Device Manager to manage keys in
-// the "Agent" process.
+// Package keymgr implements a client for deviced to manage keys in the agentd
+// process.
 package keymgr
 
 import (
@@ -14,8 +14,8 @@
 
 	"v.io/v23/context"
 	"v.io/v23/verror"
+	"v.io/x/ref/services/agent/internal/server"
 	"v.io/x/ref/services/agent/internal/unixfd"
-	"v.io/x/ref/services/agent/server"
 )
 
 const pkgPath = "v.io/x/ref/services/agent/keymgr"
diff --git a/services/agent/keymgr/keymgr_test.go b/services/agent/keymgr/keymgr_test.go
index 1e2a521..15348b6 100644
--- a/services/agent/keymgr/keymgr_test.go
+++ b/services/agent/keymgr/keymgr_test.go
@@ -15,8 +15,8 @@
 	"v.io/v23"
 	"v.io/v23/context"
 	"v.io/v23/security"
-	"v.io/x/ref/services/agent"
-	"v.io/x/ref/services/agent/server"
+	"v.io/x/ref/services/agent/agentlib"
+	"v.io/x/ref/services/agent/internal/server"
 	"v.io/x/ref/test"
 
 	_ "v.io/x/ref/profiles"
@@ -72,7 +72,7 @@
 		return nil, err
 	}
 
-	return agent.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
+	return agentlib.NewAgentPrincipal(ctx, fd, v23.GetClient(ctx))
 }
 
 func TestSigning(t *testing.T) {
diff --git a/services/agent/server/wire.vdl b/services/agent/wire.vdl
similarity index 95%
rename from services/agent/server/wire.vdl
rename to services/agent/wire.vdl
index c025f6f..4c93acb 100644
--- a/services/agent/server/wire.vdl
+++ b/services/agent/wire.vdl
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package server provides a server which keeps a principal in memory
-// and allows clients to use that principal.
+// Package agent defines an interface to keep a private key in memory, and for
+// clients to have access to the private key.
 //
-// PROTOCOL
+// Protocol
 //
 // The agent starts processes with the VEYRON_AGENT_FD set to one end of a
 // unix domain socket. To connect to the agent, a client should create
@@ -30,9 +30,7 @@
 // The protocol also has limited support for caching: A client can
 // request notification when any other client modifies the principal so it
 // can flush the cache. See NotifyWhenChanged for details.
-
-
-package server
+package agent
 
 import (
 	"v.io/v23/security"
diff --git a/services/agent/server/wire.vdl.go b/services/agent/wire.vdl.go
similarity index 93%
rename from services/agent/server/wire.vdl.go
rename to services/agent/wire.vdl.go
index 16af73a..f01c204 100644
--- a/services/agent/server/wire.vdl.go
+++ b/services/agent/wire.vdl.go
@@ -5,7 +5,35 @@
 // This file was auto-generated by the vanadium vdl tool.
 // Source: wire.vdl
 
-package server
+// Package agent defines an interface to keep a private key in memory, and for
+// clients to have access to the private key.
+//
+// Protocol
+//
+// The agent starts processes with the VEYRON_AGENT_FD set to one end of a
+// unix domain socket. To connect to the agent, a client should create
+// a unix domain socket pair. Then send one end of the socket to the agent
+// with 1 byte of data. The agent will then serve the Agent service on
+// the received socket, using SecurityNone.
+//
+// The agent also supports an optional mode where it can manage multiple principals.
+// Typically this is only used by Device Manager. In this mode, VEYRON_AGENT_FD
+// will be 3, and there will be another socket at fd 4.
+// Creating a new principal is similar to connecting to to agent: create a socket
+// pair and send one end on fd 4 with 1 byte of data.
+// Set the data to 1 to request the principal only be stored in memory.
+// The agent will create a new principal and respond with a principal handle on fd 4.
+// To connect using a previously created principal, create a socket pair and send
+// one end with the principal handle as data on fd 4. The agent will not send a
+// response on fd 4.
+// In either, you can use the normal process to connect to an agent over the
+// other end of the pair. Typically you would pass the other end to a child
+// process and set VEYRON_AGENT_FD so it knows to connect.
+//
+// The protocol also has limited support for caching: A client can
+// request notification when any other client modifies the principal so it
+// can flush the cache. See NotifyWhenChanged for details.
+package agent
 
 import (
 	// VDL system imports
@@ -393,7 +421,7 @@
 // descAgent hides the desc to keep godoc clean.
 var descAgent = rpc.InterfaceDesc{
 	Name:    "Agent",
-	PkgPath: "v.io/x/ref/services/agent/server",
+	PkgPath: "v.io/x/ref/services/agent",
 	Methods: []rpc.MethodDesc{
 		{
 			Name: "Bless",