diff --git a/autogpt_platform/frontend/src/app/auth/callback/route.ts b/autogpt_platform/frontend/src/app/auth/callback/route.ts index c81341523..5d3e1e953 100644 --- a/autogpt_platform/frontend/src/app/auth/callback/route.ts +++ b/autogpt_platform/frontend/src/app/auth/callback/route.ts @@ -6,7 +6,7 @@ export async function GET(request: Request) { const { searchParams, origin } = new URL(request.url); const code = searchParams.get("code"); // if "next" is in param, use it as the redirect URL - const next = searchParams.get("next") ?? "/profile"; + const next = searchParams.get("next") ?? "/"; if (code) { const supabase = createServerClient(); diff --git a/autogpt_platform/frontend/src/app/build/page.tsx b/autogpt_platform/frontend/src/app/build/page.tsx index 6d4c928c8..6b5ea497e 100644 --- a/autogpt_platform/frontend/src/app/build/page.tsx +++ b/autogpt_platform/frontend/src/app/build/page.tsx @@ -8,7 +8,7 @@ export default function Home() { return ( diff --git a/autogpt_platform/frontend/src/app/layout.tsx b/autogpt_platform/frontend/src/app/layout.tsx index 49ba9c7ac..d175adc21 100644 --- a/autogpt_platform/frontend/src/app/layout.tsx +++ b/autogpt_platform/frontend/src/app/layout.tsx @@ -34,7 +34,7 @@ export default function RootLayout({ >
-
{children}
+
{children}
diff --git a/autogpt_platform/frontend/src/app/login/actions.ts b/autogpt_platform/frontend/src/app/login/actions.ts index b0f4a59bf..ef0bff17d 100644 --- a/autogpt_platform/frontend/src/app/login/actions.ts +++ b/autogpt_platform/frontend/src/app/login/actions.ts @@ -30,7 +30,7 @@ export async function login(values: z.infer) { } revalidatePath("/", "layout"); - redirect("/profile"); + redirect("/"); }); } @@ -61,7 +61,7 @@ export async function signup(values: z.infer) { } revalidatePath("/", "layout"); - redirect("/profile"); + redirect("/"); }, ); } diff --git a/autogpt_platform/frontend/src/app/login/page.tsx b/autogpt_platform/frontend/src/app/login/page.tsx index b21dd95e5..ad70e2698 100644 --- a/autogpt_platform/frontend/src/app/login/page.tsx +++ b/autogpt_platform/frontend/src/app/login/page.tsx @@ -48,8 +48,8 @@ export default function LoginPage() { }); if (user) { - console.log("User exists, redirecting to profile"); - router.push("/profile"); + console.log("User exists, redirecting to home"); + router.push("/"); } if (isUserLoading || isSupabaseLoading || user) { diff --git a/autogpt_platform/frontend/src/components/CustomNode.tsx b/autogpt_platform/frontend/src/components/CustomNode.tsx index 8c434b936..91c275a0f 100644 --- a/autogpt_platform/frontend/src/components/CustomNode.tsx +++ b/autogpt_platform/frontend/src/components/CustomNode.tsx @@ -585,7 +585,7 @@ export function CustomNode({ data, id, width, height }: NodeProps) { {blockCost && (
- {blockCost.cost_amount} per {blockCost.cost_type} + {blockCost.cost_amount} credits/{blockCost.cost_type}
)} diff --git a/autogpt_platform/frontend/src/components/DataTable.tsx b/autogpt_platform/frontend/src/components/DataTable.tsx index 6ab4a42e9..aba62af6c 100644 --- a/autogpt_platform/frontend/src/components/DataTable.tsx +++ b/autogpt_platform/frontend/src/components/DataTable.tsx @@ -1,3 +1,4 @@ +import React from "react"; import { beautifyString } from "@/lib/utils"; import { Button } from "./ui/button"; import { @@ -10,6 +11,7 @@ import { } from "./ui/table"; import { Clipboard } from "lucide-react"; import { useToast } from "./ui/use-toast"; +import { ContentRenderer } from "./ui/render"; type DataTableProps = { title?: string; @@ -72,17 +74,15 @@ export default function DataTable({ > - {value - .map((i) => { - const text = - typeof i === "object" - ? JSON.stringify(i, null, 2) - : String(i); - return truncateLongData && text.length > maxChars - ? text.slice(0, maxChars) + "..." - : text; - }) - .join(", ")} + {value.map((item, index) => ( + + + {index < value.length - 1 && ", "} + + ))} diff --git a/autogpt_platform/frontend/src/components/Flow.tsx b/autogpt_platform/frontend/src/components/Flow.tsx index a55fd5fc4..7d22be392 100644 --- a/autogpt_platform/frontend/src/components/Flow.tsx +++ b/autogpt_platform/frontend/src/components/Flow.tsx @@ -579,21 +579,27 @@ const FlowEditor: React.FC<{ > - - - requestSave(isTemplate ?? false)} - agentDescription={agentDescription} - onDescriptionChange={setAgentDescription} - agentName={agentName} - onNameChange={setAgentName} - /> - + + } + botChildren={ + requestSave(isTemplate ?? false)} + agentDescription={agentDescription} + onDescriptionChange={setAgentDescription} + agentName={agentName} + onNameChange={setAgentName} + /> + } + > runnerUIRef.current?.openRunnerOutput()} onClickRunAgent={() => { diff --git a/autogpt_platform/frontend/src/components/NavBar.tsx b/autogpt_platform/frontend/src/components/NavBar.tsx index 2ae259d88..667d653bf 100644 --- a/autogpt_platform/frontend/src/components/NavBar.tsx +++ b/autogpt_platform/frontend/src/components/NavBar.tsx @@ -5,19 +5,9 @@ import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; import Image from "next/image"; import getServerUser from "@/hooks/getServerUser"; import ProfileDropdown from "./ProfileDropdown"; -import { - IconCircleUser, - IconMenu, - IconPackage2, - IconRefresh, - IconSquareActivity, - IconWorkFlow, -} from "@/components/ui/icons"; -import AutoGPTServerAPI from "@/lib/autogpt-server-api"; +import { IconCircleUser, IconMenu } from "@/components/ui/icons"; import CreditButton from "@/components/CreditButton"; -import { BsBoxes } from "react-icons/bs"; -import { LuLaptop } from "react-icons/lu"; -import { LuShoppingCart } from "react-icons/lu"; +import { NavBarButtons } from "./NavBarButtons"; export async function NavBar() { const isAvailable = Boolean( @@ -27,7 +17,7 @@ export async function NavBar() { const { user } = await getServerUser(); return ( -
+
@@ -42,28 +32,11 @@ export async function NavBar() { -
diff --git a/autogpt_platform/frontend/src/components/NavBarButtons.tsx b/autogpt_platform/frontend/src/components/NavBarButtons.tsx new file mode 100644 index 000000000..5ca410e31 --- /dev/null +++ b/autogpt_platform/frontend/src/components/NavBarButtons.tsx @@ -0,0 +1,49 @@ +"use client"; + +import Link from "next/link"; +import { BsBoxes } from "react-icons/bs"; +import { LuLaptop } from "react-icons/lu"; +import { LuShoppingCart } from "react-icons/lu"; +import { cn } from "@/lib/utils"; +import { usePathname } from "next/navigation"; + +export function NavBarButtons({ className }: { className?: string }) { + "use client"; + + const pathname = usePathname(); + const buttons = [ + { + href: "/marketplace", + text: "Marketplace", + icon: , + }, + { + href: "/", + text: "Monitor", + icon: , + }, + { + href: "/build", + text: "Build", + icon: , + }, + ]; + + const activeButton = buttons.find((button) => button.href === pathname); + + console.log(">>>> ", activeButton); + + return buttons.map((button) => ( + + {button.icon} {button.text} + + )); +} diff --git a/autogpt_platform/frontend/src/components/PrimaryActionButton.tsx b/autogpt_platform/frontend/src/components/PrimaryActionButton.tsx index 739ad10cd..2d399306e 100644 --- a/autogpt_platform/frontend/src/components/PrimaryActionButton.tsx +++ b/autogpt_platform/frontend/src/components/PrimaryActionButton.tsx @@ -32,7 +32,7 @@ const PrimaryActionBar: React.FC = ({ const runButtonOnClick = !isRunning ? onClickRunAgent : requestStopRun; return ( -
+
@@ -42,8 +42,10 @@ const PrimaryActionBar: React.FC = ({ size="primary" variant="outline" > - - Agent Outputs + + + Agent Outputs{" "} + @@ -62,7 +64,9 @@ const PrimaryActionBar: React.FC = ({ }} > {runButtonIcon} - {runButtonLabel} + + {runButtonLabel} + diff --git a/autogpt_platform/frontend/src/components/TallyPopup.tsx b/autogpt_platform/frontend/src/components/TallyPopup.tsx index d16ed8787..f37e08b3f 100644 --- a/autogpt_platform/frontend/src/components/TallyPopup.tsx +++ b/autogpt_platform/frontend/src/components/TallyPopup.tsx @@ -47,7 +47,7 @@ const TallyPopupSimple = () => { }; return ( -
+
diff --git a/autogpt_platform/frontend/src/components/edit/control/BlocksControl.tsx b/autogpt_platform/frontend/src/components/edit/control/BlocksControl.tsx index cfea58996..0813d08d9 100644 --- a/autogpt_platform/frontend/src/components/edit/control/BlocksControl.tsx +++ b/autogpt_platform/frontend/src/components/edit/control/BlocksControl.tsx @@ -138,7 +138,7 @@ export const BlocksControl: React.FC = ({ ))}
- + { return ( - + -
- {children} +
+ {topChildren} {controls.map((control, index) => ( @@ -67,6 +69,8 @@ export const ControlPanel = ({ {control.label} ))} + + {botChildren}
diff --git a/autogpt_platform/frontend/src/components/flow.css b/autogpt_platform/frontend/src/components/flow.css index 830099e75..30ef76b68 100644 --- a/autogpt_platform/frontend/src/components/flow.css +++ b/autogpt_platform/frontend/src/components/flow.css @@ -111,6 +111,9 @@ textarea::placeholder { } .flow-container { - width: 100%; - height: 600px; /* Adjust this height as needed */ + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 100vh; } diff --git a/autogpt_platform/frontend/src/components/ui/button.tsx b/autogpt_platform/frontend/src/components/ui/button.tsx index 467f58b2d..2239996ac 100644 --- a/autogpt_platform/frontend/src/components/ui/button.tsx +++ b/autogpt_platform/frontend/src/components/ui/button.tsx @@ -25,7 +25,7 @@ const buttonVariants = cva( default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", - primary: "h-14 w-44 rounded-2xl", + primary: "md:h-14 md:w-44 rounded-2xl h-10 w-28", icon: "h-9 w-9", }, }, diff --git a/autogpt_platform/frontend/src/components/ui/render.tsx b/autogpt_platform/frontend/src/components/ui/render.tsx new file mode 100644 index 000000000..b6147130d --- /dev/null +++ b/autogpt_platform/frontend/src/components/ui/render.tsx @@ -0,0 +1,82 @@ +"use client"; + +import * as React from "react"; +import Image from "next/image"; + +const getYouTubeVideoId = (url: string) => { + const regExp = + /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/; + const match = url.match(regExp); + return match && match[7].length === 11 ? match[7] : null; +}; + +const isValidVideoUrl = (url: string): boolean => { + const videoExtensions = /\.(mp4|webm|ogg)$/i; + const youtubeRegex = /^(https?:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$/; + return videoExtensions.test(url) || youtubeRegex.test(url); +}; + +const isValidImageUrl = (url: string): boolean => { + const imageExtensions = /\.(jpeg|jpg|gif|png|svg|webp)$/i; + return imageExtensions.test(url); +}; + +const VideoRenderer: React.FC<{ videoUrl: string }> = ({ videoUrl }) => { + const videoId = getYouTubeVideoId(videoUrl); + return ( +
+ {videoId ? ( + + ) : ( + + )} +
+ ); +}; + +const ImageRenderer: React.FC<{ imageUrl: string }> = ({ imageUrl }) => ( +
+ Image +
+); + +const TextRenderer: React.FC<{ value: any; truncateLongData?: boolean }> = ({ + value, + truncateLongData, +}) => { + const maxChars = 100; + const text = + typeof value === "object" ? JSON.stringify(value, null, 2) : String(value); + return truncateLongData && text.length > maxChars + ? text.slice(0, maxChars) + "..." + : text; +}; + +export const ContentRenderer: React.FC<{ + value: any; + truncateLongData?: boolean; +}> = ({ value, truncateLongData }) => { + if (typeof value === "string") { + if (isValidVideoUrl(value)) { + return ; + } else if (isValidImageUrl(value)) { + return ; + } + } + return ; +}; diff --git a/autogpt_platform/infra/helm/autogpt-market/templates/backendconfig.yaml b/autogpt_platform/infra/helm/autogpt-market/templates/backendconfig.yaml index e7f7c8a8f..0e7c138d3 100644 --- a/autogpt_platform/infra/helm/autogpt-market/templates/backendconfig.yaml +++ b/autogpt_platform/infra/helm/autogpt-market/templates/backendconfig.yaml @@ -1,7 +1,7 @@ apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: - name: {{ include "autogpt-market.fullname" . }} + name: {{ include "autogpt-market.fullname" . }}-backend-config spec: customRequestHeaders: headers: diff --git a/autogpt_platform/infra/helm/autogpt-market/templates/deployment.yaml b/autogpt_platform/infra/helm/autogpt-market/templates/deployment.yaml index a1b10c22e..cb6d7faa4 100644 --- a/autogpt_platform/infra/helm/autogpt-market/templates/deployment.yaml +++ b/autogpt_platform/infra/helm/autogpt-market/templates/deployment.yaml @@ -41,7 +41,7 @@ spec: imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http - containerPort: {{ .Values.service.port }} + containerPort: {{ .Values.service.targetPort }} protocol: TCP livenessProbe: {{- toYaml .Values.livenessProbe | nindent 12 }} @@ -53,15 +53,6 @@ spec: volumeMounts: {{- toYaml . | nindent 12 }} {{- end }} - - name: cloud-sql-proxy - image: "{{ .Values.cloudSqlProxy.image.repository }}:{{ .Values.cloudSqlProxy.image.tag }}" - args: - - "--structured-logs" - {{- if .Values.cloudSqlProxy.usePrivateIp }} - - "--private-ip" - {{- end }} - - "--port={{ .Values.cloudSqlProxy.port }}" - - "{{ .Values.cloudSqlProxy.instanceConnectionName }}" {{- with .Values.volumes }} volumes: {{- toYaml . | nindent 8 }} diff --git a/autogpt_platform/infra/helm/autogpt-market/templates/service.yaml b/autogpt_platform/infra/helm/autogpt-market/templates/service.yaml index ca126063d..3895c760f 100644 --- a/autogpt_platform/infra/helm/autogpt-market/templates/service.yaml +++ b/autogpt_platform/infra/helm/autogpt-market/templates/service.yaml @@ -4,11 +4,15 @@ metadata: name: {{ include "autogpt-market.fullname" . }} labels: {{- include "autogpt-market.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} spec: type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} - targetPort: http + targetPort: {{ .Values.service.targetPort }} protocol: TCP name: http selector: diff --git a/autogpt_platform/infra/helm/autogpt-market/values.dev.yaml b/autogpt_platform/infra/helm/autogpt-market/values.dev.yaml index 27fe4b2bd..e8588fe0f 100644 --- a/autogpt_platform/infra/helm/autogpt-market/values.dev.yaml +++ b/autogpt_platform/infra/helm/autogpt-market/values.dev.yaml @@ -12,11 +12,11 @@ serviceAccount: service: type: ClusterIP - port: 8000 - targetPort: 8005 + port: 8015 + targetPort: 8015 annotations: cloud.google.com/neg: '{"ingress": true}' - beta.cloud.google.com/backend-config: '{"default": "autogpt-market"}' + beta.cloud.google.com/backend-config: '{"default": "autogpt-market-backend-config"}' ingress: enabled: true @@ -25,7 +25,7 @@ ingress: kubernetes.io/ingress.class: gce kubernetes.io/ingress.global-static-ip-name: "agpt-dev-agpt-market-ip" networking.gke.io/managed-certificates: "autogpt-market-cert" - kubernetes.io/ingress.allow-http: "false" + networking.gke.io/v1beta1.FrontendConfig: "autogpt-market-frontend-config" hosts: - host: dev-market.agpt.co paths: @@ -34,12 +34,12 @@ ingress: backend: service: name: autogpt-market - port: 8000 + port: 8015 defaultBackend: service: name: autogpt-market port: - number: 8000 + number: 8015 resources: requests: @@ -52,7 +52,7 @@ resources: livenessProbe: httpGet: path: /health - port: 8000 + port: 8015 initialDelaySeconds: 60 periodSeconds: 20 timeoutSeconds: 10 @@ -60,7 +60,7 @@ livenessProbe: readinessProbe: httpGet: path: /health - port: 8000 + port: 8015 initialDelaySeconds: 60 periodSeconds: 20 timeoutSeconds: 10 @@ -95,9 +95,14 @@ cors: env: APP_ENV: "dev" + PYRO_HOST: "0.0.0.0" ENABLE_AUTH: "true" SUPABASE_JWT_SECRET: "" - SUPABASE_ANON_KEY: "" - SUPABASE_URL: "" DATABASE_URL: "" + SENTRY_DSN: "" + SUPABASE_SERVICE_ROLE_KEY: "" + GITHUB_CLIENT_ID: "" + GITHUB_CLIENT_SECRET: "" + FRONTEND_BASE_URL: "https://dev-builder.agpt.co/" + SUPABASE_URL: "https://adfjtextkuilwuhzdjpf.supabase.co" BACKEND_CORS_ALLOW_ORIGINS: "https://dev-builder.agpt.co" \ No newline at end of file diff --git a/autogpt_platform/infra/helm/autogpt-market/values.prod.yaml b/autogpt_platform/infra/helm/autogpt-market/values.prod.yaml new file mode 100644 index 000000000..702dcce86 --- /dev/null +++ b/autogpt_platform/infra/helm/autogpt-market/values.prod.yaml @@ -0,0 +1,109 @@ +# prod values, overwrite base values as needed. + +image: + repository: us-east1-docker.pkg.dev/agpt-prod/agpt-market-prod/agpt-market-prod + pullPolicy: Always + tag: "latest" + +serviceAccount: + annotations: + iam.gke.io/gcp-service-account: "prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + name: "prod-agpt-market-sa" + +service: + type: ClusterIP + port: 8015 + targetPort: 8015 + annotations: + cloud.google.com/neg: '{"ingress": true}' + beta.cloud.google.com/backend-config: '{"default": "autogpt-market-backend-config"}' + +ingress: + enabled: true + className: "gce" + annotations: + kubernetes.io/ingress.class: gce + kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-market-ip" + networking.gke.io/managed-certificates: "autogpt-market-cert" + networking.gke.io/v1beta1.FrontendConfig: "autogpt-market-frontend-config" + hosts: + - host: market.agpt.co + paths: + - path: / + pathType: Prefix + backend: + service: + name: autogpt-market + port: 8015 + defaultBackend: + service: + name: autogpt-market + port: + number: 8015 + +resources: + requests: + cpu: 200m + memory: 1Gi + limits: + cpu: 2 + memory: 2Gi + +livenessProbe: + httpGet: + path: /health + port: 8015 + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 10 + failureThreshold: 12 +readinessProbe: + httpGet: + path: /health + port: 8015 + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 10 + failureThreshold: 12 + +domain: "market.agpt.co" + +cloudSqlProxy: + image: + repository: gcr.io/cloud-sql-connectors/cloud-sql-proxy + tag: 2.11.4 + instanceConnectionName: "agpt-prod:us-central1:agpt-server-prod" + port: 5432 + resources: + requests: + memory: "2Gi" + cpu: "1" + +cors: + allowOrigin: "https://platform.agpt.co" + allowMethods: + - "GET" + - "POST" + - "PUT" + - "DELETE" + - "OPTIONS" + allowHeaders: + - "Content-Type" + - "Authorization" + maxAge: 3600 + allowCredentials: true + +env: + APP_ENV: "prod" + PYRO_HOST: "0.0.0.0" + ENABLE_AUTH: "true" + SUPABASE_JWT_SECRET: "" + DATABASE_URL: "" + SENTRY_DSN: "" + SUPABASE_SERVICE_ROLE_KEY: "" + GITHUB_CLIENT_ID: "" + GITHUB_CLIENT_SECRET: "" + FRONTEND_BASE_URL: "https://platform.agpt.co/" + SUPABASE_URL: "https://bgwpwdsxblryihinutbx.supabase.co" + BACKEND_CORS_ALLOW_ORIGINS: "https://platform.agpt.co" + diff --git a/autogpt_platform/infra/helm/autogpt-market/values.yaml b/autogpt_platform/infra/helm/autogpt-market/values.yaml index b5227f5f0..6b6bd1add 100644 --- a/autogpt_platform/infra/helm/autogpt-market/values.yaml +++ b/autogpt_platform/infra/helm/autogpt-market/values.yaml @@ -71,15 +71,6 @@ resources: {} # cpu: 100m # memory: 128Mi -livenessProbe: - httpGet: - path: / - port: http -readinessProbe: - httpGet: - path: / - port: http - autoscaling: enabled: false minReplicas: 1 diff --git a/autogpt_platform/infra/helm/redis-values.prod.yaml b/autogpt_platform/infra/helm/redis-values.prod.yaml new file mode 100644 index 000000000..ea5914477 --- /dev/null +++ b/autogpt_platform/infra/helm/redis-values.prod.yaml @@ -0,0 +1,15 @@ +architecture: standalone +auth: + enabled: true + password: "" #empty on purpose +master: + persistence: + enabled: true + size: 3Gi + configmap: + redis.conf: | + bind 127.0.0.1 + protected-mode yes + requirepass password +replica: + replicaCount: 0 \ No newline at end of file diff --git a/autogpt_platform/infra/terraform/environments/prod.tfvars b/autogpt_platform/infra/terraform/environments/prod.tfvars new file mode 100644 index 000000000..43f2ae63c --- /dev/null +++ b/autogpt_platform/infra/terraform/environments/prod.tfvars @@ -0,0 +1,100 @@ +project_id = "agpt-prod" +region = "us-central1" +zone = "us-central1-a" +network_name = "prod-gke-network" +subnet_name = "prod-gke-subnet" +subnet_cidr = "10.0.0.0/24" +cluster_name = "prod-gke-cluster" +node_count = 4 +node_pool_name = "prod-main-pool" +machine_type = "e2-highmem-4" +disk_size_gb = 100 +static_ip_names = ["agpt-backend-ip", "agpt-frontend-ip", "agpt-ws-backend-ip", "agpt-market-ip"] + + +service_accounts = { + "prod-agpt-backend-sa" = { + display_name = "AutoGPT prod backend Account" + description = "Service account for agpt prod backend" + }, + "prod-agpt-frontend-sa" = { + display_name = "AutoGPT prod frontend Account" + description = "Service account for agpt prod frontend" + }, + "prod-agpt-ws-backend-sa" = { + display_name = "AutoGPT prod WebSocket backend Account" + description = "Service account for agpt prod websocket backend" + }, + "prod-agpt-market-sa" = { + display_name = "AutoGPT prod Market backend Account" + description = "Service account for agpt prod market backend" + } +} + +workload_identity_bindings = { + "prod-agpt-backend-workload-identity" = { + service_account_name = "prod-agpt-backend-sa" + namespace = "prod-agpt" + ksa_name = "prod-agpt-backend-sa" + }, + "prod-agpt-frontend-workload-identity" = { + service_account_name = "prod-agpt-frontend-sa" + namespace = "prod-agpt" + ksa_name = "prod-agpt-frontend-sa" + }, + "prod-agpt-ws-backend-workload-identity" = { + service_account_name = "prod-agpt-ws-backend-sa" + namespace = "prod-agpt" + ksa_name = "prod-agpt-ws-backend-sa" + }, + "prod-agpt-market-workload-identity" = { + service_account_name = "prod-agpt-market-sa" + namespace = "prod-agpt" + ksa_name = "prod-agpt-market-sa" + } +} + +role_bindings = { + "roles/container.developer" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ], + "roles/cloudsql.client" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ], + "roles/cloudsql.editor" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ], + "roles/cloudsql.instanceUser" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ], + "roles/iam.workloadIdentityUser" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ] + "roles/compute.networkUser" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ], + "roles/container.hostServiceAgentUser" = [ + "serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com", + "serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com" + ] +} + +pods_ip_cidr_range = "10.1.0.0/16" +services_ip_cidr_range = "10.2.0.0/20" \ No newline at end of file diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index a397a00b6..28dc686c4 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,6 +1,8 @@ site_name: AutoGPT Documentation site_url: https://docs.agpt.co/ repo_url: https://github.com/Significant-Gravitas/AutoGPT +repo_name: AutoGPT +edit_uri: edit/master/docs/content docs_dir: content nav: - Home: index.md @@ -10,7 +12,7 @@ nav: - Setup: server/setup.md - Advanced Setup: server/advanced_setup.md - Using Ollama: server/ollama.md - - Using D-ID: serveer/d_id.md + - Using D-ID: server/d_id.md - AutoGPT Agent: - Introduction: AutoGPT/index.md @@ -69,14 +71,27 @@ nav: theme: name: material custom_dir: overrides + language: en icon: + repo: fontawesome/brands/github logo: material/book-open-variant - favicon: favicon.png + edit: material/pencil + view: material/eye + favicon: assets/favicon.png features: - navigation.sections - - toc.follow + - navigation.footer - navigation.top + - navigation.tracking + - navigation.tabs + # - navigation.path + - toc.follow + - toc.integrate + - content.action.edit + - content.action.view - content.code.copy + - content.code.annotate + - content.tabs.link palette: # Palette toggle for light mode - media: "(prefers-color-scheme: light)" @@ -137,6 +152,20 @@ markdown_extensions: plugins: - table-reader - search + - git-revision-date-localized: + enable_creation_date: true + + +extra: + social: + - icon: fontawesome/brands/github + link: https://github.com/Significant-Gravitas/AutoGPT + - icon: fontawesome/brands/x-twitter + link: https://x.com/Auto_GPT + - icon: fontawesome/brands/instagram + link: https://www.instagram.com/autogpt/ + - icon: fontawesome/brands/discord + link: https://discord.gg/autogpt extra_javascript: - https://unpkg.com/tablesort@5.3.0/dist/tablesort.min.js diff --git a/docs/favicon.png b/docs/overrides/assets/favicon.png similarity index 100% rename from docs/favicon.png rename to docs/overrides/assets/favicon.png diff --git a/docs/requirements.txt b/docs/requirements.txt index 074e062b0..73c768233 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -2,3 +2,4 @@ mkdocs mkdocs-material mkdocs-table-reader-plugin pymdown-extensions +mkdocs-git-revision-date-localized-plugin