1
0
forked from wrenn/wrenn

Merge branch 'main' of git.omukk.dev:wrenn/wrenn into dev

This commit is contained in:
2026-04-10 03:03:04 +06:00
66 changed files with 213 additions and 213 deletions

View File

@ -54,9 +54,9 @@ User SDK → HTTPS/WS → Control Plane → Connect RPC → Host Agent → HTTP/
| Binary | Module | Entry point | Runs as | | Binary | Module | Entry point | Runs as |
|--------|--------|-------------|---------| |--------|--------|-------------|---------|
| wrenn-cp | `git.omukk.dev/wrenn/sandbox` | `cmd/control-plane/main.go` | Unprivileged | | wrenn-cp | `git.omukk.dev/wrenn/wrenn` | `cmd/control-plane/main.go` | Unprivileged |
| wrenn-agent | `git.omukk.dev/wrenn/sandbox` | `cmd/host-agent/main.go` | Root (NET_ADMIN + /dev/kvm) | | wrenn-agent | `git.omukk.dev/wrenn/wrenn` | `cmd/host-agent/main.go` | Root (NET_ADMIN + /dev/kvm) |
| envd | `git.omukk.dev/wrenn/sandbox/envd` (standalone `envd/go.mod`) | `envd/main.go` | PID 1 inside guest VM | | envd | `git.omukk.dev/wrenn/wrenn/envd` (standalone `envd/go.mod`) | `envd/main.go` | PID 1 inside guest VM |
envd is a **completely independent Go module**. It is never imported by the main module. The only connection is the protobuf contract. It compiles to a static binary baked into rootfs images. envd is a **completely independent Go module**. It is never imported by the main module. The only connection is the protobuf contract. It compiles to a static binary baked into rootfs images.
@ -89,7 +89,7 @@ Startup (`cmd/host-agent/main.go`) wires: root check → enable IP forwarding
### envd (Guest Agent) ### envd (Guest Agent)
**Module:** `envd/` with its own `go.mod` (`git.omukk.dev/wrenn/sandbox/envd`) **Module:** `envd/` with its own `go.mod` (`git.omukk.dev/wrenn/wrenn/envd`)
Runs as PID 1 inside the microVM via `wrenn-init.sh` (mounts procfs/sysfs/dev, sets hostname, writes resolv.conf, then execs envd). Extracted from E2B (Apache 2.0), with shared packages internalized into `envd/internal/shared/`. Listens on TCP `0.0.0.0:49983`. Runs as PID 1 inside the microVM via `wrenn-init.sh` (mounts procfs/sysfs/dev, sets hostname, writes resolv.conf, then execs envd). Extracted from E2B (Apache 2.0), with shared packages internalized into `envd/internal/shared/`. Listens on TCP `0.0.0.0:49983`.

View File

@ -1,6 +1,6 @@
# Wrenn Sandbox # Wrenn
MicroVM-based code execution platform. Firecracker VMs, not containers. Pool-based pricing, persistent sandboxes, Python/TS/Go SDKs. Secure infrastructure for AI
## Deployment ## Deployment

View File

@ -13,15 +13,15 @@ import (
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/api" "git.omukk.dev/wrenn/wrenn/internal/api"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/auth/oauth" "git.omukk.dev/wrenn/wrenn/internal/auth/oauth"
"git.omukk.dev/wrenn/sandbox/internal/channels" "git.omukk.dev/wrenn/wrenn/internal/channels"
"git.omukk.dev/wrenn/sandbox/internal/config" "git.omukk.dev/wrenn/wrenn/internal/config"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/scheduler" "git.omukk.dev/wrenn/wrenn/internal/scheduler"
) )
func main() { func main() {

View File

@ -15,12 +15,12 @@ import (
"github.com/joho/godotenv" "github.com/joho/godotenv"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/devicemapper" "git.omukk.dev/wrenn/wrenn/internal/devicemapper"
"git.omukk.dev/wrenn/sandbox/internal/hostagent" "git.omukk.dev/wrenn/wrenn/internal/hostagent"
"git.omukk.dev/wrenn/sandbox/internal/network" "git.omukk.dev/wrenn/wrenn/internal/network"
"git.omukk.dev/wrenn/sandbox/internal/sandbox" "git.omukk.dev/wrenn/wrenn/internal/sandbox"
"git.omukk.dev/wrenn/sandbox/proto/hostagent/gen/hostagentv1connect" "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen/hostagentv1connect"
) )
func main() { func main() {

2
go.mod
View File

@ -1,4 +1,4 @@
module git.omukk.dev/wrenn/sandbox module git.omukk.dev/wrenn/wrenn
go 1.25.8 go 1.25.8

View File

@ -6,9 +6,9 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/proto/hostagent/gen/hostagentv1connect" "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen/hostagentv1connect"
) )
// agentForHost looks up the host record and returns a Connect RPC client for it. // agentForHost looks up the host record and returns a Connect RPC client for it.

View File

@ -17,10 +17,10 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
) )
// Sentinel errors returned by proxyTarget, used to map to HTTP status codes // Sentinel errors returned by proxyTarget, used to map to HTTP status codes

View File

@ -6,11 +6,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type apiKeyHandler struct { type apiKeyHandler struct {

View File

@ -8,9 +8,9 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type auditHandler struct { type auditHandler struct {

View File

@ -12,9 +12,9 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// loginTeam returns the team and role to stamp into a login JWT. // loginTeam returns the team and role to stamp into a login JWT.

View File

@ -10,13 +10,13 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/layout" "git.omukk.dev/wrenn/wrenn/internal/layout"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
"git.omukk.dev/wrenn/sandbox/internal/validate" "git.omukk.dev/wrenn/wrenn/internal/validate"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type buildHandler struct { type buildHandler struct {

View File

@ -8,11 +8,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/channels" "git.omukk.dev/wrenn/wrenn/internal/channels"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
type channelHandler struct { type channelHandler struct {

View File

@ -12,11 +12,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type execHandler struct { type execHandler struct {

View File

@ -12,11 +12,11 @@ import (
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type execStreamHandler struct { type execStreamHandler struct {

View File

@ -9,11 +9,11 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type filesHandler struct { type filesHandler struct {

View File

@ -10,11 +10,11 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type filesStreamHandler struct { type filesStreamHandler struct {

View File

@ -10,11 +10,11 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type hostHandler struct { type hostHandler struct {

View File

@ -9,11 +9,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type sandboxMetricsHandler struct { type sandboxMetricsHandler struct {

View File

@ -16,10 +16,10 @@ import (
"github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/auth/oauth" "git.omukk.dev/wrenn/wrenn/internal/auth/oauth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
type oauthHandler struct { type oauthHandler struct {

View File

@ -7,11 +7,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type sandboxHandler struct { type sandboxHandler struct {

View File

@ -13,15 +13,15 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/layout" "git.omukk.dev/wrenn/wrenn/internal/layout"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
"git.omukk.dev/wrenn/sandbox/internal/validate" "git.omukk.dev/wrenn/wrenn/internal/validate"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
type snapshotHandler struct { type snapshotHandler struct {

View File

@ -5,8 +5,8 @@ import (
"net/http" "net/http"
"time" "time"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type statsHandler struct { type statsHandler struct {

View File

@ -9,11 +9,11 @@ import (
"github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
type teamHandler struct { type teamHandler struct {

View File

@ -6,9 +6,9 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
type usersHandler struct { type usersHandler struct {

View File

@ -8,11 +8,11 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
// unreachableThreshold is how long a host can go without a heartbeat before // unreachableThreshold is how long a host can go without a heartbeat before

View File

@ -5,7 +5,7 @@ import (
"log/slog" "log/slog"
"time" "time"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
) )
// MetricsSampler records per-team sandbox resource usage to // MetricsSampler records per-team sandbox resource usage to

View File

@ -14,7 +14,7 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
type errorResponse struct { type errorResponse struct {

View File

@ -3,8 +3,8 @@ package api
import ( import (
"net/http" "net/http"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
) )
// requireAdmin validates that the authenticated user is a platform admin. // requireAdmin validates that the authenticated user is a platform admin.

View File

@ -5,9 +5,9 @@ import (
"net/http" "net/http"
"strings" "strings"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// requireAPIKeyOrJWT accepts either X-API-Key header or Authorization: Bearer JWT. // requireAPIKeyOrJWT accepts either X-API-Key header or Authorization: Bearer JWT.

View File

@ -3,8 +3,8 @@ package api
import ( import (
"net/http" "net/http"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// requireHostToken validates the X-Host-Token header containing a host JWT, // requireHostToken validates the X-Host-Token header containing a host JWT,

View File

@ -4,8 +4,8 @@ import (
"net/http" "net/http"
"strings" "strings"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// requireJWT validates the Authorization: Bearer <token> header, verifies the JWT // requireJWT validates the Authorization: Bearer <token> header, verifies the JWT

View File

@ -9,14 +9,14 @@ import (
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/audit" "git.omukk.dev/wrenn/wrenn/internal/audit"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/auth/oauth" "git.omukk.dev/wrenn/wrenn/internal/auth/oauth"
"git.omukk.dev/wrenn/sandbox/internal/channels" "git.omukk.dev/wrenn/wrenn/internal/channels"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/scheduler" "git.omukk.dev/wrenn/wrenn/internal/scheduler"
"git.omukk.dev/wrenn/sandbox/internal/service" "git.omukk.dev/wrenn/wrenn/internal/service"
) )
//go:embed openapi.yaml //go:embed openapi.yaml

View File

@ -7,10 +7,10 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// AuditLogger writes audit log entries for user-initiated and system events. // AuditLogger writes audit log entries for user-initiated and system events.

View File

@ -7,7 +7,7 @@ import (
"github.com/golang-jwt/jwt/v5" "github.com/golang-jwt/jwt/v5"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
const jwtExpiry = 6 * time.Hour const jwtExpiry = 6 * time.Hour

View File

@ -7,7 +7,7 @@ import (
"github.com/containrrr/shoutrrr" "github.com/containrrr/shoutrrr"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
) )
// Deliver sends a notification to a single provider with the given config. // Deliver sends a notification to a single provider with the given config.

View File

@ -8,9 +8,9 @@ import (
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
const ( const (

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"strings" "strings"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
) )
// FormatMessage produces a human-readable notification string containing // FormatMessage produces a human-readable notification string containing

View File

@ -7,7 +7,7 @@ import (
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
) )
const streamKey = "wrenn:events" const streamKey = "wrenn:events"

View File

@ -13,10 +13,10 @@ import (
"github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/events" "git.omukk.dev/wrenn/wrenn/internal/events"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/validate" "git.omukk.dev/wrenn/wrenn/internal/validate"
) )
// Valid providers. // Valid providers.

View File

@ -12,8 +12,8 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
envdpb "git.omukk.dev/wrenn/sandbox/proto/envd/gen" envdpb "git.omukk.dev/wrenn/wrenn/proto/envd/gen"
"git.omukk.dev/wrenn/sandbox/proto/envd/gen/genconnect" "git.omukk.dev/wrenn/wrenn/proto/envd/gen/genconnect"
) )
// Client wraps the Connect RPC client for envd's Process and Filesystem services. // Client wraps the Connect RPC client for envd's Process and Filesystem services.

View File

@ -8,7 +8,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"git.omukk.dev/wrenn/sandbox/internal/sandbox" "git.omukk.dev/wrenn/wrenn/internal/sandbox"
) )
// ProxyHandler reverse-proxies HTTP requests to services running inside // ProxyHandler reverse-proxies HTTP requests to services running inside

View File

@ -15,10 +15,10 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
"git.omukk.dev/wrenn/sandbox/proto/hostagent/gen/hostagentv1connect" "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen/hostagentv1connect"
"git.omukk.dev/wrenn/sandbox/internal/sandbox" "git.omukk.dev/wrenn/wrenn/internal/sandbox"
) )
// Server implements the HostAgentService Connect RPC handler. // Server implements the HostAgentService Connect RPC handler.

View File

@ -5,7 +5,7 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// IsMinimal reports whether the given team and template IDs represent the // IsMinimal reports whether the given team and template IDs represent the

View File

@ -6,7 +6,7 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
func TestIsMinimal(t *testing.T) { func TestIsMinimal(t *testing.T) {

View File

@ -8,9 +8,9 @@ import (
"sync" "sync"
"time" "time"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/proto/hostagent/gen/hostagentv1connect" "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen/hostagentv1connect"
) )
// HostClientPool maintains a cache of Connect RPC clients keyed by host ID. // HostClientPool maintains a cache of Connect RPC clients keyed by host ID.

View File

@ -9,7 +9,7 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
// DefaultStepTimeout is the fallback timeout for RUN steps that carry no // DefaultStepTimeout is the fallback timeout for RUN steps that carry no

View File

@ -7,8 +7,8 @@ import (
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/layout" "git.omukk.dev/wrenn/wrenn/internal/layout"
) )
// DefaultDiskSizeMB is the standard disk size for base images. Images smaller // DefaultDiskSizeMB is the standard disk size for base images. Images smaller

View File

@ -15,15 +15,15 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/devicemapper" "git.omukk.dev/wrenn/wrenn/internal/devicemapper"
"git.omukk.dev/wrenn/sandbox/internal/envdclient" "git.omukk.dev/wrenn/wrenn/internal/envdclient"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/layout" "git.omukk.dev/wrenn/wrenn/internal/layout"
"git.omukk.dev/wrenn/sandbox/internal/models" "git.omukk.dev/wrenn/wrenn/internal/models"
"git.omukk.dev/wrenn/sandbox/internal/network" "git.omukk.dev/wrenn/wrenn/internal/network"
"git.omukk.dev/wrenn/sandbox/internal/snapshot" "git.omukk.dev/wrenn/wrenn/internal/snapshot"
"git.omukk.dev/wrenn/sandbox/internal/uffd" "git.omukk.dev/wrenn/wrenn/internal/uffd"
"git.omukk.dev/wrenn/sandbox/internal/vm" "git.omukk.dev/wrenn/wrenn/internal/vm"
) )
// Config holds the paths and defaults for the sandbox manager. // Config holds the paths and defaults for the sandbox manager.

View File

@ -7,7 +7,7 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
) )
// HostScheduler selects a host for a new sandbox. Implementations may use // HostScheduler selects a host for a new sandbox. Implementations may use

View File

@ -6,9 +6,9 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
// APIKeyService provides API key operations shared between the REST API and the dashboard. // APIKeyService provides API key operations shared between the REST API and the dashboard.

View File

@ -8,8 +8,8 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
) )
const auditMaxLimit = 200 const auditMaxLimit = 200

View File

@ -13,12 +13,12 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/recipe" "git.omukk.dev/wrenn/wrenn/internal/recipe"
"git.omukk.dev/wrenn/sandbox/internal/scheduler" "git.omukk.dev/wrenn/wrenn/internal/scheduler"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
const ( const (

View File

@ -14,11 +14,11 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9"
"git.omukk.dev/wrenn/sandbox/internal/auth" "git.omukk.dev/wrenn/wrenn/internal/auth"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
// HostService provides host management operations. // HostService provides host management operations.

View File

@ -9,12 +9,12 @@ import (
"connectrpc.com/connect" "connectrpc.com/connect"
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
"git.omukk.dev/wrenn/sandbox/internal/scheduler" "git.omukk.dev/wrenn/wrenn/internal/scheduler"
"git.omukk.dev/wrenn/sandbox/internal/validate" "git.omukk.dev/wrenn/wrenn/internal/validate"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
// SandboxService provides sandbox lifecycle operations shared between the // SandboxService provides sandbox lifecycle operations shared between the

View File

@ -10,7 +10,7 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
) )
// TimeRange identifies a chart time window. // TimeRange identifies a chart time window.

View File

@ -12,10 +12,10 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"github.com/jackc/pgx/v5/pgxpool" "github.com/jackc/pgx/v5/pgxpool"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
"git.omukk.dev/wrenn/sandbox/internal/id" "git.omukk.dev/wrenn/wrenn/internal/id"
"git.omukk.dev/wrenn/sandbox/internal/lifecycle" "git.omukk.dev/wrenn/wrenn/internal/lifecycle"
pb "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" pb "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
) )
var teamNameRE = regexp.MustCompile(`^[A-Za-z0-9 _\-@']{1,128}$`) var teamNameRE = regexp.MustCompile(`^[A-Za-z0-9 _\-@']{1,128}$`)

View File

@ -5,7 +5,7 @@ import (
"github.com/jackc/pgx/v5/pgtype" "github.com/jackc/pgx/v5/pgtype"
"git.omukk.dev/wrenn/sandbox/internal/db" "git.omukk.dev/wrenn/wrenn/internal/db"
) )
// TemplateService provides template/snapshot operations shared between the // TemplateService provides template/snapshot operations shared between the

View File

@ -27,7 +27,7 @@ import (
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
"git.omukk.dev/wrenn/sandbox/internal/snapshot" "git.omukk.dev/wrenn/wrenn/internal/snapshot"
) )
const ( const (

View File

@ -10,4 +10,4 @@ managed:
enabled: true enabled: true
override: override:
- file_option: go_package_prefix - file_option: go_package_prefix
value: git.omukk.dev/wrenn/sandbox/proto/envd/gen value: git.omukk.dev/wrenn/wrenn/proto/envd/gen

View File

@ -1330,8 +1330,8 @@ const file_filesystem_proto_rawDesc = "" +
"\bWatchDir\x12\x1b.filesystem.WatchDirRequest\x1a\x1c.filesystem.WatchDirResponse0\x01\x12T\n" + "\bWatchDir\x12\x1b.filesystem.WatchDirRequest\x1a\x1c.filesystem.WatchDirResponse0\x01\x12T\n" +
"\rCreateWatcher\x12 .filesystem.CreateWatcherRequest\x1a!.filesystem.CreateWatcherResponse\x12]\n" + "\rCreateWatcher\x12 .filesystem.CreateWatcherRequest\x1a!.filesystem.CreateWatcherResponse\x12]\n" +
"\x10GetWatcherEvents\x12#.filesystem.GetWatcherEventsRequest\x1a$.filesystem.GetWatcherEventsResponse\x12T\n" + "\x10GetWatcherEvents\x12#.filesystem.GetWatcherEventsRequest\x1a$.filesystem.GetWatcherEventsResponse\x12T\n" +
"\rRemoveWatcher\x12 .filesystem.RemoveWatcherRequest\x1a!.filesystem.RemoveWatcherResponseB\x95\x01\n" + "\rRemoveWatcher\x12 .filesystem.RemoveWatcherRequest\x1a!.filesystem.RemoveWatcherResponseB\x93\x01\n" +
"\x0ecom.filesystemB\x0fFilesystemProtoP\x01Z*git.omukk.dev/wrenn/sandbox/proto/envd/gen\xa2\x02\x03FXX\xaa\x02\n" + "\x0ecom.filesystemB\x0fFilesystemProtoP\x01Z(git.omukk.dev/wrenn/wrenn/proto/envd/gen\xa2\x02\x03FXX\xaa\x02\n" +
"Filesystem\xca\x02\n" + "Filesystem\xca\x02\n" +
"Filesystem\xe2\x02\x16Filesystem\\GPBMetadata\xea\x02\n" + "Filesystem\xe2\x02\x16Filesystem\\GPBMetadata\xea\x02\n" +
"Filesystemb\x06proto3" "Filesystemb\x06proto3"

View File

@ -10,7 +10,7 @@ import (
connect "connectrpc.com/connect" connect "connectrpc.com/connect"
context "context" context "context"
errors "errors" errors "errors"
gen "git.omukk.dev/wrenn/sandbox/proto/envd/gen" gen "git.omukk.dev/wrenn/wrenn/proto/envd/gen"
http "net/http" http "net/http"
strings "strings" strings "strings"
) )

View File

@ -10,7 +10,7 @@ import (
connect "connectrpc.com/connect" connect "connectrpc.com/connect"
context "context" context "context"
errors "errors" errors "errors"
gen "git.omukk.dev/wrenn/sandbox/proto/envd/gen" gen "git.omukk.dev/wrenn/wrenn/proto/envd/gen"
http "net/http" http "net/http"
strings "strings" strings "strings"
) )

View File

@ -1817,8 +1817,8 @@ const file_process_proto_rawDesc = "" +
"\n" + "\n" +
"SendSignal\x12\x1a.process.SendSignalRequest\x1a\x1b.process.SendSignalResponse\x12E\n" + "SendSignal\x12\x1a.process.SendSignalRequest\x1a\x1b.process.SendSignalResponse\x12E\n" +
"\n" + "\n" +
"CloseStdin\x12\x1a.process.CloseStdinRequest\x1a\x1b.process.CloseStdinResponseB\x83\x01\n" + "CloseStdin\x12\x1a.process.CloseStdinRequest\x1a\x1b.process.CloseStdinResponseB\x81\x01\n" +
"\vcom.processB\fProcessProtoP\x01Z*git.omukk.dev/wrenn/sandbox/proto/envd/gen\xa2\x02\x03PXX\xaa\x02\aProcess\xca\x02\aProcess\xe2\x02\x13Process\\GPBMetadata\xea\x02\aProcessb\x06proto3" "\vcom.processB\fProcessProtoP\x01Z(git.omukk.dev/wrenn/wrenn/proto/envd/gen\xa2\x02\x03PXX\xaa\x02\aProcess\xca\x02\aProcess\xe2\x02\x13Process\\GPBMetadata\xea\x02\aProcessb\x06proto3"
var ( var (
file_process_proto_rawDescOnce sync.Once file_process_proto_rawDescOnce sync.Once

View File

@ -10,4 +10,4 @@ managed:
enabled: true enabled: true
override: override:
- file_option: go_package_prefix - file_option: go_package_prefix
value: git.omukk.dev/wrenn/sandbox/proto/hostagent/gen value: git.omukk.dev/wrenn/wrenn/proto/hostagent/gen

View File

@ -2562,8 +2562,8 @@ const file_hostagent_proto_rawDesc = "" +
"\tTerminate\x12\x1e.hostagent.v1.TerminateRequest\x1a\x1f.hostagent.v1.TerminateResponse\x12d\n" + "\tTerminate\x12\x1e.hostagent.v1.TerminateRequest\x1a\x1f.hostagent.v1.TerminateResponse\x12d\n" +
"\x11GetSandboxMetrics\x12&.hostagent.v1.GetSandboxMetricsRequest\x1a'.hostagent.v1.GetSandboxMetricsResponse\x12j\n" + "\x11GetSandboxMetrics\x12&.hostagent.v1.GetSandboxMetricsRequest\x1a'.hostagent.v1.GetSandboxMetricsResponse\x12j\n" +
"\x13FlushSandboxMetrics\x12(.hostagent.v1.FlushSandboxMetricsRequest\x1a).hostagent.v1.FlushSandboxMetricsResponse\x12X\n" + "\x13FlushSandboxMetrics\x12(.hostagent.v1.FlushSandboxMetricsRequest\x1a).hostagent.v1.FlushSandboxMetricsResponse\x12X\n" +
"\rFlattenRootfs\x12\".hostagent.v1.FlattenRootfsRequest\x1a#.hostagent.v1.FlattenRootfsResponseB\xb0\x01\n" + "\rFlattenRootfs\x12\".hostagent.v1.FlattenRootfsRequest\x1a#.hostagent.v1.FlattenRootfsResponseB\xae\x01\n" +
"\x10com.hostagent.v1B\x0eHostagentProtoP\x01Z;git.omukk.dev/wrenn/sandbox/proto/hostagent/gen;hostagentv1\xa2\x02\x03HXX\xaa\x02\fHostagent.V1\xca\x02\fHostagent\\V1\xe2\x02\x18Hostagent\\V1\\GPBMetadata\xea\x02\rHostagent::V1b\x06proto3" "\x10com.hostagent.v1B\x0eHostagentProtoP\x01Z9git.omukk.dev/wrenn/wrenn/proto/hostagent/gen;hostagentv1\xa2\x02\x03HXX\xaa\x02\fHostagent.V1\xca\x02\fHostagent\\V1\xe2\x02\x18Hostagent\\V1\\GPBMetadata\xea\x02\rHostagent::V1b\x06proto3"
var ( var (
file_hostagent_proto_rawDescOnce sync.Once file_hostagent_proto_rawDescOnce sync.Once

View File

@ -8,7 +8,7 @@ import (
connect "connectrpc.com/connect" connect "connectrpc.com/connect"
context "context" context "context"
errors "errors" errors "errors"
gen "git.omukk.dev/wrenn/sandbox/proto/hostagent/gen" gen "git.omukk.dev/wrenn/wrenn/proto/hostagent/gen"
http "net/http" http "net/http"
strings "strings" strings "strings"
) )