Skip to content

Agent SDK Quickstart

This guide shows how to build a minimal agent in ~50 lines.

package main

import (
  "context"

  agentv1 "github.com/7k-minato/minato/api/agent/v1/minato/agent/v1"
  "github.com/7k-minato/minato/sdk/agent/server"
)

type agent struct{}

func main() {
  _, _ = server.Serve(&agent{}, server.Options{})
  select {}
}

func (a *agent) Info(ctx context.Context, req *agentv1.InfoRequest) (*agentv1.InfoResponse, error) {
  return &agentv1.InfoResponse{Name: "my-agent", Version: "0.1.0"}, nil
}

func (a *agent) HealthCheck(ctx context.Context, req *agentv1.HealthRequest) (*agentv1.HealthResponse, error) {
  return &agentv1.HealthResponse{Ready: true, Message: "ok"}, nil
}

func (a *agent) PrepareShutdown(ctx context.Context, req *agentv1.ShutdownRequest) (*agentv1.ShutdownResponse, error) {
  return &agentv1.ShutdownResponse{Success: true}, nil
}

func (a *agent) GetPlayers(ctx context.Context, req *agentv1.PlayersRequest) (*agentv1.PlayersResponse, error) {
  return &agentv1.PlayersResponse{Online: 0, Capacity: 0}, nil
}

func (a *agent) ExecuteAction(ctx context.Context, req *agentv1.ExecuteActionRequest) (*agentv1.ExecuteActionResponse, error) {
  return &agentv1.ExecuteActionResponse{State: agentv1.ActionState_ACTION_STATE_SUCCEEDED}, nil
}

func (a *agent) Console(stream agentv1.Agent_ConsoleServer) error {
  return nil
}