connection statuses

This commit is contained in:
Ollie Agent 2026-08-02 23:35:30 +02:00
parent d3860304af
commit b2fe5f1b4e
3 changed files with 28 additions and 5 deletions

View File

@ -58,10 +58,15 @@ func main() {
switch cmd {
case "read":
if len(args) != 1 {
fatalf("usage: ollie-9p read path")
openMarker := false
if len(args) == 2 && args[0] == "--open-marker" {
openMarker = true
args = args[1:]
}
cmdRead(args[0])
if len(args) != 1 {
fatalf("usage: ollie-9p read [--open-marker] path")
}
cmdRead(args[0], openMarker)
case "write":
if len(args) != 1 {
fatalf("usage: ollie-9p write path")
@ -164,13 +169,19 @@ func getuser() string {
return "none"
}
func cmdRead(path string) {
func cmdRead(path string, openMarker bool) {
fsys := dial()
fid, err := fsys.Open(path, plan9.OREAD)
if err != nil {
fatalf("open %s: %v", path, err)
}
defer fid.Close()
// This marker is emitted only after the remote 9P open succeeds. It lets
// connection-aware GUI clients distinguish an opened operation from a
// merely started local helper process.
if openMarker {
fmt.Fprintln(os.Stderr, "OLLIE_9P_OPEN")
}
if _, err := io.Copy(os.Stdout, fid); err != nil {
fatalf("read %s: %v", path, err)
}

View File

@ -110,6 +110,18 @@ func listAgents(ctx HandlerCtx) ([]FsNodeDecl, error) {
}),
),
// connection — agent execution environment connectivity. Opening this
// file performs a lightweight RPC against the session tool server.
Leaf("connection", 0444, Read(func(_ HandlerCtx) ([]byte, error) {
if s.toolsConn == nil {
return nil, fmt.Errorf("agent tool server unavailable")
}
if _, err := s.toolsConn.ListTools(); err != nil {
return nil, err
}
return []byte("connected\n"), nil
})),
// state — current agent state
Leaf("state", 0444, Read(func(_ HandlerCtx) ([]byte, error) {
return []byte(a.State() + "\n"), nil

2
kde

@ -1 +1 @@
Subproject commit c983e2bb6af6769f9dd4b757bf449abbf2f2b066
Subproject commit 6e7245dd993f7db2f3a0dd51fb77391f9fa72664