(backend_proxy) {
	reverse_proxy backend:8080 {
		transport http {
			dial_timeout 10s
			response_header_timeout 30s
			read_timeout 10m
			write_timeout 10m
		}
	}
}

(backend_stream_proxy) {
	reverse_proxy backend:8080 {
		flush_interval -1
		transport http {
			dial_timeout 10s
			response_header_timeout 30s
			read_timeout 10m
			write_timeout 10m
		}
	}
}

:80 {
	encode zstd gzip

	header {
		X-Content-Type-Options "nosniff"
		X-Frame-Options "DENY"
		Referrer-Policy "strict-origin-when-cross-origin"
		Permissions-Policy "camera=(), microphone=(), geolocation=()"
		-Server
	}

	request_body {
		max_size 512MB
	}

	handle /api/agent/chat/stream {
		import backend_stream_proxy
	}

	handle /api/* {
		import backend_proxy
	}

	handle /uploads/* {
		import backend_proxy
	}

	handle_path /files/* {
		reverse_proxy minio:9000
	}

	handle /ai/capabilities {
		import backend_proxy
	}

	handle /ai/activities/* {
		import backend_proxy
	}

	handle /ai/me/* {
		import backend_proxy
	}

	handle /ai/data-command {
		redir /manage/ai/data-command 308
	}

	handle /ai/data-command/* {
		redir /manage/ai/data-command{uri} 308
	}

	handle /manage {
		redir /manage/ 308
	}

	handle /admin {
		redir /manage/ 308
	}

	handle /admin/* {
		redir /manage{uri} 308
	}

	handle /manage/* {
		reverse_proxy admin-web:80
	}

	handle {
		reverse_proxy xlh-web:80
	}
}
