diff --git a/.github/workflows/agentk-cd.yaml b/.github/workflows/agentk-cd.yaml
index be42c67067..bdbf75de12 100644
--- a/.github/workflows/agentk-cd.yaml
+++ b/.github/workflows/agentk-cd.yaml
@@ -24,11 +24,13 @@ jobs:
shell: bash
working-directory: go/kubernetes-agent
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: |
+ go/go.work.sum
+ go/kubernetes-agent/**/go.sum
- run: PATH=$PATH:$GOPATH/bin make test
image:
@@ -48,7 +50,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -58,25 +60,25 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go
file: go/kubernetes-agent/hack/docker/Dockerfile.agentk
@@ -84,8 +86,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=agentk-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=agentk-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -112,27 +114,27 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/agentk
diff --git a/.github/workflows/agentk-ci.yaml b/.github/workflows/agentk-ci.yaml
index dd20b572ba..67cc7f2633 100644
--- a/.github/workflows/agentk-ci.yaml
+++ b/.github/workflows/agentk-ci.yaml
@@ -21,6 +21,10 @@ env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: pluralsh/agentk
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -45,7 +49,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -56,7 +60,7 @@ jobs:
echo "IMAGE_SHA=${{ github.event.pull_request.head.sha || github.sha }}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/${{ env.REGISTRY_IMAGE }}
@@ -66,24 +70,24 @@ jobs:
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to Container registry
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go
file: go/kubernetes-agent/hack/docker/Dockerfile.agentk
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,name=ghcr.io/${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=agentk-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=agentk-${{ env.PLATFORM_PAIR }}
build-args: |
VERSION=v0.0.0-${{ env.IMAGE_SHA }}
GIT_COMMIT=${{ env.IMAGE_SHA }}
@@ -110,16 +114,16 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/${{ env.REGISTRY_IMAGE }}
@@ -129,7 +133,7 @@ jobs:
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Login to Container registry
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
diff --git a/.github/workflows/ai-proxy-cd.yaml b/.github/workflows/ai-proxy-cd.yaml
index a1c9703cea..c3d1c98651 100644
--- a/.github/workflows/ai-proxy-cd.yaml
+++ b/.github/workflows/ai-proxy-cd.yaml
@@ -28,6 +28,10 @@ env:
REGISTRY_IMAGE: ghcr.io/pluralsh/ai-proxy
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -44,10 +48,11 @@ jobs:
shell: bash
working-directory: go/ai-proxy
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/ai-proxy/go.mod
+ cache-dependency-path: go/ai-proxy/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
@@ -74,7 +79,7 @@ jobs:
working-directory: go/ai-proxy
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -83,20 +88,20 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "."
file: "./go/ai-proxy/Dockerfile"
@@ -104,8 +109,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=ai-proxy-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=ai-proxy-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -139,36 +144,36 @@ jobs:
- docker.io/pluralsh/ai-proxy
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/ai-proxy-ci.yaml b/.github/workflows/ai-proxy-ci.yaml
index f5a3d57057..4e0fa2fff9 100644
--- a/.github/workflows/ai-proxy-ci.yaml
+++ b/.github/workflows/ai-proxy-ci.yaml
@@ -16,6 +16,10 @@ env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -32,10 +36,11 @@ jobs:
shell: bash
working-directory: go/ai-proxy
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/ai-proxy/go.mod
+ cache-dependency-path: go/ai-proxy/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make build
diff --git a/.github/workflows/chart.yaml b/.github/workflows/chart.yaml
index a04355bcda..9520e9d6a2 100644
--- a/.github/workflows/chart.yaml
+++ b/.github/workflows/chart.yaml
@@ -14,7 +14,7 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
@@ -22,7 +22,7 @@ jobs:
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- - uses: azure/setup-helm@v3
+ - uses: azure/setup-helm@v5
- name: Add repos
run: |
@@ -35,23 +35,23 @@ jobs:
helm repo add ory https://k8s.ory.sh/helm/charts
- name: Run chart-releaser
id: release
- uses: helm/chart-releaser-action@v1.5.0
+ uses: helm/chart-releaser-action@v1.7.0
with:
config: "./.github/configs/cr.yaml"
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- name: console version
id: console_vsn
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq ".version" charts/console/Chart.yaml
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to gcr
run: gcloud auth configure-docker -q
- name: Helm Login
diff --git a/.github/workflows/check-pr.yaml b/.github/workflows/check-pr.yaml
index 76a87cd4e6..c966e438c8 100644
--- a/.github/workflows/check-pr.yaml
+++ b/.github/workflows/check-pr.yaml
@@ -7,6 +7,10 @@ on:
paths:
- terraform/**/*
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -22,7 +26,7 @@ jobs:
contents: 'read'
pull-requests: read
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
name: checkout repo
- name: "check pr body has Plural Flow: console to link with Plural"
diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml
index 5dfc108b6c..5bdd073971 100644
--- a/.github/workflows/chromatic.yml
+++ b/.github/workflows/chromatic.yml
@@ -20,6 +20,10 @@ on:
- "js/package.json"
- "js/yarn.lock"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -40,10 +44,10 @@ jobs:
shell: bash
working-directory: js
steps:
- - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24.11.1
cache: yarn
@@ -51,7 +55,7 @@ jobs:
- run: corepack enable
- run: yarn --immutable
- run: yarn workspace @pluralsh/design-system build:storybook
- - uses: chromaui/action@534eebfc19023579541d106f7b61d5ad70ed65c7 # v18.5.0
+ - uses: chromaui/action@6b3c2820222d23bad770d57a4ad5e2d1c91f92e9 # v18.9.5
id: chromatic
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
@@ -59,7 +63,7 @@ jobs:
storybookBuildDir: storybook-static
exitOnceUploaded: true
- if: ${{ github.event_name == 'pull_request' && steps.chromatic.outcome == 'success' }}
- uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
+ uses: marocchino/sticky-pull-request-comment@5770ad5eb8f42dd2c4f34da00c94c5381e49af88 # v3.0.5
with:
header: storybook
message: |
diff --git a/.github/workflows/cloud-query-cd.yaml b/.github/workflows/cloud-query-cd.yaml
index 0e385559ee..857e3431d4 100644
--- a/.github/workflows/cloud-query-cd.yaml
+++ b/.github/workflows/cloud-query-cd.yaml
@@ -24,6 +24,10 @@ env:
REGISTRY_IMAGE: ghcr.io/pluralsh/cloud-query
REGISTRY_IMAGE_DB: ghcr.io/pluralsh/cloud-query-db
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -41,11 +45,12 @@ jobs:
working-directory: go/cloud-query
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/cloud-query/go.mod
+ cache-dependency-path: go/cloud-query/go.sum
cache: true
- name: Download dependencies
run: go mod download
@@ -73,7 +78,7 @@ jobs:
working-directory: go/cloud-query
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -82,36 +87,34 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE_DB }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go/cloud-query"
file: "./go/cloud-query/db.Dockerfile"
@@ -119,8 +122,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=cloud-query-db-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=cloud-query-db-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -158,7 +161,7 @@ jobs:
working-directory: go/cloud-query
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -168,36 +171,34 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go/cloud-query"
file: "./go/cloud-query/Dockerfile"
@@ -205,8 +206,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=cloud-query-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=cloud-query-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -240,36 +241,36 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-db-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
@@ -303,36 +304,36 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-cloudquery-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/cloud-query-ci.yaml b/.github/workflows/cloud-query-ci.yaml
index 3115acd27d..edcd47a67c 100644
--- a/.github/workflows/cloud-query-ci.yaml
+++ b/.github/workflows/cloud-query-ci.yaml
@@ -17,6 +17,10 @@ permissions:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -24,35 +28,21 @@ jobs:
permissions:
contents: read
- build:
+ build-test:
needs: [vouch]
- name: Build
+ name: Build and test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/cloud-query
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/cloud-query/go.mod
+ cache-dependency-path: go/cloud-query/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make build
- test:
- needs: [vouch]
- name: Unit test
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/cloud-query
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/cloud-query/go.mod
- cache: true
- - run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 0c7a57e0f8..6121c649ff 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -10,6 +10,10 @@ on:
- '**/*.md'
schedule:
- cron: '0 0 * * 1'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -30,7 +34,7 @@ jobs:
matrix:
language: [ 'typescript' ]
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: github/codeql-action/init@v4
diff --git a/.github/workflows/compatability-matrices.yaml b/.github/workflows/compatability-matrices.yaml
index 674ede9cec..58d51ab481 100644
--- a/.github/workflows/compatability-matrices.yaml
+++ b/.github/workflows/compatability-matrices.yaml
@@ -20,10 +20,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@v4
+ uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: arn:aws:iam::332124921534:role/github-actions/console-actions
aws-region: us-east-2
diff --git a/.github/workflows/compatibility-schema-validation.yaml b/.github/workflows/compatibility-schema-validation.yaml
index 523495bc41..242f804819 100644
--- a/.github/workflows/compatibility-schema-validation.yaml
+++ b/.github/workflows/compatibility-schema-validation.yaml
@@ -19,6 +19,10 @@ on:
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -31,10 +35,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Validate add-on compatibility tables
- uses: dsanders11/json-schema-validate-action@eddf079f55830cc9a916a3c512ba9086240d2fea
+ uses: dsanders11/json-schema-validate-action@f04ef3bca791388d2bd9ff3a50b27d1b2572158e # v2.1.0
with:
schema: static/compatibilities/schema.json
files: |
@@ -43,7 +47,7 @@ jobs:
all-errors: true
- name: Validate cloud add-on compatibility tables
- uses: dsanders11/json-schema-validate-action@eddf079f55830cc9a916a3c512ba9086240d2fea
+ uses: dsanders11/json-schema-validate-action@f04ef3bca791388d2bd9ff3a50b27d1b2572158e # v2.1.0
with:
schema: static/addons/schema.json
files: |
diff --git a/.github/workflows/controller-cd.yaml b/.github/workflows/controller-cd.yaml
index 4e526ec911..e8e809cd1c 100644
--- a/.github/workflows/controller-cd.yaml
+++ b/.github/workflows/controller-cd.yaml
@@ -19,6 +19,10 @@ env:
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/deployment-controller
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -36,11 +40,12 @@ jobs:
working-directory: go/controller
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/controller/go.mod
+ cache-dependency-path: go/controller/go.sum
cache: true
- name: Download dependencies
run: go mod download
@@ -68,7 +73,7 @@ jobs:
working-directory: go/controller
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -78,36 +83,34 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/controller/Dockerfile"
@@ -115,8 +118,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=controller-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=controller-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -150,36 +153,36 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/controller-ci.yaml b/.github/workflows/controller-ci.yaml
index 036e8670fe..d599dbdeb6 100644
--- a/.github/workflows/controller-ci.yaml
+++ b/.github/workflows/controller-ci.yaml
@@ -21,6 +21,10 @@ permissions:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -28,39 +32,23 @@ jobs:
permissions:
contents: read
- build:
+ test:
needs: [vouch]
- name: Build
+ name: Test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/controller
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/controller/go.mod
+ cache-dependency-path: go/controller/go.sum
cache: true
- name: Download dependencies
run: go mod download
- - run: PATH=$PATH:$GOPATH/bin make build
- unit-test:
- needs: [vouch]
- name: Unit tests
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/controller
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: go/controller/go.mod
- cache: true
- name: Test
run: PATH=$PATH:$GOPATH/bin make test
check-docs:
@@ -68,7 +56,7 @@ jobs:
name: verify controller docs
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- name: Check docs
run: make codegen-crd-docs
working-directory: go/controller
diff --git a/.github/workflows/cron.yaml b/.github/workflows/cron.yaml
index b2a0672bdd..54657673a8 100644
--- a/.github/workflows/cron.yaml
+++ b/.github/workflows/cron.yaml
@@ -21,7 +21,7 @@ jobs:
# id-token: 'write'
# pull-requests: 'write'
# steps:
- # - uses: actions/checkout@v6
+ # - uses: actions/checkout@v7
# - run: make liquid-docs
# - id: date
# run: echo "date=$(date +%Y%m%d%H%M%S)" >> $GITHUB_OUTPUT
@@ -44,15 +44,15 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- - uses: actions/setup-python@v6
+ - uses: actions/setup-python@v7
with:
python-version: '3.13'
cache: 'pip' # caching pip dependencies
- name: Install Helm
- uses: azure/setup-helm@v3
+ uses: azure/setup-helm@v5
with:
version: latest
@@ -89,9 +89,9 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- - uses: actions/setup-python@v6
+ - uses: actions/setup-python@v7
with:
python-version: '3.13'
cache: 'pip' # caching pip dependencies
@@ -126,15 +126,15 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- - uses: actions/setup-python@v6
+ - uses: actions/setup-python@v7
with:
python-version: '3.13'
cache: 'pip' # caching pip dependencies
- name: configure aws credentials
- uses: aws-actions/configure-aws-credentials@a159d7bb5354cf786f855f2f5d1d8d768d9a08d1
+ uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.3.0
with:
role-to-assume: arn:aws:iam::312272277431:role/github-actions/console-actions
role-session-name: eks-addons
diff --git a/.github/workflows/datastore-cd.yaml b/.github/workflows/datastore-cd.yaml
index a05df9c8b4..641616a7e4 100644
--- a/.github/workflows/datastore-cd.yaml
+++ b/.github/workflows/datastore-cd.yaml
@@ -19,6 +19,10 @@ env:
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/datastore-controller
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -36,11 +40,12 @@ jobs:
working-directory: go/datastore
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/datastore/go.mod
+ cache-dependency-path: go/datastore/go.sum
cache: true
- name: Download dependencies
run: go mod download
@@ -68,7 +73,7 @@ jobs:
working-directory: go/datastore
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -77,36 +82,34 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/datastore/Dockerfile"
@@ -114,8 +117,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=datastore-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=datastore-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -148,36 +151,36 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/datastore-ci.yaml b/.github/workflows/datastore-ci.yaml
index acf478c2a3..ca054a5998 100644
--- a/.github/workflows/datastore-ci.yaml
+++ b/.github/workflows/datastore-ci.yaml
@@ -21,6 +21,10 @@ permissions:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -28,38 +32,22 @@ jobs:
permissions:
contents: read
- build:
+ test:
needs: [vouch]
- name: Build
+ name: Test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/datastore
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/datastore/go.mod
+ cache-dependency-path: go/datastore/go.sum
cache: true
- name: Download dependencies
run: go mod download
- - run: PATH=$PATH:$GOPATH/bin make build
- unit-test:
- needs: [vouch]
- name: Unit tests
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/datastore
- steps:
- - name: Checkout
- uses: actions/checkout@v6
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: go/datastore/go.mod
- cache: true
- name: Test
run: PATH=$PATH:$GOPATH/bin make test
diff --git a/.github/workflows/demo-cd.yaml b/.github/workflows/demo-cd.yaml
index c955659944..2e7f45d6d8 100644
--- a/.github/workflows/demo-cd.yaml
+++ b/.github/workflows/demo-cd.yaml
@@ -16,6 +16,10 @@ env:
GOBIN: /home/runner/go/bin
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -36,12 +40,12 @@ jobs:
id-token: 'write'
packages: 'write'
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -51,14 +55,14 @@ jobs:
type=sha
type=ref,event=pr
type=ref,event=branch
- - uses: docker/login-action@v3
+ - uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/setup-qemu-action@v3
- - uses: docker/setup-buildx-action@v3
- - uses: docker/build-push-action@v6
+ - uses: docker/setup-qemu-action@v4
+ - uses: docker/setup-buildx-action@v4
+ - uses: docker/build-push-action@v7
with:
context: "./go/demo/flaky-service"
file: "./go/demo/flaky-service/Dockerfile"
@@ -66,8 +70,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64, linux/arm64
- cache-from: type=gha
- cache-to: type=gha, mode=max
+ cache-from: type=gha,scope=flaky-service
+ cache-to: type=gha,mode=max,scope=flaky-service
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
diff --git a/.github/workflows/deployment-operator-cd-agent-harness.yaml b/.github/workflows/deployment-operator-cd-agent-harness.yaml
index 8e303148f7..068aea39ae 100644
--- a/.github/workflows/deployment-operator-cd-agent-harness.yaml
+++ b/.github/workflows/deployment-operator-cd-agent-harness.yaml
@@ -25,6 +25,10 @@ env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
REGISTRY_IMAGE: pluralsh/agent-harness-base
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -77,7 +81,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -86,27 +90,25 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/agent-harness/base.Dockerfile"
@@ -114,8 +116,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=agent-harness-base-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=agent-harness-base-${{ env.PLATFORM_PAIR }}
build-args: |
VERSION=${{ steps.meta.outputs.version }}
- name: Export digest
@@ -143,27 +145,27 @@ jobs:
version: ${{ steps.meta.outputs.version }}
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/agent-harness-base
@@ -203,12 +205,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -220,22 +222,22 @@ jobs:
type=sha,suffix=-${{ matrix.agents.name }}-${{ matrix.agents.version }},priority=800
type=ref,event=pr,suffix=-${{ matrix.agents.name }}-${{ matrix.agents.version }},priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/agent-harness/${{ matrix.agents.name }}.Dockerfile"
@@ -243,8 +245,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=agent-harness-${{ matrix.agents.name }}
+ cache-to: type=gha,mode=max,scope=agent-harness-${{ matrix.agents.name }}
build-args: |
NODE_VERSION=${{ needs.output-versions.outputs.node }}
AGENT_VERSION=${{ matrix.agents.version }}
diff --git a/.github/workflows/deployment-operator-cd-harness.yaml b/.github/workflows/deployment-operator-cd-harness.yaml
index 2588814548..2033d974ca 100644
--- a/.github/workflows/deployment-operator-cd-harness.yaml
+++ b/.github/workflows/deployment-operator-cd-harness.yaml
@@ -19,6 +19,10 @@ env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
REGISTRY_IMAGE: pluralsh/stackrun-harness-base
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -44,7 +48,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -53,27 +57,25 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/base.Dockerfile"
@@ -81,8 +83,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-base-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=stackrun-harness-base-${{ env.PLATFORM_PAIR }}
build-args: |
VERSION=${{ steps.meta.outputs.version }}
- name: Export digest
@@ -110,27 +112,27 @@ jobs:
version: ${{ steps.meta.outputs.version }}
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/stackrun-harness-base
@@ -191,12 +193,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -210,22 +212,22 @@ jobs:
type=ref,event=pr,suffix=-terraform-${{ matrix.versions.full }},priority=600
type=ref,event=pr,suffix=-terraform-${{ matrix.versions.minor }},priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/terraform.Dockerfile"
@@ -233,8 +235,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-terraform-${{ matrix.versions.minor }}
+ cache-to: type=gha,mode=max,scope=stackrun-harness-terraform-${{ matrix.versions.minor }}
build-args: |
TERRAFORM_IMAGE_TAG=${{ matrix.versions.full }}
HARNESS_BASE_IMAGE_REPO=ghcr.io/pluralsh/stackrun-harness-base
@@ -287,12 +289,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/harness
@@ -305,22 +307,22 @@ jobs:
type=ref,event=pr,suffix=-terragrunt-${{ matrix.versions.full }},priority=600
type=ref,event=pr,suffix=-terragrunt-${{ matrix.versions.minor }},priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/terragrunt.Dockerfile"
@@ -328,8 +330,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-terragrunt-${{ matrix.versions.minor }}
+ cache-to: type=gha,mode=max,scope=stackrun-harness-terragrunt-${{ matrix.versions.minor }}
build-args: |
TERRAFORM_IMAGE_TAG=${{ matrix.versions.full }}
OPENTOFU_IMAGE_TAG=${{ env.OPENTOFU_VERSION }}
@@ -359,12 +361,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/harness
@@ -377,22 +379,22 @@ jobs:
type=ref,event=pr,suffix=-pulumi-${{ matrix.versions.full }},priority=600
type=ref,event=pr,suffix=-pulumi-${{ matrix.versions.minor }},priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/pulumi.Dockerfile"
@@ -400,8 +402,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-pulumi-${{ matrix.versions.minor }}
+ cache-to: type=gha,mode=max,scope=stackrun-harness-pulumi-${{ matrix.versions.minor }}
build-args: |
PULUMI_VERSION=${{ matrix.versions.full }}
HARNESS_BASE_IMAGE_REPO=ghcr.io/pluralsh/stackrun-harness-base
@@ -445,12 +447,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/harness
@@ -463,22 +465,22 @@ jobs:
type=ref,event=pr,suffix=-ansible-${{ matrix.versions.ansible }},priority=600
type=ref,event=pr,suffix=-ansible-${{ matrix.versions.minor }},priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/ansible.Dockerfile"
@@ -486,8 +488,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-ansible-${{ matrix.versions.minor }}
+ cache-to: type=gha,mode=max,scope=stackrun-harness-ansible-${{ matrix.versions.minor }}
build-args: |
ANSIBLE_VERSION=${{ matrix.versions.ansible }}
PYTHON_VERSION=${{ matrix.versions.python }}
@@ -505,12 +507,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/harness
@@ -520,22 +522,22 @@ jobs:
type=sha,suffix=-custom,priority=800
type=ref,event=pr,suffix=-custom,priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/harness/custom.Dockerfile"
@@ -543,8 +545,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=stackrun-harness-custom
+ cache-to: type=gha,mode=max,scope=stackrun-harness-custom
build-args: |
HARNESS_BASE_IMAGE_REPO=ghcr.io/pluralsh/stackrun-harness-base
HARNESS_BASE_IMAGE_TAG=${{ needs.publish-base-image.outputs.version }}
diff --git a/.github/workflows/deployment-operator-cd-sentinel-harness.yaml b/.github/workflows/deployment-operator-cd-sentinel-harness.yaml
index 4621638b11..6e7d196668 100644
--- a/.github/workflows/deployment-operator-cd-sentinel-harness.yaml
+++ b/.github/workflows/deployment-operator-cd-sentinel-harness.yaml
@@ -26,6 +26,10 @@ env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
REGISTRY_IMAGE: pluralsh/sentinel-harness-base
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -51,7 +55,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -60,27 +64,25 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/sentinel-harness/base.Dockerfile"
@@ -88,8 +90,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=sentinel-harness-base-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=sentinel-harness-base-${{ env.PLATFORM_PAIR }}
build-args: |
VERSION=${{ steps.meta.outputs.version }}
- name: Export digest
@@ -117,27 +119,27 @@ jobs:
version: ${{ steps.meta.outputs.version }}
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/sentinel-harness-base
@@ -166,12 +168,12 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -183,22 +185,22 @@ jobs:
type=sha,priority=800
type=ref,event=pr,priority=600
- name: Set up QEMU
- uses: docker/setup-qemu-action@v3
+ uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/dockerfiles/sentinel-harness/terratest.Dockerfile"
@@ -206,8 +208,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=sentinel-harness-terratest
+ cache-to: type=gha,mode=max,scope=sentinel-harness-terratest
build-args: |
GO_VERSION=1.27.1
SENTINEL_HARNESS_BASE_IMAGE_REPO=ghcr.io/pluralsh/sentinel-harness-base
diff --git a/.github/workflows/deployment-operator-cd.yaml b/.github/workflows/deployment-operator-cd.yaml
index f59e20ca6b..3fc267d815 100644
--- a/.github/workflows/deployment-operator-cd.yaml
+++ b/.github/workflows/deployment-operator-cd.yaml
@@ -19,10 +19,11 @@ jobs:
shell: bash
working-directory: go/deployment-operator
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/deployment-operator/go.mod
+ cache-dependency-path: go/deployment-operator/go.sum
cache: true
- name: Download dependencies
run: go mod download
@@ -45,7 +46,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -54,27 +55,25 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/Dockerfile"
@@ -82,8 +81,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=deployment-operator-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=deployment-operator-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
- name: Export digest
@@ -107,27 +106,27 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
docker.io/pluralsh/deployment-operator
diff --git a/.github/workflows/deployment-operator-ci.yaml b/.github/workflows/deployment-operator-ci.yaml
index e9a098440c..4e0e12191e 100644
--- a/.github/workflows/deployment-operator-ci.yaml
+++ b/.github/workflows/deployment-operator-ci.yaml
@@ -24,6 +24,10 @@ on:
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -31,50 +35,24 @@ jobs:
permissions:
contents: read
- build:
- needs: [vouch]
- name: Build
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/deployment-operator
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/deployment-operator/go.mod
- cache: true
- - name: Download dependencies
- run: go mod download
- - run: make agent
test:
needs: [vouch]
- name: Unit test
+ name: Test and verify CRD docs
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/deployment-operator
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/deployment-operator/go.mod
+ cache-dependency-path: go/deployment-operator/go.sum
cache: true
- name: Download dependencies
run: go mod download
- run: make test
- check-docs:
- needs: [vouch]
- name: Verify CRD docs
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/deployment-operator/go.mod
- cache: true
- name: Check docs
working-directory: go/deployment-operator
run: make crd-docs
@@ -87,7 +65,7 @@ jobs:
}
build-image:
name: Build image
- needs: [ build, test ]
+ needs: [test]
permissions:
contents: 'read'
id-token: 'write'
@@ -103,7 +81,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -112,21 +90,19 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/deployment-operator/Dockerfile"
@@ -134,8 +110,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=deployment-operator-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=deployment-operator-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
- name: Export digest
@@ -159,27 +135,27 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/deployment-operator
diff --git a/.github/workflows/deployment-operator-pr.yaml b/.github/workflows/deployment-operator-pr.yaml
index 643fd6d44e..31cb0de29e 100644
--- a/.github/workflows/deployment-operator-pr.yaml
+++ b/.github/workflows/deployment-operator-pr.yaml
@@ -16,6 +16,10 @@ on:
permissions:
contents: 'read'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -28,7 +32,7 @@ jobs:
# runs-on: ubuntu-latest
# steps:
# - name: Check pull request title
- # uses: amannn/action-semantic-pull-request@v5
+ # uses: amannn/action-semantic-pull-request@v6
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
body:
diff --git a/.github/workflows/documentation-cd.yaml b/.github/workflows/documentation-cd.yaml
index b23c2e3738..dc3cd2fe80 100644
--- a/.github/workflows/documentation-cd.yaml
+++ b/.github/workflows/documentation-cd.yaml
@@ -27,6 +27,10 @@ on:
env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -44,12 +48,12 @@ jobs:
packages: 'write'
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/documentation
@@ -58,18 +62,16 @@ jobs:
type=ref,event=pr
type=ref,event=branch
type=match,pattern=documentation/(v.*),group=1
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: .
file: js/documentation/Dockerfile
@@ -77,8 +79,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=documentation
+ cache-to: type=gha,mode=max,scope=documentation
build-args: |
NEXT_PUBLIC_ROOT_URL="https://docs.plural.sh"
NEXT_PUBLIC_GA_ID=${{ vars.NEXT_PUBLIC_GA_ID }}
diff --git a/.github/workflows/documentation-sync.yaml b/.github/workflows/documentation-sync.yaml
index 1ff7f719d7..9c52e45779 100644
--- a/.github/workflows/documentation-sync.yaml
+++ b/.github/workflows/documentation-sync.yaml
@@ -15,11 +15,12 @@ jobs:
pull-requests: 'write'
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/controller/go.mod
+ cache-dependency-path: go/controller/go.sum
cache: true
- name: Regenerate console controller docs
working-directory: go/controller
diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml
index 281974a2dd..72e4b01aa3 100644
--- a/.github/workflows/documentation.yaml
+++ b/.github/workflows/documentation.yaml
@@ -31,6 +31,10 @@ on:
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -47,8 +51,8 @@ jobs:
shell: bash
working-directory: js
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-node@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
@@ -66,7 +70,7 @@ jobs:
shell: bash
working-directory: js/documentation
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- name: Sync docs
run: make sync
- name: Verify changed files
@@ -85,10 +89,10 @@ jobs:
shell: bash
working-directory: js/documentation
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: actions/setup-node@v6
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
diff --git a/.github/workflows/eslint-config-publish.yaml b/.github/workflows/eslint-config-publish.yaml
index b6abfaac8b..849f713868 100644
--- a/.github/workflows/eslint-config-publish.yaml
+++ b/.github/workflows/eslint-config-publish.yaml
@@ -29,10 +29,10 @@ jobs:
name: Publish npm package
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: actions/setup-node@v6
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
diff --git a/.github/workflows/go-ci.yaml b/.github/workflows/go-ci.yaml
index 6ef70bf2af..241c37c436 100644
--- a/.github/workflows/go-ci.yaml
+++ b/.github/workflows/go-ci.yaml
@@ -19,6 +19,10 @@ permissions:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -35,11 +39,13 @@ jobs:
shell: bash
working-directory: go/
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: |
+ go/go.work.sum
+ go/**/go.sum
- id: lint-packages
run: |
packages=$(make --no-print-directory lint-packages)
@@ -59,11 +65,11 @@ jobs:
shell: bash
working-directory: go/tools
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: go/tools/go.sum
- name: Verify tools module and install goimports
run: |
go mod verify
diff --git a/.github/workflows/helm-test-ci.yaml b/.github/workflows/helm-test-ci.yaml
index 68af51490f..4a5fe417ae 100644
--- a/.github/workflows/helm-test-ci.yaml
+++ b/.github/workflows/helm-test-ci.yaml
@@ -17,6 +17,10 @@ env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -33,10 +37,11 @@ jobs:
shell: bash
working-directory: go/helm-test
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/helm-test/go.mod
+ cache-dependency-path: go/helm-test/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
diff --git a/.github/workflows/helm.yaml b/.github/workflows/helm.yaml
index c273637237..5ff4b60d2b 100644
--- a/.github/workflows/helm.yaml
+++ b/.github/workflows/helm.yaml
@@ -5,6 +5,10 @@ on:
- "*"
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -24,8 +28,8 @@ jobs:
- charts/controller
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: azure/setup-helm@v4.2.0
+ - uses: azure/setup-helm@v5.0.1
- run: helm template ${{ matrix.chart }} --set dashboard.app.security.csrfKey=dummycsrfkey
diff --git a/.github/workflows/js-ci.yaml b/.github/workflows/js-ci.yaml
index 1d72d630ab..a678ad8de8 100644
--- a/.github/workflows/js-ci.yaml
+++ b/.github/workflows/js-ci.yaml
@@ -29,6 +29,10 @@ on:
permissions:
contents: read
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -45,8 +49,8 @@ jobs:
shell: bash
working-directory: js
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-node@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
@@ -75,8 +79,8 @@ jobs:
shell: bash
working-directory: js
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-node@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
@@ -96,8 +100,8 @@ jobs:
shell: bash
working-directory: js
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-node@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
diff --git a/.github/workflows/kubernetes-agent-cd.yaml b/.github/workflows/kubernetes-agent-cd.yaml
index 56c79436a7..386ba2130a 100644
--- a/.github/workflows/kubernetes-agent-cd.yaml
+++ b/.github/workflows/kubernetes-agent-cd.yaml
@@ -24,11 +24,13 @@ jobs:
shell: bash
working-directory: go/kubernetes-agent
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: |
+ go/go.work.sum
+ go/kubernetes-agent/**/go.sum
- run: PATH=$PATH:$GOPATH/bin make test
image:
@@ -48,7 +50,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -58,25 +60,25 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go
file: go/kubernetes-agent/hack/docker/Dockerfile
@@ -84,8 +86,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=kubernetes-agent-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=kubernetes-agent-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -112,27 +114,27 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/kubernetes-agent
diff --git a/.github/workflows/kubernetes-agent-ci.yaml b/.github/workflows/kubernetes-agent-ci.yaml
index e4bc0dd3dd..fa16647b8a 100644
--- a/.github/workflows/kubernetes-agent-ci.yaml
+++ b/.github/workflows/kubernetes-agent-ci.yaml
@@ -21,6 +21,10 @@ env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: pluralsh/kubernetes-agent
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -28,63 +32,9 @@ jobs:
permissions:
contents: read
- build-api:
- needs: [vouch]
- name: Build API
- runs-on: ubuntu-latest
- permissions:
- contents: 'read'
- defaults:
- run:
- shell: bash
- working-directory: go/kubernetes-agent
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/go.work
- check-latest: true
- - run: PATH=$PATH:$GOPATH/bin TARGET_DIRECTORY=. make -C api build
-
- build-kas:
- needs: [vouch]
- name: Build kas
- runs-on: ubuntu-latest
- permissions:
- contents: 'read'
- defaults:
- run:
- shell: bash
- working-directory: go/kubernetes-agent
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/go.work
- check-latest: true
- - run: PATH=$PATH:$GOPATH/bin TARGET_DIRECTORY=. make -C kas build-kas
-
- build-agentk:
- needs: [vouch]
- name: Build agentk
- runs-on: ubuntu-latest
- permissions:
- contents: 'read'
- defaults:
- run:
- shell: bash
- working-directory: go/kubernetes-agent
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/go.work
- check-latest: true
- - run: PATH=$PATH:$GOPATH/bin TARGET_DIRECTORY=. make -C kas build-agentk
-
test:
needs: [vouch]
- name: Unit test
+ name: Test
runs-on: ubuntu-latest
permissions:
contents: 'read'
@@ -93,11 +43,13 @@ jobs:
shell: bash
working-directory: go/kubernetes-agent
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: |
+ go/go.work.sum
+ go/kubernetes-agent/**/go.sum
- run: PATH=$PATH:$GOPATH/bin make test
build-image:
@@ -117,7 +69,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -128,7 +80,7 @@ jobs:
echo "IMAGE_SHA=${{ github.event.pull_request.head.sha || github.sha }}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/${{ env.REGISTRY_IMAGE }}
@@ -138,24 +90,24 @@ jobs:
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to Container registry
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go
file: go/kubernetes-agent/hack/docker/Dockerfile
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,name=ghcr.io/${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=kubernetes-agent-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=kubernetes-agent-${{ env.PLATFORM_PAIR }}
build-args: |
VERSION=v0.0.0-${{ env.IMAGE_SHA }}
GIT_COMMIT=${{ env.IMAGE_SHA }}
@@ -182,16 +134,16 @@ jobs:
packages: 'write'
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/${{ env.REGISTRY_IMAGE }}
@@ -201,7 +153,7 @@ jobs:
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}
- name: Login to Container registry
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
diff --git a/.github/workflows/nexus-cd.yaml b/.github/workflows/nexus-cd.yaml
index fa8520e618..3136550a46 100644
--- a/.github/workflows/nexus-cd.yaml
+++ b/.github/workflows/nexus-cd.yaml
@@ -38,10 +38,11 @@ jobs:
shell: bash
working-directory: go/nexus
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/nexus/go.mod
+ cache-dependency-path: go/nexus/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
@@ -68,7 +69,7 @@ jobs:
working-directory: go/nexus
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -78,36 +79,34 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go/nexus"
file: "./go/nexus/Dockerfile"
@@ -115,8 +114,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=nexus-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=nexus-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -151,33 +150,33 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-nexus-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Resolve tag version
id: tag_version
if: startsWith(github.ref, 'refs/tags/')
@@ -185,7 +184,7 @@ jobs:
echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/nexus-ci.yaml b/.github/workflows/nexus-ci.yaml
index 51c694cf75..e261b70c9f 100644
--- a/.github/workflows/nexus-ci.yaml
+++ b/.github/workflows/nexus-ci.yaml
@@ -15,6 +15,10 @@ env:
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/nexus
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -22,43 +26,31 @@ jobs:
permissions:
contents: read
- test:
- needs: [vouch]
- name: Test
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v6
-
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: go/nexus/go.mod
-
- - name: Run tests
- run: make test
- working-directory: go/nexus
-
- build:
+ build-test:
needs: [vouch]
- name: Build
+ name: Build and test
runs-on: ubuntu-latest
steps:
- name: Checkout code
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/nexus/go.mod
+ cache-dependency-path: go/nexus/go.sum
- name: Build binary
run: make build
working-directory: go/nexus
+ - name: Run tests
+ run: make test
+ working-directory: go/nexus
+
build-image:
name: Build image
- needs: [ build, test ]
+ needs: [build-test]
permissions:
contents: 'read'
id-token: 'write'
@@ -74,7 +66,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -84,22 +76,20 @@ jobs:
echo "BUILD_TIME=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go/nexus
file: go/nexus/Dockerfile
@@ -107,8 +97,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=nexus-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=nexus-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -132,22 +122,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
${{ env.REGISTRY_IMAGE }}
diff --git a/.github/workflows/observability-proxy-cd.yaml b/.github/workflows/observability-proxy-cd.yaml
index 5f9ef3ed24..92186afae5 100644
--- a/.github/workflows/observability-proxy-cd.yaml
+++ b/.github/workflows/observability-proxy-cd.yaml
@@ -37,10 +37,11 @@ jobs:
shell: bash
working-directory: go/observability-proxy
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/observability-proxy/go.mod
+ cache-dependency-path: go/observability-proxy/go.sum
cache: true
- run: go mod download
- run: GOCACHE=/tmp/go-build go test ./...
@@ -63,7 +64,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
@@ -74,44 +75,42 @@ jobs:
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: ./go/observability-proxy
file: ./go/observability-proxy/Dockerfile
@@ -119,8 +118,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=observability-proxy-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=observability-proxy-${{ env.PLATFORM_PAIR }}
- name: Export digest
run: |
@@ -153,39 +152,39 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-observability-proxy-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Resolve tag version
id: tag_version
@@ -195,7 +194,7 @@ jobs:
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/observability-proxy-ci.yaml b/.github/workflows/observability-proxy-ci.yaml
index c42df4ba66..59c5f6e778 100644
--- a/.github/workflows/observability-proxy-ci.yaml
+++ b/.github/workflows/observability-proxy-ci.yaml
@@ -14,6 +14,10 @@ env:
GOPROXY: "https://proxy.golang.org"
REGISTRY_IMAGE: ghcr.io/pluralsh/observability-proxy
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -27,38 +31,22 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/observability-proxy/go.mod
+ cache-dependency-path: go/observability-proxy/go.sum
- name: Run tests
- run: GOCACHE=/tmp/go-build go test ./...
- working-directory: go/observability-proxy
-
- build:
- needs: [vouch]
- name: Build
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v6
-
- - name: Set up Go
- uses: actions/setup-go@v6
- with:
- go-version-file: go/observability-proxy/go.mod
-
- - name: Build binary
- run: make build
+ run: go test ./...
working-directory: go/observability-proxy
build-image:
name: Build image
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
- needs: [build, test]
+ needs: [test]
permissions:
contents: read
packages: write
@@ -73,7 +61,7 @@ jobs:
runs-on: ${{ matrix.platforms.runner }}
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
@@ -84,18 +72,16 @@ jobs:
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -103,7 +89,7 @@ jobs:
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go/observability-proxy
file: go/observability-proxy/Dockerfile
@@ -111,8 +97,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=observability-proxy-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=observability-proxy-${{ env.PLATFORM_PAIR }}
- name: Export digest
run: |
@@ -138,25 +124,25 @@ jobs:
packages: write
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-observability-proxy-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
diff --git a/.github/workflows/oci-auth-cd.yaml b/.github/workflows/oci-auth-cd.yaml
index 155974c718..2ee646a0f0 100644
--- a/.github/workflows/oci-auth-cd.yaml
+++ b/.github/workflows/oci-auth-cd.yaml
@@ -21,6 +21,10 @@ env:
REGISTRY_IMAGE: ghcr.io/pluralsh/oci-auth
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -37,10 +41,11 @@ jobs:
shell: bash
working-directory: go/oci-auth
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/oci-auth/go.mod
+ cache-dependency-path: go/oci-auth/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
@@ -66,7 +71,7 @@ jobs:
working-directory: go/oci-auth
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Prepare
@@ -75,20 +80,20 @@ jobs:
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.REGISTRY_IMAGE }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Build and push by digest
id: build
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./go"
file: "./go/oci-auth/Dockerfile"
@@ -96,8 +101,8 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
platforms: ${{ matrix.platforms.platform }}
outputs: type=image,push-by-digest=true,name-canonical=true,push=true
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=oci-auth-${{ env.PLATFORM_PAIR }}
+ cache-to: type=gha,mode=max,scope=oci-auth-${{ env.PLATFORM_PAIR }}
build-args: |
GIT_COMMIT=${{ github.sha }}
VERSION=${{ steps.meta.outputs.version }}
@@ -131,36 +136,36 @@ jobs:
- docker.io/pluralsh/oci-auth
steps:
- name: Download digests
- uses: actions/download-artifact@v7
+ uses: actions/download-artifact@v8
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ matrix.images }}
tags: |
diff --git a/.github/workflows/oci-auth-ci.yaml b/.github/workflows/oci-auth-ci.yaml
index 437f58d68d..2d2c624866 100644
--- a/.github/workflows/oci-auth-ci.yaml
+++ b/.github/workflows/oci-auth-ci.yaml
@@ -17,6 +17,10 @@ permissions:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -24,35 +28,20 @@ jobs:
permissions:
contents: read
- build:
- needs: [vouch]
- name: Build
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/oci-auth
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/oci-auth/go.mod
- cache: true
- - run: go mod download
- - run: PATH=$PATH:$GOPATH/bin make build
- unit-test:
+ test:
needs: [vouch]
- name: Unit tests
+ name: Test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/oci-auth
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/oci-auth/go.mod
+ cache-dependency-path: go/oci-auth/go.sum
cache: true
- run: go mod download
- run: PATH=$PATH:$GOPATH/bin make test
diff --git a/.github/workflows/oci-charts-ghcr.yaml b/.github/workflows/oci-charts-ghcr.yaml
index fc8f347842..8417320e05 100644
--- a/.github/workflows/oci-charts-ghcr.yaml
+++ b/.github/workflows/oci-charts-ghcr.yaml
@@ -15,6 +15,10 @@ permissions:
contents: read
packages: write
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -35,11 +39,11 @@ jobs:
repository: pluralsh/test-charts
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: azure/setup-helm@v4
+ - uses: azure/setup-helm@v5
- name: Add repos
run: |
@@ -76,11 +80,11 @@ jobs:
repository: pluralsh/controller-chart
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: azure/setup-helm@v4
+ - uses: azure/setup-helm@v5
- name: Add repos
run: |
diff --git a/.github/workflows/polly-ci.yaml b/.github/workflows/polly-ci.yaml
index 09a727a81e..e65887ad22 100644
--- a/.github/workflows/polly-ci.yaml
+++ b/.github/workflows/polly-ci.yaml
@@ -15,6 +15,10 @@ on:
env:
GOPATH: /home/runner/go/
GOPROXY: "https://proxy.golang.org"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -22,33 +26,20 @@ jobs:
permissions:
contents: read
- build:
- needs: [vouch]
- name: Build
- runs-on: ubuntu-latest
- defaults:
- run:
- shell: bash
- working-directory: go/polly
- steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
- with:
- go-version-file: go/go.work
- check-latest: true
- - run: PATH=$PATH:$GOPATH/bin make build
test:
needs: [vouch]
- name: Unit test
+ name: Test
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: go/polly
steps:
- - uses: actions/checkout@v6
- - uses: actions/setup-go@v6
+ - uses: actions/checkout@v7
+ - uses: actions/setup-go@v7
with:
go-version-file: go/go.work
- check-latest: true
+ cache-dependency-path: |
+ go/go.work.sum
+ go/polly/go.sum
- run: PATH=$PATH:$GOPATH/bin make test
diff --git a/.github/workflows/pr-labels-agent.yaml b/.github/workflows/pr-labels-agent.yaml
index f212318fb6..84b71857ac 100644
--- a/.github/workflows/pr-labels-agent.yaml
+++ b/.github/workflows/pr-labels-agent.yaml
@@ -8,6 +8,10 @@ permissions:
contents: read
pull-requests: write
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -21,7 +25,7 @@ jobs:
if: startsWith(github.event.pull_request.head.ref, 'agent/')
runs-on: ubuntu-latest
steps:
- - uses: actions/github-script@v8
+ - uses: actions/github-script@v9
with:
script: |
const issue_number = context.payload.pull_request.number
diff --git a/.github/workflows/pr-labels.yaml b/.github/workflows/pr-labels.yaml
index 9477d18b5e..a3316a726d 100644
--- a/.github/workflows/pr-labels.yaml
+++ b/.github/workflows/pr-labels.yaml
@@ -3,6 +3,10 @@ on:
pull_request:
branches: [ master ]
types: [opened, labeled, unlabeled, synchronize]
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -19,7 +23,7 @@ jobs:
steps:
- name: Classify documentation pull requests
if: startsWith(github.event.pull_request.title, 'docs:')
- uses: actions/github-script@v8
+ uses: actions/github-script@v9
with:
script: |
await github.rest.issues.addLabels({
@@ -28,7 +32,7 @@ jobs:
issue_number: context.issue.number,
labels: ['documentation'],
})
- - uses: mheap/github-action-required-labels@v2
+ - uses: mheap/github-action-required-labels@v5
with:
mode: exactly
count: 1
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index 0b3e127fe4..c20d4a68f2 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -8,17 +8,17 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- uses: erlef/setup-beam@v1
with:
version-file: .tool-versions
version-type: strict
- uses: dtolnay/rust-toolchain@stable
- - uses: azure/setup-helm@v3
+ - uses: azure/setup-helm@v5
with:
version: latest
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
@@ -64,12 +64,12 @@ jobs:
packages: "write"
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -80,17 +80,15 @@ jobs:
# generate Docker tags based on the following events/attributes
tags: |
type=semver,pattern={{version}}
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - uses: google-github-actions/auth@v1
+ uses: docker/setup-buildx-action@v4
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: "projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github"
service_account: "terraform@pluralsh.iam.gserviceaccount.com"
token_format: "access_token"
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to gcr
run: gcloud auth configure-docker -q
- name: installing plural
@@ -99,19 +97,19 @@ jobs:
with:
email: gh-actions@plural.sh
- name: Login to plural registry
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: dkr.plural.sh
username: gh-actions@plural.sh
password: ${{ steps.plrl.outputs.token }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
@@ -121,7 +119,7 @@ jobs:
# env:
# JWT_PUBLIC_KEY: ${{ secrets.JWT_PUBLIC_KEY }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "."
file: "./Dockerfile"
@@ -129,8 +127,8 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=console
+ cache-to: type=gha,mode=max,scope=console
build-args: |
GIT_COMMIT=${{ github.sha }}
VITE_PROD_SECRET_KEY=${{ secrets.VITE_PROD_SECRET_KEY }}
@@ -154,7 +152,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Generate release notes
@@ -164,7 +162,7 @@ jobs:
RELEASE_NOTES_FILE: release-notes.md
run: python3 .github/scripts/generate-release-notes.py "${{ github.ref_name }}" --changelog CHANGELOG.md
- name: Release
- uses: softprops/action-gh-release@v1
+ uses: softprops/action-gh-release@v3
with:
body_path: release-notes.md
draft: false
@@ -192,13 +190,14 @@ jobs:
pull-requests: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
persist-credentials: false
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
- - uses: actions/setup-go@v6
+ - uses: actions/setup-go@v7
with:
go-version: "^1.21.3"
+ cache: false
# - name: update controller crds
# working-directory: controller
# run: make chart-crds
@@ -222,15 +221,15 @@ jobs:
release: ${{github.ref_name}}
- name: controller version
id: controller_vsn
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq ".version" charts/controller/Chart.yaml
- name: update byok
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq -i '.dependencies[] |= select(.name == "controller").version="${{ steps.controller_vsn.outputs.result }}"' charts/console/Chart.yaml
- name: update byok rapid
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq -i '.dependencies[] |= select(.name == "controller").version="${{ steps.controller_vsn.outputs.result }}"' charts/console-rapid/Chart.yaml
- name: helm-dependencies
@@ -256,13 +255,14 @@ jobs:
pull-requests: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
persist-credentials: false
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
- - uses: actions/setup-go@v6
+ - uses: actions/setup-go@v7
with:
go-version: "^1.21.3"
+ cache: false
- name: push byok chart
uses: pluralsh/chart-releaser@v0.1.3
with:
@@ -275,11 +275,11 @@ jobs:
release: ${{github.ref_name}}
- name: controller version
id: controller_vsn
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq ".version" charts/controller/Chart.yaml
- name: update byok
- uses: mikefarah/yq@master
+ uses: mikefarah/yq@v4
with:
cmd: yq -i '.dependencies[] |= select(.name == "controller").version="${{ steps.controller_vsn.outputs.result }}"' charts/console-rapid/Chart.yaml
- name: helm-dependencies
diff --git a/.github/workflows/repository-prebake-console.yaml b/.github/workflows/repository-prebake-console.yaml
index 2e9a59c25d..ff7d84861c 100644
--- a/.github/workflows/repository-prebake-console.yaml
+++ b/.github/workflows/repository-prebake-console.yaml
@@ -37,34 +37,34 @@ jobs:
packages: write
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{ github.sha }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to GCR
run: gcloud auth configure-docker -q
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -76,7 +76,7 @@ jobs:
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
gcr.io/pluralsh/repository-prebake
@@ -90,7 +90,7 @@ jobs:
type=sha,prefix=dev-,format=short,priority=800,enable=${{ github.event_name == 'push' }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: go/repository-prebake
file: repository-prebake/base/Dockerfile
@@ -110,7 +110,7 @@ jobs:
contents: read
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{ github.sha }}
@@ -138,10 +138,10 @@ jobs:
fi
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to Docker Hub
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
@@ -152,7 +152,7 @@ jobs:
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: ${{ env.CONSOLE_IMAGE }}
flavor: |
@@ -163,7 +163,7 @@ jobs:
type=sha,prefix=dev-,format=short,priority=800,enable=${{ github.event_name == 'push' }}
- name: Build and push
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: .
file: repository-prebake/console/Dockerfile
diff --git a/.github/workflows/softserve-cd.yaml b/.github/workflows/softserve-cd.yaml
index 0d0bef4ee5..70a53eca97 100644
--- a/.github/workflows/softserve-cd.yaml
+++ b/.github/workflows/softserve-cd.yaml
@@ -17,6 +17,10 @@ permissions:
env:
DOCKER_METADATA_PR_HEAD_SHA: 'true'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -32,20 +36,19 @@ jobs:
run:
shell: bash
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: docker/setup-qemu-action@v3
- - uses: docker/setup-buildx-action@v3
+ - uses: docker/setup-buildx-action@v4
- name: Build softserve image for local test
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./dockerfiles"
file: "./dockerfiles/Dockerfile.softserve"
load: true
tags: softserve-local:test
platforms: linux/amd64
- cache-from: type=gha
+ cache-from: type=gha,scope=softserve
- name: Run softserve container
run: |
docker run -d --name softserve-test \
@@ -79,11 +82,11 @@ jobs:
id-token: 'write'
packages: 'write'
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- id: meta-softserve
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
images: |
ghcr.io/pluralsh/git-server
@@ -95,29 +98,28 @@ jobs:
type=ref,event=tag
type=ref,event=pr
type=sha
- - uses: google-github-actions/auth@v1
+ - uses: google-github-actions/auth@v3
with:
workload_identity_provider: 'projects/${{ secrets.GOOGLE_PROJECT_ID }}/locations/global/workloadIdentityPools/github/providers/github'
service_account: 'terraform@pluralsh.iam.gserviceaccount.com'
token_format: 'access_token'
create_credentials_file: true
- - uses: google-github-actions/setup-gcloud@v1.0.1
+ - uses: google-github-actions/setup-gcloud@v3.0.1
- name: Login to gcr
run: gcloud auth configure-docker -q
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- - uses: docker/login-action@v3
+ - uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- - uses: docker/setup-qemu-action@v3
- - uses: docker/setup-buildx-action@v3
+ - uses: docker/setup-buildx-action@v4
- name: Build and push softserve
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "./dockerfiles"
file: "./dockerfiles/Dockerfile.softserve"
@@ -125,5 +127,5 @@ jobs:
tags: ${{ steps.meta-softserve.outputs.tags }}
labels: ${{ steps.meta-softserve.outputs.labels }}
platforms: linux/amd64
- cache-from: type=gha
- cache-to: type=gha,mode=max
+ cache-from: type=gha,scope=softserve
+ cache-to: type=gha,mode=max,scope=softserve
diff --git a/.github/workflows/stylelint-config-publish.yaml b/.github/workflows/stylelint-config-publish.yaml
index 2aff012af4..d020e5a50d 100644
--- a/.github/workflows/stylelint-config-publish.yaml
+++ b/.github/workflows/stylelint-config-publish.yaml
@@ -29,10 +29,10 @@ jobs:
name: Publish npm package
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
fetch-depth: 0
- - uses: actions/setup-node@v6
+ - uses: actions/setup-node@v7
with:
node-version: 24.11.1
cache: yarn
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index ddfae500dd..58bfdfd01b 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -8,6 +8,10 @@ on:
branches: [master]
pull_request:
branches: ["*"]
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -21,12 +25,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Docker meta
id: meta
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -39,7 +43,7 @@ jobs:
type=ref,event=branch
- name: Docker meta
id: meta-ubuntu
- uses: docker/metadata-action@v5
+ uses: docker/metadata-action@v6
with:
# list of Docker images to use as base name for tags
images: |
@@ -50,15 +54,15 @@ jobs:
type=ref,event=pr
type=ref,event=branch
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
+ uses: docker/setup-buildx-action@v4
- name: Login to GHCR
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
@@ -68,7 +72,7 @@ jobs:
# env:
# JWT_PUBLIC_KEY: ${{ secrets.JWT_PUBLIC_KEY }}
- name: Test Build console image
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v7
with:
context: "."
file: "./Dockerfile"
@@ -85,7 +89,7 @@ jobs:
SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
# - name: Build and push ubuntu images
- # uses: docker/build-push-action@v6
+ # uses: docker/build-push-action@v7
# with:
# context: "."
# file: "./Dockerfile"
@@ -108,17 +112,17 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- uses: erlef/setup-beam@v1
with:
version-file: .tool-versions
version-type: strict
- uses: dtolnay/rust-toolchain@stable
- - uses: azure/setup-helm@v3
+ - uses: azure/setup-helm@v5
with:
version: latest
- name: Login to Docker
- uses: docker/login-action@v3
+ uses: docker/login-action@v4
with:
username: mjgpluralsh
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
@@ -167,16 +171,17 @@ jobs:
name: Check that Schema is up to date
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- uses: erlef/setup-beam@v1
with:
version-file: .tool-versions
version-type: strict
- uses: dtolnay/rust-toolchain@stable
- name: Set up Go
- uses: actions/setup-go@v6
+ uses: actions/setup-go@v7
with:
go-version-file: go/client/go.mod
+ cache-dependency-path: go/client/go.sum
cache: true
- name: Restore dependencies cache
uses: actions/cache@v6
diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml
index ac47f2fecc..c2465742f3 100644
--- a/.github/workflows/trivy.yaml
+++ b/.github/workflows/trivy.yaml
@@ -9,6 +9,10 @@ on:
- main
schedule:
- cron: "0 0 * * *"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
vouch:
name: Vouch
@@ -26,9 +30,9 @@ jobs:
actions: read
steps:
- name: Checkout code
- uses: actions/checkout@v6
+ uses: actions/checkout@v7
- name: Run Trivy vulnerability scanner in IaC mode
- uses: aquasecurity/trivy-action@master
+ uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0
with:
scan-type: 'fs'
hide-progress: false
diff --git a/.github/workflows/vouch-check-pr.yml b/.github/workflows/vouch-check-pr.yml
index 39024da010..d33c6b2058 100644
--- a/.github/workflows/vouch-check-pr.yml
+++ b/.github/workflows/vouch-check-pr.yml
@@ -12,6 +12,10 @@ permissions:
pull-requests: write
actions: write
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
+ cancel-in-progress: true
+
jobs:
check:
name: Check PR author is vouched
@@ -22,7 +26,7 @@ jobs:
github.event.issue.pull_request &&
contains(github.event.comment.body, '/recheck'))
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
with:
persist-credentials: false
diff --git a/.github/workflows/vouch-manage-by-issue.yml b/.github/workflows/vouch-manage-by-issue.yml
index b42657a92e..534c9fb9c1 100644
--- a/.github/workflows/vouch-manage-by-issue.yml
+++ b/.github/workflows/vouch-manage-by-issue.yml
@@ -23,7 +23,7 @@ jobs:
contains(github.event.comment.body, '!unvouch')
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- uses: mitchellh/vouch/action/manage-by-issue@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
with:
diff --git a/.github/workflows/vouch-sync-codeowners.yml b/.github/workflows/vouch-sync-codeowners.yml
index 444210a1c2..e952bab368 100644
--- a/.github/workflows/vouch-sync-codeowners.yml
+++ b/.github/workflows/vouch-sync-codeowners.yml
@@ -19,7 +19,7 @@ jobs:
name: Sync CODEOWNERS into VOUCHED.td
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- uses: mitchellh/vouch/action/sync-codeowners@d66fa29a64600490892131ad87597c30c91fcac4 # v1.5.0
with:
diff --git a/charts/console-rapid/charts/controller-0.0.214.tgz b/charts/console-rapid/charts/controller-0.0.214.tgz
index 7dd8ff1bf5..2a07591095 100644
Binary files a/charts/console-rapid/charts/controller-0.0.214.tgz and b/charts/console-rapid/charts/controller-0.0.214.tgz differ
diff --git a/charts/console/charts/controller-0.0.214.tgz b/charts/console/charts/controller-0.0.214.tgz
index e52c46b55b..2a07591095 100644
Binary files a/charts/console/charts/controller-0.0.214.tgz and b/charts/console/charts/controller-0.0.214.tgz differ
diff --git a/charts/controller/crds/deployments.plural.sh_dashboards.yaml b/charts/controller/crds/deployments.plural.sh_dashboards.yaml
new file mode 100644
index 0000000000..3ccebf4055
--- /dev/null
+++ b/charts/controller/crds/deployments.plural.sh_dashboards.yaml
@@ -0,0 +1,389 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.19.0
+ name: dashboards.deployments.plural.sh
+spec:
+ group: deployments.plural.sh
+ names:
+ kind: Dashboard
+ listKind: DashboardList
+ plural: dashboards
+ singular: dashboard
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - description: ID of the Dashboard in the Console API.
+ jsonPath: .status.id
+ name: ID
+ type: string
+ - description: Whether the Dashboard is ready.
+ jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: READY
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs
+ arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec defines the desired state of the Dashboard.
+ properties:
+ description:
+ description: Description is an optional dashboard description.
+ type: string
+ graphs:
+ description: |-
+ Graphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
+ Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
+ Note that overlapping graph layouts are only validated by the Console API.
+ items:
+ description: DashboardGraph is a single graph placed on the dashboard
+ grid.
+ properties:
+ datasource:
+ description: Datasource is the tool call used to fetch external
+ data.
+ properties:
+ input:
+ description: Input is passed to the observability tool.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ tool:
+ description: Tool is the name of the observability tool
+ used to fetch the data.
+ minLength: 1
+ type: string
+ type:
+ description: Type is the kind of data returned by the datasource.
+ enum:
+ - LOGS
+ - METRICS
+ - TRACES
+ - LABELS
+ type: string
+ required:
+ - input
+ - tool
+ - type
+ type: object
+ description:
+ description: Description is an optional graph description.
+ type: string
+ identifier:
+ description: Identifier is a stable identifier unique within
+ the dashboard.
+ maxLength: 128
+ minLength: 1
+ type: string
+ layout:
+ description: Layout is the grid position and size of the graph.
+ properties:
+ h:
+ description: H is the height in grid rows.
+ format: int64
+ minimum: 1
+ type: integer
+ w:
+ description: W is the width in grid columns.
+ format: int64
+ minimum: 1
+ type: integer
+ x:
+ description: X is the zero-based horizontal grid coordinate.
+ format: int64
+ minimum: 0
+ type: integer
+ "y":
+ description: Y is the zero-based vertical grid coordinate.
+ format: int64
+ minimum: 0
+ type: integer
+ required:
+ - h
+ - w
+ - x
+ - "y"
+ type: object
+ markdown:
+ description: Markdown is the content for MARKDOWN graphs.
+ type: string
+ options:
+ description: Options are visualization-specific display options.
+ Sections may set collapsed.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ sectionId:
+ description: SectionID is the identifier of the SECTION graph
+ containing this graph. Sections cannot be nested.
+ maxLength: 128
+ type: string
+ title:
+ description: Title is the graph title.
+ type: string
+ type:
+ description: Type is the graph visualization type.
+ enum:
+ - TIMESERIES
+ - GAUGE
+ - LOGS
+ - MARKDOWN
+ - TABLE
+ - STAT
+ - BAR
+ - PIE
+ - HEATMAP
+ - TRACES
+ - SECTION
+ maxLength: 16
+ type: string
+ required:
+ - identifier
+ - layout
+ - type
+ type: object
+ x-kubernetes-validations:
+ - message: markdown must be set for MARKDOWN graphs
+ rule: self.type != 'MARKDOWN' || has(self.markdown)
+ - message: sections cannot be nested, SECTION graphs cannot set
+ sectionId
+ rule: self.type != 'SECTION' || !has(self.sectionId) || size(self.sectionId)
+ == 0
+ maxItems: 200
+ type: array
+ x-kubernetes-list-map-keys:
+ - identifier
+ x-kubernetes-list-type: map
+ inputs:
+ description: Inputs are user-configurable dashboard variables.
+ items:
+ description: DashboardInput is a user-configurable dashboard variable.
+ properties:
+ datasource:
+ description: Datasource is the tool query used to populate input
+ options, such as metric label search.
+ properties:
+ input:
+ description: Input is passed to the observability tool.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ tool:
+ description: Tool is the name of the observability tool
+ used to fetch the data.
+ minLength: 1
+ type: string
+ type:
+ description: Type is the kind of data returned by the datasource.
+ enum:
+ - LOGS
+ - METRICS
+ - TRACES
+ - LABELS
+ type: string
+ required:
+ - input
+ - tool
+ - type
+ type: object
+ default:
+ description: Default is the default input value.
+ type: string
+ description:
+ description: Description is an optional input description.
+ type: string
+ label:
+ description: Label is a human-readable input label.
+ type: string
+ name:
+ description: Name is the variable name referenced by graph datasource
+ inputs.
+ minLength: 1
+ type: string
+ options:
+ description: Options are the allowed values for select inputs.
+ items:
+ type: string
+ type: array
+ required:
+ description: Required defines whether a value is required when
+ rendering.
+ type: boolean
+ type:
+ description: Type is the input control type.
+ enum:
+ - TEXT
+ - NUMBER
+ - BOOLEAN
+ - SELECT
+ - MULTI_SELECT
+ - TIME_RANGE
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ name:
+ description: |-
+ Name is the dashboard name, unique within its workbench.
+ If not set, metadata.name is used.
+ type: string
+ reconciliation:
+ description: Reconciliation settings for this resource.
+ properties:
+ driftDetection:
+ default: true
+ description: |-
+ DriftDetection enables drift detection for this resource.
+ It is destined to detect changes made to the related
+ resources that are not referenced with owner ref.
+ Use with Interval to set how often drift detection runs.
+ example: false
+ type: boolean
+ interval:
+ default: 30m
+ description: |-
+ Interval for the drift detection mechanism.
+ It is subject to jitter to avoid the thundering herd problem,
+ it is calculated as a random value between 50% and 150% of the given duration.
+ example: 5m30s
+ type: string
+ type: object
+ workbenchRef:
+ description: |-
+ WorkbenchRef references the Workbench that owns this dashboard.
+ The Workbench must be in the same namespace as the dashboard.
+ It is immutable, a dashboard cannot be moved to a different workbench.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ - message: workbenchRef is immutable
+ rule: self == oldSelf
+ required:
+ - workbenchRef
+ type: object
+ x-kubernetes-validations:
+ - message: sectionId must reference an existing SECTION graph
+ rule: '!has(self.graphs) || self.graphs.all(g, !has(g.sectionId) ||
+ size(g.sectionId) == 0 || self.graphs.exists(s, s.type == ''SECTION''
+ && s.identifier == g.sectionId))'
+ status:
+ description: Status represents the current state of this resource.
+ properties:
+ conditions:
+ description: Represents the observations of a PrAutomation's current
+ state.
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ id:
+ description: ID of the resource in the Console API.
+ type: string
+ readonly:
+ default: false
+ description: ReadOnly indicates whether the resource is read-only.
+ type: boolean
+ sha:
+ description: SHA of last applied configuration.
+ type: string
+ required:
+ - readonly
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/charts/controller/crds/deployments.plural.sh_monitors.yaml b/charts/controller/crds/deployments.plural.sh_monitors.yaml
new file mode 100644
index 0000000000..1d99e2c4bf
--- /dev/null
+++ b/charts/controller/crds/deployments.plural.sh_monitors.yaml
@@ -0,0 +1,526 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.19.0
+ name: monitors.deployments.plural.sh
+spec:
+ group: deployments.plural.sh
+ names:
+ kind: Monitor
+ listKind: MonitorList
+ plural: monitors
+ singular: monitor
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - description: ID of the Monitor in the Console API.
+ jsonPath: .status.id
+ name: ID
+ type: string
+ - description: Monitor data type.
+ jsonPath: .spec.type
+ name: TYPE
+ type: string
+ - description: Severity of alerts generated by this Monitor.
+ jsonPath: .spec.severity
+ name: SEVERITY
+ type: string
+ - description: Whether the Monitor is ready.
+ jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: READY
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Monitor represents an observability monitor attached to a service deployment. It periodically
+ evaluates a log or metrics query against a threshold and fires alerts when it is crossed.
+ Optionally, it can be attached to a workbench to start an investigation when it fires.
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec defines the desired state of the Monitor.
+ properties:
+ alertTemplate:
+ description: AlertTemplate is an optional template used when rendering
+ alert messages for this monitor.
+ type: string
+ description:
+ description: Description is an optional free-form description of what
+ this monitor is checking.
+ type: string
+ evaluationCron:
+ description: |-
+ EvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
+ It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
+ or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
+ @secondly or @reboot shortcuts. Field values are validated by the Console API.
+ minLength: 1
+ pattern: ^(@(?i:yearly|annually|monthly|weekly|daily|midnight|hourly|minutely|secondly|reboot)|[^
+ ]+( [^ ]+){4,5})$
+ type: string
+ modes:
+ description: Modes defines mode-specific options for monitor-triggered
+ workbench jobs.
+ properties:
+ budget:
+ description: Budget defines budget limits for the job.
+ properties:
+ cost:
+ description: |-
+ Cost is the maximum cost budget for the job.
+ It is a string to allow decimal values (e.g. "12.5").
+ pattern: ^[0-9]+(\.[0-9]+)?$
+ type: string
+ tokens:
+ description: Tokens is the maximum token budget for the job.
+ format: int64
+ minimum: 0
+ type: integer
+ type: object
+ coding:
+ description: Coding defines coding mode options for the job.
+ properties:
+ approval:
+ description: Approval requires approval before coding agent
+ runs continue.
+ type: boolean
+ babysit:
+ description: Babysit enables babysit mode for coding agent
+ runs.
+ type: boolean
+ review:
+ description: Review enables pull request review mode for coding
+ agent runs.
+ type: boolean
+ type: object
+ kubernetes:
+ description: Kubernetes defines kubernetes action options for
+ the job.
+ properties:
+ delete:
+ description: Delete enables kubernetes delete actions.
+ type: boolean
+ drain:
+ description: Drain enables kubernetes node drain actions.
+ type: boolean
+ excludeNamespaces:
+ description: ExcludeNamespaces are namespaces the agent can
+ never act in.
+ items:
+ type: string
+ type: array
+ exec:
+ description: Exec enables kubernetes exec actions.
+ type: boolean
+ requireNamespaces:
+ description: RequireNamespaces, if set, are the only namespaces
+ the agent is allowed to act in.
+ items:
+ type: string
+ type: array
+ update:
+ description: Update enables kubernetes update actions.
+ type: boolean
+ type: object
+ model:
+ description: Model overrides the AI model used for the job.
+ properties:
+ model:
+ description: Model is the model name for the job.
+ minLength: 1
+ type: string
+ provider:
+ description: Provider is the AI provider for the job.
+ enum:
+ - OPENAI
+ - ANTHROPIC
+ - OLLAMA
+ - AZURE
+ - BEDROCK
+ - VERTEX
+ - OPENAI_COMPATIBLE
+ - XAI
+ type: string
+ required:
+ - model
+ - provider
+ type: object
+ plan:
+ description: Plan enables planning mode for the job.
+ type: boolean
+ verification:
+ description: Verification enables verification mode for the job.
+ type: boolean
+ type: object
+ name:
+ description: |-
+ Name is the short name used to identify this monitor in the Console API.
+ If not set, metadata.name is used.
+ type: string
+ prompt:
+ description: Prompt is used when the monitor starts a workbench investigation.
+ maxLength: 2048
+ type: string
+ query:
+ description: Query is the underlying query configuration used to fetch
+ data for this monitor.
+ properties:
+ log:
+ description: Log query used when the monitor type is LOG.
+ properties:
+ bucketSize:
+ description: BucketSize is the time bucket size (e.g. 5m)
+ used when aggregating log results.
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ duration:
+ description: Duration is the lookback duration for the log
+ query (e.g. 1h, 10m, 30s).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ facets:
+ description: Facets are optional key/value facets applied
+ as additional filters on the log query.
+ items:
+ description: MonitorFacet is a key/value facet used to further
+ filter log queries.
+ properties:
+ key:
+ description: Key is the facet key (e.g. kubernetes namespace
+ or pod label name).
+ type: string
+ value:
+ description: Value is the facet value to match for the
+ given key.
+ type: string
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ operator:
+ default: OR
+ description: |-
+ Operator to use when combining multiple log queries.
+ Defaults to OR, which is also the Console API default.
+ enum:
+ - OR
+ - AND
+ type: string
+ options:
+ description: Options are provider-specific log query options.
+ properties:
+ azure:
+ description: Azure log query options.
+ properties:
+ resourceId:
+ description: ResourceID is the Azure resource ID to
+ query logs for.
+ type: string
+ type: object
+ type: object
+ query:
+ description: Query is the log query string passed through
+ to the underlying log provider.
+ minLength: 1
+ type: string
+ tool:
+ description: Tool is the named workbench logs tool. When omitted,
+ the native Plural logs provider is used.
+ type: string
+ required:
+ - bucketSize
+ - query
+ type: object
+ metrics:
+ description: Metrics query used when the monitor type is METRICS.
+ properties:
+ duration:
+ description: Duration is the lookback duration for the metrics
+ query (e.g. 1h).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ options:
+ description: Options are provider-specific metrics query options.
+ properties:
+ azure:
+ description: Azure metrics query options.
+ properties:
+ aggregation:
+ description: Aggregation is the Azure metrics aggregation
+ type.
+ type: string
+ filter:
+ description: Filter is the Azure metrics filter expression.
+ type: string
+ metricsEndpoint:
+ description: MetricsEndpoint is the Azure metrics
+ endpoint override.
+ type: string
+ metricsNamespace:
+ description: MetricsNamespace is the Azure metrics
+ namespace.
+ type: string
+ orderBy:
+ description: OrderBy is the Azure metrics ordering
+ expression.
+ type: string
+ resourceId:
+ description: ResourceID is the Azure resource ID to
+ query metrics for.
+ type: string
+ rollUpBy:
+ description: RollUpBy is the Azure metrics dimension
+ to roll up by.
+ type: string
+ type: object
+ type: object
+ query:
+ description: Query is the metrics query string passed through
+ to the underlying metrics provider.
+ minLength: 1
+ type: string
+ step:
+ description: Step is the metrics query step (e.g. 5m).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ tool:
+ description: Tool is the named workbench metrics tool. When
+ omitted, the native Plural metrics provider is used.
+ type: string
+ required:
+ - query
+ type: object
+ type: object
+ x-kubernetes-validations:
+ - message: only one of log or metrics can be set
+ rule: '!(has(self.log) && has(self.metrics))'
+ reconciliation:
+ description: Reconciliation settings for this resource.
+ properties:
+ driftDetection:
+ default: true
+ description: |-
+ DriftDetection enables drift detection for this resource.
+ It is destined to detect changes made to the related
+ resources that are not referenced with owner ref.
+ Use with Interval to set how often drift detection runs.
+ example: false
+ type: boolean
+ interval:
+ default: 30m
+ description: |-
+ Interval for the drift detection mechanism.
+ It is subject to jitter to avoid the thundering herd problem,
+ it is calculated as a random value between 50% and 150% of the given duration.
+ example: 5m30s
+ type: string
+ type: object
+ service:
+ description: |-
+ Service references an existing service in the Console API this monitor is attached to,
+ in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
+ a monitor to a service that is not managed by a ServiceDeployment resource.
+ Either ServiceRef or Service must be set.
+ example: mgmt/console
+ pattern: ^[^/]+/[^/]+$
+ type: string
+ serviceRef:
+ description: |-
+ ServiceRef references the ServiceDeployment resource this monitor is attached to.
+ The ServiceDeployment must be in the same namespace as the monitor.
+ Either ServiceRef or Service must be set.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ severity:
+ description: Severity is the severity level applied to alerts generated
+ by this monitor.
+ enum:
+ - LOW
+ - MEDIUM
+ - HIGH
+ - CRITICAL
+ - UNDEFINED
+ type: string
+ threshold:
+ description: Threshold is the configuration that determines when the
+ monitor should fire.
+ properties:
+ aggregate:
+ description: Aggregate is the aggregation function applied over
+ the result set.
+ enum:
+ - MAX
+ - MIN
+ - AVG
+ type: string
+ value:
+ description: |-
+ Value is the numeric value the aggregated metric must cross to trigger the alert.
+ It is a string to allow decimal values (e.g. "0.95").
+ pattern: ^-?[0-9]+(\.[0-9]+)?$
+ type: string
+ required:
+ - aggregate
+ - value
+ type: object
+ type:
+ description: Type is the monitor data type.
+ enum:
+ - LOG
+ - METRICS
+ type: string
+ workbenchRef:
+ description: |-
+ WorkbenchRef references the Workbench this monitor is attached to.
+ When set, the monitor can start a workbench investigation when it fires.
+ It is required if the query uses a named workbench tool.
+ The Workbench must be in the same namespace as the monitor.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ required:
+ - evaluationCron
+ - query
+ - severity
+ - threshold
+ - type
+ type: object
+ x-kubernetes-validations:
+ - message: exactly one of serviceRef or service must be set
+ rule: has(self.serviceRef) != has(self.service)
+ - message: query.log must be set when type is LOG
+ rule: self.type != 'LOG' || has(self.query.log)
+ - message: query.metrics must be set when type is METRICS
+ rule: self.type != 'METRICS' || has(self.query.metrics)
+ - message: workbenchRef is required for tool-backed monitor queries
+ rule: has(self.workbenchRef) || !((has(self.query.log) && has(self.query.log.tool))
+ || (has(self.query.metrics) && has(self.query.metrics.tool)))
+ status:
+ description: Status represents the current state of this resource.
+ properties:
+ conditions:
+ description: Represents the observations of a PrAutomation's current
+ state.
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ id:
+ description: ID of the resource in the Console API.
+ type: string
+ readonly:
+ default: false
+ description: ReadOnly indicates whether the resource is read-only.
+ type: boolean
+ sha:
+ description: SHA of last applied configuration.
+ type: string
+ required:
+ - readonly
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/charts/controller/values.yaml b/charts/controller/values.yaml
index f8767282a1..a4046ebbdf 100644
--- a/charts/controller/values.yaml
+++ b/charts/controller/values.yaml
@@ -89,6 +89,7 @@ rbac:
- compliancereportgenerators
- customcompatibilitymatrices
- customstackruns
+ - dashboards
- deploymentsettings
- federatedcredentials
- flows
@@ -100,6 +101,7 @@ rbac:
- infrastructurestacks
- managednamespaces
- mcpservers
+ - monitors
- namespacecredentials
- notificationrouters
- notificationsinks
diff --git a/go/client/client.go b/go/client/client.go
index 42bc87a23b..ee9f65a430 100644
--- a/go/client/client.go
+++ b/go/client/client.go
@@ -110,6 +110,7 @@ type ConsoleClient interface {
GetServiceDeploymentComponents(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetServiceDeploymentComponents, error)
GetServiceDeploymentForAgent(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetServiceDeploymentForAgent, error)
GetServiceDeploymentByHandle(ctx context.Context, cluster string, name string, interceptors ...clientv2.RequestInterceptor) (*GetServiceDeploymentByHandle, error)
+ GetServiceDeploymentTinyByHandle(ctx context.Context, cluster string, name string, interceptors ...clientv2.RequestInterceptor) (*GetServiceDeploymentTinyByHandle, error)
GetServiceTarball(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetServiceTarball, error)
ListServiceDeployment(ctx context.Context, after *string, before *string, last *int64, clusterID *string, interceptors ...clientv2.RequestInterceptor) (*ListServiceDeployment, error)
PagedClusterServices(ctx context.Context, after *string, first *int64, before *string, last *int64, interceptors ...clientv2.RequestInterceptor) (*PagedClusterServices, error)
@@ -185,6 +186,14 @@ type ConsoleClient interface {
GetMCPServer(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetMCPServer, error)
UpsertMCPServer(ctx context.Context, attributes McpServerAttributes, interceptors ...clientv2.RequestInterceptor) (*UpsertMCPServer, error)
DeleteMCPServer(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*DeleteMCPServer, error)
+ GetMonitor(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetMonitor, error)
+ CreateMonitor(ctx context.Context, attributes MonitorAttributes, interceptors ...clientv2.RequestInterceptor) (*CreateMonitor, error)
+ UpdateMonitor(ctx context.Context, id string, attributes MonitorAttributes, interceptors ...clientv2.RequestInterceptor) (*UpdateMonitor, error)
+ DeleteMonitor(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*DeleteMonitor, error)
+ GetWorkbenchDashboard(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetWorkbenchDashboard, error)
+ CreateDashboard(ctx context.Context, attributes DashboardAttributes, interceptors ...clientv2.RequestInterceptor) (*CreateDashboard, error)
+ UpdateDashboard(ctx context.Context, id string, attributes DashboardAttributes, interceptors ...clientv2.RequestInterceptor) (*UpdateDashboard, error)
+ DeleteDashboard(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*DeleteDashboard, error)
ListNamespaces(ctx context.Context, after *string, first *int64, before *string, last *int64, interceptors ...clientv2.RequestInterceptor) (*ListNamespaces, error)
ListClusterNamespaces(ctx context.Context, after *string, first *int64, before *string, last *int64, interceptors ...clientv2.RequestInterceptor) (*ListClusterNamespaces, error)
GetNamespace(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetNamespace, error)
@@ -3868,6 +3877,63 @@ func (t *AISettingsFragment) GetAnthropic() *AISettingsFragment_Anthropic {
return t.Anthropic
}
+type MonitorFragment struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+ Service *MonitorFragment_Service "json:\"service,omitempty\" graphql:\"service\""
+ Workbench *MonitorFragment_Workbench "json:\"workbench,omitempty\" graphql:\"workbench\""
+}
+
+func (t *MonitorFragment) GetID() string {
+ if t == nil {
+ t = &MonitorFragment{}
+ }
+ return t.ID
+}
+func (t *MonitorFragment) GetName() string {
+ if t == nil {
+ t = &MonitorFragment{}
+ }
+ return t.Name
+}
+func (t *MonitorFragment) GetService() *MonitorFragment_Service {
+ if t == nil {
+ t = &MonitorFragment{}
+ }
+ return t.Service
+}
+func (t *MonitorFragment) GetWorkbench() *MonitorFragment_Workbench {
+ if t == nil {
+ t = &MonitorFragment{}
+ }
+ return t.Workbench
+}
+
+type WorkbenchDashboardFragment struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+ Workbench *WorkbenchDashboardFragment_Workbench "json:\"workbench,omitempty\" graphql:\"workbench\""
+}
+
+func (t *WorkbenchDashboardFragment) GetID() string {
+ if t == nil {
+ t = &WorkbenchDashboardFragment{}
+ }
+ return t.ID
+}
+func (t *WorkbenchDashboardFragment) GetName() string {
+ if t == nil {
+ t = &WorkbenchDashboardFragment{}
+ }
+ return t.Name
+}
+func (t *WorkbenchDashboardFragment) GetWorkbench() *WorkbenchDashboardFragment_Workbench {
+ if t == nil {
+ t = &WorkbenchDashboardFragment{}
+ }
+ return t.Workbench
+}
+
type ManagedNamespaceEdgeFragment struct {
Cursor *string "json:\"cursor,omitempty\" graphql:\"cursor\""
Node *ManagedNamespaceMinimalFragment "json:\"node,omitempty\" graphql:\"node\""
@@ -9749,6 +9815,60 @@ func (t *AISettingsFragment_Anthropic) GetModel() *string {
return t.Model
}
+type MonitorFragment_Service struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *MonitorFragment_Service) GetID() string {
+ if t == nil {
+ t = &MonitorFragment_Service{}
+ }
+ return t.ID
+}
+func (t *MonitorFragment_Service) GetName() string {
+ if t == nil {
+ t = &MonitorFragment_Service{}
+ }
+ return t.Name
+}
+
+type MonitorFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *MonitorFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &MonitorFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *MonitorFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &MonitorFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type WorkbenchDashboardFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *WorkbenchDashboardFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *WorkbenchDashboardFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.Name
+}
+
type PersonaFragment_Configuration_PersonaConfigurationFragment_Deployments struct {
AddOns *bool "json:\"addOns,omitempty\" graphql:\"addOns\""
Clusters *bool "json:\"clusters,omitempty\" graphql:\"clusters\""
@@ -23974,6 +24094,24 @@ func (t *GetServiceDeploymentByHandle_ServiceDeployment_ServiceDeploymentExtende
return t.Stack
}
+type GetServiceDeploymentTinyByHandle_ServiceDeployment struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *GetServiceDeploymentTinyByHandle_ServiceDeployment) GetID() string {
+ if t == nil {
+ t = &GetServiceDeploymentTinyByHandle_ServiceDeployment{}
+ }
+ return t.ID
+}
+func (t *GetServiceDeploymentTinyByHandle_ServiceDeployment) GetName() string {
+ if t == nil {
+ t = &GetServiceDeploymentTinyByHandle_ServiceDeployment{}
+ }
+ return t.Name
+}
+
type GetServiceTarball_ServiceTarball struct {
Content string "json:\"content\" graphql:\"content\""
Path string "json:\"path\" graphql:\"path\""
@@ -25685,6 +25823,190 @@ func (t *DeleteMCPServer_DeleteMcpServer) GetID() string {
return t.ID
}
+type GetMonitor_Monitor_MonitorFragment_Service struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *GetMonitor_Monitor_MonitorFragment_Service) GetID() string {
+ if t == nil {
+ t = &GetMonitor_Monitor_MonitorFragment_Service{}
+ }
+ return t.ID
+}
+func (t *GetMonitor_Monitor_MonitorFragment_Service) GetName() string {
+ if t == nil {
+ t = &GetMonitor_Monitor_MonitorFragment_Service{}
+ }
+ return t.Name
+}
+
+type GetMonitor_Monitor_MonitorFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *GetMonitor_Monitor_MonitorFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &GetMonitor_Monitor_MonitorFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *GetMonitor_Monitor_MonitorFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &GetMonitor_Monitor_MonitorFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type CreateMonitor_CreateMonitor_MonitorFragment_Service struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *CreateMonitor_CreateMonitor_MonitorFragment_Service) GetID() string {
+ if t == nil {
+ t = &CreateMonitor_CreateMonitor_MonitorFragment_Service{}
+ }
+ return t.ID
+}
+func (t *CreateMonitor_CreateMonitor_MonitorFragment_Service) GetName() string {
+ if t == nil {
+ t = &CreateMonitor_CreateMonitor_MonitorFragment_Service{}
+ }
+ return t.Name
+}
+
+type CreateMonitor_CreateMonitor_MonitorFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *CreateMonitor_CreateMonitor_MonitorFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &CreateMonitor_CreateMonitor_MonitorFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *CreateMonitor_CreateMonitor_MonitorFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &CreateMonitor_CreateMonitor_MonitorFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type UpdateMonitor_UpdateMonitor_MonitorFragment_Service struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *UpdateMonitor_UpdateMonitor_MonitorFragment_Service) GetID() string {
+ if t == nil {
+ t = &UpdateMonitor_UpdateMonitor_MonitorFragment_Service{}
+ }
+ return t.ID
+}
+func (t *UpdateMonitor_UpdateMonitor_MonitorFragment_Service) GetName() string {
+ if t == nil {
+ t = &UpdateMonitor_UpdateMonitor_MonitorFragment_Service{}
+ }
+ return t.Name
+}
+
+type UpdateMonitor_UpdateMonitor_MonitorFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *UpdateMonitor_UpdateMonitor_MonitorFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &UpdateMonitor_UpdateMonitor_MonitorFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *UpdateMonitor_UpdateMonitor_MonitorFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &UpdateMonitor_UpdateMonitor_MonitorFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type DeleteMonitor_DeleteMonitor struct {
+ ID string "json:\"id\" graphql:\"id\""
+}
+
+func (t *DeleteMonitor_DeleteMonitor) GetID() string {
+ if t == nil {
+ t = &DeleteMonitor_DeleteMonitor{}
+ }
+ return t.ID
+}
+
+type GetWorkbenchDashboard_WorkbenchDashboard_WorkbenchDashboardFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *GetWorkbenchDashboard_WorkbenchDashboard_WorkbenchDashboardFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &GetWorkbenchDashboard_WorkbenchDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *GetWorkbenchDashboard_WorkbenchDashboard_WorkbenchDashboardFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &GetWorkbenchDashboard_WorkbenchDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type CreateDashboard_CreateDashboard_WorkbenchDashboardFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *CreateDashboard_CreateDashboard_WorkbenchDashboardFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &CreateDashboard_CreateDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *CreateDashboard_CreateDashboard_WorkbenchDashboardFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &CreateDashboard_CreateDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type UpdateDashboard_UpdateDashboard_WorkbenchDashboardFragment_Workbench struct {
+ ID string "json:\"id\" graphql:\"id\""
+ Name string "json:\"name\" graphql:\"name\""
+}
+
+func (t *UpdateDashboard_UpdateDashboard_WorkbenchDashboardFragment_Workbench) GetID() string {
+ if t == nil {
+ t = &UpdateDashboard_UpdateDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.ID
+}
+func (t *UpdateDashboard_UpdateDashboard_WorkbenchDashboardFragment_Workbench) GetName() string {
+ if t == nil {
+ t = &UpdateDashboard_UpdateDashboard_WorkbenchDashboardFragment_Workbench{}
+ }
+ return t.Name
+}
+
+type DeleteDashboard_DeleteDashboard struct {
+ ID string "json:\"id\" graphql:\"id\""
+}
+
+func (t *DeleteDashboard_DeleteDashboard) GetID() string {
+ if t == nil {
+ t = &DeleteDashboard_DeleteDashboard{}
+ }
+ return t.ID
+}
+
type ListNamespaces_ManagedNamespaces struct {
Edges []*ManagedNamespaceEdgeFragment "json:\"edges,omitempty\" graphql:\"edges\""
PageInfo PageInfoFragment "json:\"pageInfo\" graphql:\"pageInfo\""
@@ -46124,6 +46446,17 @@ func (t *GetServiceDeploymentByHandle) GetServiceDeployment() *ServiceDeployment
return t.ServiceDeployment
}
+type GetServiceDeploymentTinyByHandle struct {
+ ServiceDeployment *GetServiceDeploymentTinyByHandle_ServiceDeployment "json:\"serviceDeployment,omitempty\" graphql:\"serviceDeployment\""
+}
+
+func (t *GetServiceDeploymentTinyByHandle) GetServiceDeployment() *GetServiceDeploymentTinyByHandle_ServiceDeployment {
+ if t == nil {
+ t = &GetServiceDeploymentTinyByHandle{}
+ }
+ return t.ServiceDeployment
+}
+
type GetServiceTarball struct {
ServiceTarball []*GetServiceTarball_ServiceTarball "json:\"serviceTarball,omitempty\" graphql:\"serviceTarball\""
}
@@ -46949,6 +47282,94 @@ func (t *DeleteMCPServer) GetDeleteMcpServer() *DeleteMCPServer_DeleteMcpServer
return t.DeleteMcpServer
}
+type GetMonitor struct {
+ Monitor *MonitorFragment "json:\"monitor,omitempty\" graphql:\"monitor\""
+}
+
+func (t *GetMonitor) GetMonitor() *MonitorFragment {
+ if t == nil {
+ t = &GetMonitor{}
+ }
+ return t.Monitor
+}
+
+type CreateMonitor struct {
+ CreateMonitor *MonitorFragment "json:\"createMonitor,omitempty\" graphql:\"createMonitor\""
+}
+
+func (t *CreateMonitor) GetCreateMonitor() *MonitorFragment {
+ if t == nil {
+ t = &CreateMonitor{}
+ }
+ return t.CreateMonitor
+}
+
+type UpdateMonitor struct {
+ UpdateMonitor *MonitorFragment "json:\"updateMonitor,omitempty\" graphql:\"updateMonitor\""
+}
+
+func (t *UpdateMonitor) GetUpdateMonitor() *MonitorFragment {
+ if t == nil {
+ t = &UpdateMonitor{}
+ }
+ return t.UpdateMonitor
+}
+
+type DeleteMonitor struct {
+ DeleteMonitor *DeleteMonitor_DeleteMonitor "json:\"deleteMonitor,omitempty\" graphql:\"deleteMonitor\""
+}
+
+func (t *DeleteMonitor) GetDeleteMonitor() *DeleteMonitor_DeleteMonitor {
+ if t == nil {
+ t = &DeleteMonitor{}
+ }
+ return t.DeleteMonitor
+}
+
+type GetWorkbenchDashboard struct {
+ WorkbenchDashboard *WorkbenchDashboardFragment "json:\"workbenchDashboard,omitempty\" graphql:\"workbenchDashboard\""
+}
+
+func (t *GetWorkbenchDashboard) GetWorkbenchDashboard() *WorkbenchDashboardFragment {
+ if t == nil {
+ t = &GetWorkbenchDashboard{}
+ }
+ return t.WorkbenchDashboard
+}
+
+type CreateDashboard struct {
+ CreateDashboard *WorkbenchDashboardFragment "json:\"createDashboard,omitempty\" graphql:\"createDashboard\""
+}
+
+func (t *CreateDashboard) GetCreateDashboard() *WorkbenchDashboardFragment {
+ if t == nil {
+ t = &CreateDashboard{}
+ }
+ return t.CreateDashboard
+}
+
+type UpdateDashboard struct {
+ UpdateDashboard *WorkbenchDashboardFragment "json:\"updateDashboard,omitempty\" graphql:\"updateDashboard\""
+}
+
+func (t *UpdateDashboard) GetUpdateDashboard() *WorkbenchDashboardFragment {
+ if t == nil {
+ t = &UpdateDashboard{}
+ }
+ return t.UpdateDashboard
+}
+
+type DeleteDashboard struct {
+ DeleteDashboard *DeleteDashboard_DeleteDashboard "json:\"deleteDashboard,omitempty\" graphql:\"deleteDashboard\""
+}
+
+func (t *DeleteDashboard) GetDeleteDashboard() *DeleteDashboard_DeleteDashboard {
+ if t == nil {
+ t = &DeleteDashboard{}
+ }
+ return t.DeleteDashboard
+}
+
type ListNamespaces struct {
ManagedNamespaces *ListNamespaces_ManagedNamespaces "json:\"managedNamespaces,omitempty\" graphql:\"managedNamespaces\""
}
@@ -57549,6 +57970,32 @@ func (c *Client) GetServiceDeploymentByHandle(ctx context.Context, cluster strin
return &res, nil
}
+const GetServiceDeploymentTinyByHandleDocument = `query GetServiceDeploymentTinyByHandle ($cluster: String!, $name: String!) {
+ serviceDeployment(cluster: $cluster, name: $name) {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) GetServiceDeploymentTinyByHandle(ctx context.Context, cluster string, name string, interceptors ...clientv2.RequestInterceptor) (*GetServiceDeploymentTinyByHandle, error) {
+ vars := map[string]any{
+ "cluster": cluster,
+ "name": name,
+ }
+
+ var res GetServiceDeploymentTinyByHandle
+ if err := c.Client.Post(ctx, "GetServiceDeploymentTinyByHandle", GetServiceDeploymentTinyByHandleDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
const GetServiceTarballDocument = `query GetServiceTarball ($id: ID!) {
serviceTarball(id: $id) {
path
@@ -61234,6 +61681,260 @@ func (c *Client) DeleteMCPServer(ctx context.Context, id string, interceptors ..
return &res, nil
}
+const GetMonitorDocument = `query GetMonitor ($id: ID!) {
+ monitor(id: $id) {
+ ... MonitorFragment
+ }
+}
+fragment MonitorFragment on Monitor {
+ id
+ name
+ service {
+ id
+ name
+ }
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) GetMonitor(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetMonitor, error) {
+ vars := map[string]any{
+ "id": id,
+ }
+
+ var res GetMonitor
+ if err := c.Client.Post(ctx, "GetMonitor", GetMonitorDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const CreateMonitorDocument = `mutation CreateMonitor ($attributes: MonitorAttributes!) {
+ createMonitor(attributes: $attributes) {
+ ... MonitorFragment
+ }
+}
+fragment MonitorFragment on Monitor {
+ id
+ name
+ service {
+ id
+ name
+ }
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) CreateMonitor(ctx context.Context, attributes MonitorAttributes, interceptors ...clientv2.RequestInterceptor) (*CreateMonitor, error) {
+ vars := map[string]any{
+ "attributes": attributes,
+ }
+
+ var res CreateMonitor
+ if err := c.Client.Post(ctx, "CreateMonitor", CreateMonitorDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const UpdateMonitorDocument = `mutation UpdateMonitor ($id: ID!, $attributes: MonitorAttributes!) {
+ updateMonitor(id: $id, attributes: $attributes) {
+ ... MonitorFragment
+ }
+}
+fragment MonitorFragment on Monitor {
+ id
+ name
+ service {
+ id
+ name
+ }
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) UpdateMonitor(ctx context.Context, id string, attributes MonitorAttributes, interceptors ...clientv2.RequestInterceptor) (*UpdateMonitor, error) {
+ vars := map[string]any{
+ "id": id,
+ "attributes": attributes,
+ }
+
+ var res UpdateMonitor
+ if err := c.Client.Post(ctx, "UpdateMonitor", UpdateMonitorDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const DeleteMonitorDocument = `mutation DeleteMonitor ($id: ID!) {
+ deleteMonitor(id: $id) {
+ id
+ }
+}
+`
+
+func (c *Client) DeleteMonitor(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*DeleteMonitor, error) {
+ vars := map[string]any{
+ "id": id,
+ }
+
+ var res DeleteMonitor
+ if err := c.Client.Post(ctx, "DeleteMonitor", DeleteMonitorDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const GetWorkbenchDashboardDocument = `query GetWorkbenchDashboard ($id: ID!) {
+ workbenchDashboard(id: $id) {
+ ... WorkbenchDashboardFragment
+ }
+}
+fragment WorkbenchDashboardFragment on WorkbenchDashboard {
+ id
+ name
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) GetWorkbenchDashboard(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*GetWorkbenchDashboard, error) {
+ vars := map[string]any{
+ "id": id,
+ }
+
+ var res GetWorkbenchDashboard
+ if err := c.Client.Post(ctx, "GetWorkbenchDashboard", GetWorkbenchDashboardDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const CreateDashboardDocument = `mutation CreateDashboard ($attributes: DashboardAttributes!) {
+ createDashboard(attributes: $attributes) {
+ ... WorkbenchDashboardFragment
+ }
+}
+fragment WorkbenchDashboardFragment on WorkbenchDashboard {
+ id
+ name
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) CreateDashboard(ctx context.Context, attributes DashboardAttributes, interceptors ...clientv2.RequestInterceptor) (*CreateDashboard, error) {
+ vars := map[string]any{
+ "attributes": attributes,
+ }
+
+ var res CreateDashboard
+ if err := c.Client.Post(ctx, "CreateDashboard", CreateDashboardDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const UpdateDashboardDocument = `mutation UpdateDashboard ($id: ID!, $attributes: DashboardAttributes!) {
+ updateDashboard(id: $id, attributes: $attributes) {
+ ... WorkbenchDashboardFragment
+ }
+}
+fragment WorkbenchDashboardFragment on WorkbenchDashboard {
+ id
+ name
+ workbench {
+ id
+ name
+ }
+}
+`
+
+func (c *Client) UpdateDashboard(ctx context.Context, id string, attributes DashboardAttributes, interceptors ...clientv2.RequestInterceptor) (*UpdateDashboard, error) {
+ vars := map[string]any{
+ "id": id,
+ "attributes": attributes,
+ }
+
+ var res UpdateDashboard
+ if err := c.Client.Post(ctx, "UpdateDashboard", UpdateDashboardDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
+const DeleteDashboardDocument = `mutation DeleteDashboard ($id: ID!) {
+ deleteDashboard(id: $id) {
+ id
+ }
+}
+`
+
+func (c *Client) DeleteDashboard(ctx context.Context, id string, interceptors ...clientv2.RequestInterceptor) (*DeleteDashboard, error) {
+ vars := map[string]any{
+ "id": id,
+ }
+
+ var res DeleteDashboard
+ if err := c.Client.Post(ctx, "DeleteDashboard", DeleteDashboardDocument, &res, vars, interceptors...); err != nil {
+ if c.Client.ParseDataWhenErrors {
+ return &res, err
+ }
+
+ return nil, err
+ }
+
+ return &res, nil
+}
+
const ListNamespacesDocument = `query ListNamespaces ($after: String, $first: Int, $before: String, $last: Int) {
managedNamespaces(after: $after, first: $first, before: $before, last: $last) {
pageInfo {
@@ -74754,6 +75455,7 @@ var DocumentOperationNames = map[string]string{
GetServiceDeploymentComponentsDocument: "GetServiceDeploymentComponents",
GetServiceDeploymentForAgentDocument: "GetServiceDeploymentForAgent",
GetServiceDeploymentByHandleDocument: "GetServiceDeploymentByHandle",
+ GetServiceDeploymentTinyByHandleDocument: "GetServiceDeploymentTinyByHandle",
GetServiceTarballDocument: "GetServiceTarball",
ListServiceDeploymentDocument: "ListServiceDeployment",
PagedClusterServicesDocument: "PagedClusterServices",
@@ -74829,6 +75531,14 @@ var DocumentOperationNames = map[string]string{
GetMCPServerDocument: "GetMCPServer",
UpsertMCPServerDocument: "UpsertMCPServer",
DeleteMCPServerDocument: "DeleteMCPServer",
+ GetMonitorDocument: "GetMonitor",
+ CreateMonitorDocument: "CreateMonitor",
+ UpdateMonitorDocument: "UpdateMonitor",
+ DeleteMonitorDocument: "DeleteMonitor",
+ GetWorkbenchDashboardDocument: "GetWorkbenchDashboard",
+ CreateDashboardDocument: "CreateDashboard",
+ UpdateDashboardDocument: "UpdateDashboard",
+ DeleteDashboardDocument: "DeleteDashboard",
ListNamespacesDocument: "ListNamespaces",
ListClusterNamespacesDocument: "ListClusterNamespaces",
GetNamespaceDocument: "GetNamespace",
diff --git a/go/client/declarative_inputs.go b/go/client/declarative_inputs.go
new file mode 100644
index 0000000000..1572d631f2
--- /dev/null
+++ b/go/client/declarative_inputs.go
@@ -0,0 +1,78 @@
+package client
+
+import (
+ "encoding/json"
+ "fmt"
+ "reflect"
+ "strings"
+)
+
+// Generated inputs omit nil and empty fields, and Console keeps the stored value of omitted fields.
+// Monitor and dashboard inputs describe the full desired state, so they send every field instead:
+// nil pointers as null and nil lists as [] (Console rejects null for embedded lists).
+
+// MarshalJSON sends all fields of the monitor attributes, see above.
+func (in MonitorAttributes) MarshalJSON() ([]byte, error) {
+ return marshalFullInput(reflect.ValueOf(in))
+}
+
+// MarshalJSON sends all fields of the dashboard attributes, see above.
+func (in DashboardAttributes) MarshalJSON() ([]byte, error) {
+ return marshalFullInput(reflect.ValueOf(in))
+}
+
+// marshalFullInput encodes a value without omitting fields. It walks structs directly,
+// ignoring their MarshalJSON methods, which prevents infinite recursion.
+func marshalFullInput(v reflect.Value) ([]byte, error) {
+ switch v.Kind() {
+ case reflect.Invalid:
+ return []byte("null"), nil
+ case reflect.Pointer, reflect.Interface:
+ if v.IsNil() {
+ return []byte("null"), nil
+ }
+ return marshalFullInput(v.Elem())
+ case reflect.Slice, reflect.Array:
+ items := make([]json.RawMessage, 0, v.Len())
+ for i := range v.Len() {
+ item, err := marshalFullInput(v.Index(i))
+ if err != nil {
+ return nil, err
+ }
+ items = append(items, item)
+ }
+ return json.Marshal(items)
+ case reflect.Struct:
+ t := v.Type()
+ fields := make(map[string]json.RawMessage, t.NumField())
+ for i := range t.NumField() {
+ field := t.Field(i)
+ if !field.IsExported() {
+ continue
+ }
+
+ name := jsonFieldName(field)
+ if name == "-" {
+ continue
+ }
+
+ value, err := marshalFullInput(v.Field(i))
+ if err != nil {
+ return nil, fmt.Errorf("failed to encode %s.%s: %w", t.Name(), field.Name, err)
+ }
+ fields[name] = value
+ }
+ return json.Marshal(fields)
+ default:
+ // Scalars and enums (enums implement json.Marshaler).
+ return json.Marshal(v.Interface())
+ }
+}
+
+func jsonFieldName(field reflect.StructField) string {
+ name, _, _ := strings.Cut(field.Tag.Get("json"), ",")
+ if name == "" {
+ return field.Name
+ }
+ return name
+}
diff --git a/go/client/declarative_inputs_test.go b/go/client/declarative_inputs_test.go
new file mode 100644
index 0000000000..96ec2e5881
--- /dev/null
+++ b/go/client/declarative_inputs_test.go
@@ -0,0 +1,167 @@
+package client
+
+import (
+ "context"
+ "encoding/json"
+ "reflect"
+ "testing"
+
+ "github.com/gqlgo/gqlgenc/clientv2"
+)
+
+// encodeVariables encodes the input the same way generated client methods encode request variables.
+func encodeVariables(t *testing.T, attributes any) map[string]any {
+ t.Helper()
+
+ encoded, err := clientv2.MarshalJSON(context.Background(), map[string]any{"attributes": attributes})
+ if err != nil {
+ t.Fatalf("failed to encode variables: %v", err)
+ }
+
+ var variables map[string]any
+ if err := json.Unmarshal(encoded, &variables); err != nil {
+ t.Fatalf("failed to decode variables %s: %v", encoded, err)
+ }
+
+ attrs, ok := variables["attributes"].(map[string]any)
+ if !ok {
+ t.Fatalf("attributes are not an object: %s", encoded)
+ }
+ return attrs
+}
+
+func expectField(t *testing.T, object map[string]any, key string, expected any) {
+ t.Helper()
+
+ value, ok := object[key]
+ if !ok {
+ t.Fatalf("expected field %q to be sent, got %v", key, object)
+ }
+ if !reflect.DeepEqual(value, expected) {
+ t.Fatalf("expected field %q to be %#v, got %#v", key, expected, value)
+ }
+}
+
+func expectObject(t *testing.T, object map[string]any, key string) map[string]any {
+ t.Helper()
+
+ value, ok := object[key].(map[string]any)
+ if !ok {
+ t.Fatalf("expected field %q to be an object, got %#v", key, object[key])
+ }
+ return value
+}
+
+func TestMonitorAttributesSendAllFields(t *testing.T) {
+ step := "1m"
+ attrs := encodeVariables(t, MonitorAttributes{
+ ServiceID: "service-id",
+ Name: "monitor",
+ Severity: AlertSeverityHigh,
+ Type: MonitorTypeMetrics,
+ EvaluationCron: "*/5 * * * *",
+ Query: MonitorQueryAttributes{
+ Metrics: &MonitorMetricsQueryAttributes{Query: "up", Step: &step},
+ },
+ Threshold: MonitorThresholdAttributes{Aggregate: MonitorAggregateMax, Value: 0.5},
+ })
+
+ expectField(t, attrs, "serviceId", "service-id")
+ expectField(t, attrs, "severity", "HIGH")
+ expectField(t, attrs, "type", "METRICS")
+ for _, key := range []string{"workbenchId", "prompt", "modes", "description", "alertTemplate"} {
+ expectField(t, attrs, key, nil)
+ }
+
+ threshold := expectObject(t, attrs, "threshold")
+ expectField(t, threshold, "aggregate", "MAX")
+ expectField(t, threshold, "value", 0.5)
+
+ query := expectObject(t, attrs, "query")
+ expectField(t, query, "log", nil)
+
+ metrics := expectObject(t, query, "metrics")
+ expectField(t, metrics, "query", "up")
+ expectField(t, metrics, "step", "1m")
+ for _, key := range []string{"tool", "duration", "options"} {
+ expectField(t, metrics, key, nil)
+ }
+}
+
+func TestMonitorAttributesSendEmptyLists(t *testing.T) {
+ attrs := encodeVariables(t, MonitorAttributes{
+ Type: MonitorTypeLog,
+ Query: MonitorQueryAttributes{
+ Log: &MonitorLogQueryAttributes{Query: "error", BucketSize: "5m"},
+ },
+ Modes: &WorkbenchJobModesAttributes{
+ Kubernetes: &WorkbenchJobKubernetesModesAttributes{},
+ },
+ })
+
+ log := expectObject(t, expectObject(t, attrs, "query"), "log")
+ expectField(t, log, "facets", []any{})
+ expectField(t, log, "options", nil)
+ expectField(t, expectObject(t, attrs, "query"), "metrics", nil)
+
+ modes := expectObject(t, attrs, "modes")
+ for _, key := range []string{"plan", "verification", "model", "coding", "budget"} {
+ expectField(t, modes, key, nil)
+ }
+ kubernetes := expectObject(t, modes, "kubernetes")
+ expectField(t, kubernetes, "excludeNamespaces", []any{})
+ expectField(t, kubernetes, "requireNamespaces", []any{})
+ expectField(t, kubernetes, "update", nil)
+}
+
+func TestDashboardAttributesSendAllFields(t *testing.T) {
+ workbenchID := "workbench-id"
+ name := "dashboard"
+
+ attrs := encodeVariables(t, DashboardAttributes{WorkbenchID: &workbenchID, Name: &name})
+ expectField(t, attrs, "workbenchId", workbenchID)
+ expectField(t, attrs, "name", name)
+ expectField(t, attrs, "description", nil)
+ expectField(t, attrs, "graphs", []any{})
+ expectField(t, attrs, "inputs", []any{})
+
+ options := `{"collapsed":true}`
+ attrs = encodeVariables(t, DashboardAttributes{
+ Graphs: []*DashboardGraphAttributes{{
+ Identifier: "overview",
+ Type: DashboardGraphTypeSection,
+ Options: &options,
+ Layout: DashboardGraphLayoutAttributes{X: 0, Y: 1, W: 12, H: 2},
+ }},
+ Inputs: []*DashboardInputAttributes{{Name: "namespace", Type: DashboardInputTypeText}},
+ })
+
+ graphs, ok := attrs["graphs"].([]any)
+ if !ok || len(graphs) != 1 {
+ t.Fatalf("expected one graph, got %#v", attrs["graphs"])
+ }
+ graph := graphs[0].(map[string]any)
+ expectField(t, graph, "identifier", "overview")
+ expectField(t, graph, "type", "SECTION")
+ expectField(t, graph, "options", options)
+ expectField(t, graph, "layout", map[string]any{"x": 0.0, "y": 1.0, "w": 12.0, "h": 2.0})
+ for _, key := range []string{"title", "description", "sectionId", "markdown", "datasource"} {
+ expectField(t, graph, key, nil)
+ }
+
+ inputs, ok := attrs["inputs"].([]any)
+ if !ok || len(inputs) != 1 {
+ t.Fatalf("expected one input, got %#v", attrs["inputs"])
+ }
+ input := inputs[0].(map[string]any)
+ expectField(t, input, "options", []any{})
+ expectField(t, input, "datasource", nil)
+}
+
+func TestOtherInputsStillOmitEmptyFields(t *testing.T) {
+ // Only monitor and dashboard attributes send the full state, other inputs keep the generated behavior.
+ attrs := encodeVariables(t, WorkbenchJobModesAttributes{})
+ if len(attrs) != 0 {
+ t.Fatalf("expected empty fields to be omitted, got %v", attrs)
+ }
+}
diff --git a/go/client/generated/persisted-queries/queries.json b/go/client/generated/persisted-queries/queries.json
index cdf0888b34..702b143c70 100644
--- a/go/client/generated/persisted-queries/queries.json
+++ b/go/client/generated/persisted-queries/queries.json
@@ -1 +1 @@
-{"operations":{"sha256:00103bd4468d331dceccf9f2cf1c3770fe14da6023e65301de2f423934a180df":"query GetNamespaceByName ($name: String!) {\n\tmanagedNamespace(name: $name) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:0079baec6ec668221625f6674e7a6d3e9732fb54295023d0694fb597a5655fed":"mutation CreateAgentRun ($runtimeId: ID!, $attributes: AgentRunAttributes!) {\n\tcreateAgentRun(runtimeId: $runtimeId, attributes: $attributes) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:00cc798d4efba980df734ed908f4a6eff35ea9532ba5a24ce2e678c47b9e4edd":"mutation DeleteGitRepository ($id: ID!) {\n\tdeleteGitRepository(id: $id) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:0495efe67b265523309e91230a439c44a3566aa4f54eae8038c54b08e197da4a":"mutation CreatePullRequest ($id: ID!, $identifier: String, $branch: String, $context: Json) {\n\tcreatePullRequest(id: $id, identifier: $identifier, branch: $branch, context: $context) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:04f446a7241e2a77f9c03860529c22f6097f0b065b8a91812af367db06c51783":"mutation DeletePipeline ($id: ID!) {\n\tdeletePipeline(id: $id) {\n\t\t... PipelineFragmentId\n\t}\n}\nfragment PipelineFragmentId on Pipeline {\n\tid\n}\n","sha256:05614f559b29689b95f90bfb84adf304e3898a429c26fc3b55dda779621f3d26":"mutation UpsertCatalog ($attributes: CatalogAttributes) {\n\tupsertCatalog(attributes: $attributes) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:071e713551ffc28f4196427c367142ecc5fa316d0b9fc17c0dfc682f6b1dca67":"query GetProjectTiny ($id: ID, $name: String) {\n\tproject(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:07fc34a5e5b6a6de044a6b35bf40e5218106f2849f0528e71f8f23287a498858":"mutation UpdateCloudConnection ($id: ID!, $attributes: CloudConnectionAttributes!) {\n\tupdateCloudConnection(id: $id, attributes: $attributes) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:08223278347596ef0a0f5ab698ed517803e9dcf41027abe6e1b00e1765a24534":"mutation UpdateAgentRunTodos ($id: ID!, $todos: [AgentTodoAttributes]) {\n\tupdateAgentRunTodos(id: $id, todos: $todos) {\n\t\t... AgentRunBaseFragment\n\t}\n}\nfragment AgentRunBaseFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tmode\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:085357a60e4fc347e143328a81f9de10226eed039c1bf5c65180c4a22e0cabbf":"mutation CreateGlobalServiceDeploymentFromTemplate ($attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:08538e2a930e5635cdf567d936c4e328614f999e32a060237d625a4bf0a0d818":"query GetPreviewEnvironmentTemplate ($id: ID, $flowId: ID, $name: String) {\n\tpreviewEnvironmentTemplate(id: $id, flowId: $flowId, name: $name) {\n\t\t... PreviewEnvironmentTemplateFragment\n\t}\n}\nfragment PreviewEnvironmentTemplateFragment on PreviewEnvironmentTemplate {\n\tid\n\tname\n\tcommentTemplate\n\tflow {\n\t\tid\n\t}\n\tconnection {\n\t\tid\n\t}\n\ttemplate {\n\t\tname\n\t}\n}\n","sha256:0860bf6411f3d79915d4229c914b2f6f01f790c4f060cb845172f57cc919db2f":"mutation UpdateAgentRun ($id: ID!, $attributes: AgentRunStatusAttributes!) {\n\tupdateAgentRun(id: $id, attributes: $attributes) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:087514315644018028c9097e305b44d39b6d2a04bbc27db80624db6f7cc0ca72":"query GetCloudConnection ($id: ID, $name: String) {\n\tcloudConnection(id: $id, name: $name) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0a28bd1898f2387165f13394e8eef522528534c85f28548d81706a42b2711b11":"mutation CreateProject ($attributes: ProjectAttributes!) {\n\tcreateProject(attributes: $attributes) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0bc7753b4e8e392d65a52f75255bc48a95cdea84ee46118b08f141280cb5aa18":"query ListStackRuns ($id: ID!, $after: String, $before: String, $first: Int, $last: Int) {\n\tinfrastructureStack(id: $id) {\n\t\truns(after: $after, before: $before, first: $first, last: $last) {\n\t\t\tpageInfo {\n\t\t\t\t... PageInfoFragment\n\t\t\t}\n\t\t\tedges {\n\t\t\t\tnode {\n\t\t\t\t\t... StackRunFragment\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:0c0af919e2a1ba02a7c44e25fe40583b263f45bc1a1639ae2d730c016a86fdbe":"query GetStackRun ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunFragment\n\t}\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:0c4c1df078093fe381c14fb9f8ab6e669fedf3a631a8508dbad33ac9cfba8d93":"mutation DeleteWorkbenchTool ($id: ID!) {\n\tdeleteWorkbenchTool(id: $id) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0d0a41b5dfa910c86743e2020189205095d82cfdaff768c950becb55d86e2b18":"query GetPrAutomationTiny ($id: ID, $name: String) {\n\tprAutomation(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:0e44517bb19e961ba5072de436b6c59ae5f5f26a0abe32ae3e8ddee5f69a6aa2":"query GetInfrastructureStack ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:0f0760bb85acd02798886990edc78e9aac44db50fa883f250d5972519ffa9ce3":"query GetGitRepository ($id: ID, $url: String) {\n\tgitRepository(id: $id, url: $url) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:0f2aa1a8d7ef81b1122c7d75ae4e54e7f47f04ec942981b778e1d6899309f374":"mutation DeleteCustomCompatibilityMatrix ($name: String!) {\n\tdeleteCustomCompatibilityMatrix(name: $name) {\n\t\tid\n\t}\n}\n","sha256:0fa340d64f20a24b0474d3d73ba219d190d314d53d35e1cd3cba85f0c08b3e9b":"query ListClusterNamespaces ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterManagedNamespaces(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ManagedNamespaceEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ManagedNamespaceEdgeFragment on ManagedNamespaceEdge {\n\tcursor\n\tnode {\n\t\t... ManagedNamespaceMinimalFragment\n\t}\n}\nfragment ManagedNamespaceMinimalFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n}\n","sha256:113ac0549d0fcfd701e5bd6f98913d91d1b5c93a64d33494d301d8a0512d0c3b":"mutation DeleteCluster ($id: ID!) {\n\tdeleteCluster(id: $id) {\n\t\tid\n\t}\n}\n","sha256:1241ee42efef6bee48784022906e25828de81d27b66b8b2661a6696b25bf8096":"query ListPolicyConstraints ($after: String, $first: Int, $before: String, $last: Int, $namespace: String, $kind: String, $q: String) {\n\tpolicyConstraints(after: $after, first: $first, before: $before, last: $last, namespace: $namespace, kind: $kind, q: $q) {\n\t\t... PolicyConstraintConnectionFragment\n\t}\n}\nfragment PolicyConstraintConnectionFragment on PolicyConstraintConnection {\n\tpageInfo {\n\t\t... PageInfoFragment\n\t}\n\tedges {\n\t\t... PolicyConstraintEdgeFragment\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PolicyConstraintEdgeFragment on PolicyConstraintEdge {\n\tcursor\n\tnode {\n\t\t... PolicyConstraintFragment\n\t}\n}\nfragment PolicyConstraintFragment on PolicyConstraint {\n\tid\n\tname\n\tdescription\n\trecommendation\n\tviolationCount\n\tref {\n\t\t... ConstraintRefFragment\n\t}\n\tviolations {\n\t\t... ViolationFragment\n\t}\n}\nfragment ConstraintRefFragment on ConstraintRef {\n\tkind\n\tname\n}\nfragment ViolationFragment on Violation {\n\tid\n\tgroup\n\tversion\n\tkind\n\tnamespace\n\tname\n\tmessage\n}\n","sha256:12978d7990d091e6a41e14baa02a3eec74a42fa51d13c7123407753af75206d5":"mutation DeleteMCPServer ($id: ID!) {\n\tdeleteMcpServer(id: $id) {\n\t\tid\n\t}\n}\n","sha256:14dab7763ca34c91224365fb4ee687491114c4f8417edf9242c56b2471d8e8aa":"mutation UpsertObserver ($attributes: ObserverAttributes!) {\n\tupsertObserver(attributes: $attributes) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:156bc954626bd533fcb5d6b04f8818932bf0aac8fe3b75559b80c0fdba618249":"query GetServiceContext ($name: String!) {\n\tserviceContext(name: $name) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:15709e3e6be95a817cd82440cad42dff3e321b122c6dd4a244b34c11c83e0d60":"mutation AddClusterAuditLog ($audit: ClusterAuditAttributes, $audits: [ClusterAuditAttributes!]) {\n\taddClusterAuditLog(audit: $audit, audits: $audits)\n}\n","sha256:167f4296a579145d132b20e16834fe927e5cbcf3207bc99ee1e4224cde76c0ca":"mutation TriggerRun ($id: ID!) {\n\ttriggerRun(id: $id) {\n\t\t... StackRunBaseFragment\n\t}\n}\nfragment StackRunBaseFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:173a6ff059c298faca0983bed5cd23dd2618146a475ba1b318c6df57571088fe":"mutation DetachCluster ($id: ID!) {\n\tdetachCluster(id: $id) {\n\t\tid\n\t}\n}\n","sha256:18dd5f16f5b5edea59cefc781dd47a75481f7fbf8e82fe78bd0b282bdea8ecb1":"query GetServiceContextTiny ($name: String!) {\n\tserviceContext(name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:19d5a50725b33d0f729cfab39941f60c599fa65fd3b62bc8ccaf516d466d61bd":"mutation DeleteCloudConnection ($id: ID!) {\n\tdeleteCloudConnection(id: $id) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1b46f5f5487d9da23d5fefe4e9c687345d8262c0c56cc51fba038dcb114804fb":"mutation UpdateClusterRegistration ($id: ID!, $attributes: ClusterRegistrationUpdateAttributes!) {\n\tupdateClusterRegistration(id: $id, attributes: $attributes) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:1b8cbf2dcdf2de8865c73a61fa9d6c804e98ab333aa265a4662e88187f1102c8":"query GetServiceTarball ($id: ID!) {\n\tserviceTarball(id: $id) {\n\t\tpath\n\t\tcontent\n\t}\n}\n","sha256:1bda12b2e70df63429dc0f9828860174e95a031e50753a96c7df1d8fbbc31e5f":"mutation CompletesStackRun ($id: ID!, $attributes: StackRunAttributes!) {\n\tcompleteStackRun(id: $id, attributes: $attributes) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:1cefc75c539e6334a815541ea29d5b313d62320a0891add20d37aadcb87e2f86":"mutation UpdateGitRepository ($id: ID!, $attributes: GitAttributes!) {\n\tupdateGitRepository(id: $id, attributes: $attributes) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:1d4359e183ae6b47f7415ab6785626c59d818e2b146ae91e3098c10ef74e4635":"mutation UpdateWorkbenchTool ($id: ID!, $attributes: WorkbenchToolAttributes!) {\n\tupdateWorkbenchTool(id: $id, attributes: $attributes) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1e351c0a49167a35fcecf3cd2357422f8d0d46d815b2cefbe94af6a2eea3e050":"mutation UpsertUser ($attributes: UserAttributes!) {\n\tupsertUser(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1e3e1e2790a3766fa468050e82832991f68555001110778be9611b060369753e":"mutation CreatePipelineContext ($pipelineId: ID!, $attributes: PipelineContextAttributes!) {\n\tcreatePipelineContext(pipelineId: $pipelineId, attributes: $attributes) {\n\t\t... PipelineContextFragment\n\t}\n}\nfragment PipelineContextFragment on PipelineContext {\n\tid\n\tcontext\n}\n","sha256:1f6e3f1f3f3453e925cba533c56cd78e169a56f9276e8795f8aa63576dd56a24":"mutation UpsertUpgradePlanCallout ($attributes: UpgradePlanCalloutAttributes!) {\n\tupsertUpgradePlanCallout(attributes: $attributes) {\n\t\t... UpgradePlanCalloutFragment\n\t}\n}\nfragment UpgradePlanCalloutFragment on UpgradePlanCallout {\n\tid\n\tname\n}\n","sha256:1f6f1a1489995b77678694f2575e16e943eeee4736e05a91dec811f0f15983f3":"mutation CreateFederatedCredential ($attributes: FederatedCredentialAttributes!) {\n\tcreateFederatedCredential(attributes: $attributes) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:1ffea4d7cf10ecfd70c134cdf5bfb7dbeaf6434a6a643a55cff81fd9ebbcec0c":"mutation SaveUpgradeInsights ($insights: [UpgradeInsightAttributes], $addons: [CloudAddonAttributes]) {\n\tsaveUpgradeInsights(insights: $insights, addons: $addons) {\n\t\tid\n\t\tname\n\t\tversion\n\t}\n}\n","sha256:203d28df2014c4b7e9a0b2207cf6ccc8a5ef26fdf3e2601c5a3d62109c6837ea":"query ListStackDefinitions ($after: String, $first: Int, $before: String, $last: Int) {\n\tstackDefinitions(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... StackDefinitionFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:221cb5170a90de1dc482ba3e31377437aa9b15a97c7b8ff3230177b70e08bfe4":"query GetHelmRepositoryTiny ($url: String!) {\n\thelmRepository(url: $url) {\n\t\tid\n\t}\n}\n","sha256:2345924629957866fb322bc4c388a43686af182cbbddf270b0f30f8a3b377dd0":"query GetGlobalServiceDeployment ($id: ID!) {\n\tglobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:23583acdae3cdcc986ffa4a7e1a2b55d5e7a3bde0311c3ec5718bfbbea14f219":"query GetGlobalServiceDeploymentByName ($name: String!) {\n\tglobalService(name: $name) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:23bb559098a8c85f67e0edcbff659daa6e752c76f0892c65d77432d568398bee":"query GetClusterRestore ($id: ID!) {\n\tclusterRestore(id: $id) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:24a3dde607ba5f19327deea354f30f58b8184bcc9d2bbc102fb49b51c5f422b5":"query GetNotificationRouter ($id: ID!) {\n\tnotificationRouter(id: $id) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:25a4c7c811b4dd79d86e145181462499315c7b476c5caaaa60518db1f57f95d9":"mutation SavePipeline ($name: String!, $attributes: PipelineAttributes!) {\n\tsavePipeline(name: $name, attributes: $attributes) {\n\t\t... PipelineFragmentMinimal\n\t}\n}\nfragment PipelineFragmentMinimal on Pipeline {\n\tid\n\tname\n}\n","sha256:2623408de61d79178f6ee987a04e0df092546078b563e89b072b162af6f15ffe":"mutation GetWorkbenchWebhook ($id: ID!) {\n\tgetWorkbenchWebhook(id: $id) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:263be051e9e86e4a69b64064ebf9971db9f14ff4827e881b0a9ea988c3d0870e":"mutation DeleteObservabilityProvider ($id: ID!) {\n\tdeleteObservabilityProvider(id: $id) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:299b1ad1887219aef8605421301e00b36aabb4a1cbd34f3ba1f7c4717612eadf":"mutation DeletePrGovernance ($id: ID!) {\n\tdeletePrGovernance(id: $id) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:29a58c567342ed6668f8af22b9ff8d5ed8c55c74151c93d87accd3827bc39faf":"mutation CreateBootstrapToken ($attributes: BootstrapTokenAttributes!) {\n\tcreateBootstrapToken(attributes: $attributes) {\n\t\t... BootstrapTokenBase\n\t}\n}\nfragment BootstrapTokenBase on BootstrapToken {\n\tid\n\ttoken\n}\n","sha256:2a1fd145f179ee0d1e6ce186d9d3633981ac99bf3752b07c815b1ce2f659c430":"mutation CreateClusterProvider ($attributes: ClusterProviderAttributes!) {\n\tcreateClusterProvider(attributes: $attributes) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:2a9a8fbe23cdfbbf00c854bb4f8332064dff6c8a552ac756b506395bd25100c7":"mutation UpdateClusterProvider ($id: ID!, $attributes: ClusterProviderUpdateAttributes!) {\n\tupdateClusterProvider(id: $id, attributes: $attributes) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:2cfa322ebeb5f421f7cd23fad60e385d43d70b18962d71d0fede0f594cc1b46d":"mutation UpdateSentinel ($id: ID!, $attributes: SentinelAttributes) {\n\tupdateSentinel(id: $id, attributes: $attributes) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:2d79ab2f196f1d63931d3806a4477b92870750014a086d6f2561e55cb6a67af3":"mutation CreateUser ($attributes: UserAttributes!) {\n\tcreateUser(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:2e5118d5c1872f1f474c40362070af9ad131edef31a6fcfa53ffc550957cb86d":"mutation CreateAgentPullRequest ($runId: ID!, $attributes: AgentPullRequestAttributes!) {\n\tagentPullRequest(runId: $runId, attributes: $attributes) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:2e5a060183ca0f115ca2fd5c98f051bd8f260fa00902992c20ad8fcf46523699":"query GetFederatedCredentialTiny ($id: ID!) {\n\tfederatedCredential(id: $id) {\n\t\tid\n\t}\n}\n","sha256:2ed4e4848a2483a8d60683df43dcf2668484b6af513db89072d7b9163cb91e40":"mutation UpdateNamespace ($id: ID!, $attributes: ManagedNamespaceAttributes!) {\n\tupdateManagedNamespace(id: $id, attributes: $attributes) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:2f962b9a1cf08b3ac5eb37f0935bf9fb9553825da92e773f0198f564812ddcca":"query GetClusterGate ($id: ID!) {\n\tclusterGate(id: $id) {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:2fb0280705bd95774e0830e6b69482a17a4bdea51b60aae031c878e7622bfb31":"query ListAccessTokens ($cursor: String, $before: String, $last: Int) {\n\taccessTokens(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AccessTokenFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:3153ef98895d30c2c6f51cf864b6461c951e4385c408e4736ab5c85909c55967":"query GetWorkbenchTool ($id: ID, $name: String) {\n\tworkbenchTool(id: $id, name: $name) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:31c87507e58e544b9660476a49191db9bb682a97098db47b0a24f6ab6b7c7099":"mutation DeleteWorkbenchPrompt ($id: ID!) {\n\tdeleteWorkbenchPrompt(id: $id) {\n\t\tid\n\t}\n}\n","sha256:3328865733a3222c979c5635979280018cbe8a54f6eea8f28e32314b39c6a6a6":"mutation UpdateStackDefinition ($id: ID!, $attributes: StackDefinitionAttributes!) {\n\tupdateStackDefinition(id: $id, attributes: $attributes) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:344d00a3e2e6e10a36de6867db2b9deba25bdebc3547c897fe6f2548738724a7":"query GetStackDefinitionTiny ($id: ID!) {\n\tstackDefinition(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:3557f778cd80f66482868b2bc6d0df507b4a2eb9cc6249877b001bdcc2c2c455":"mutation CreateSentinel ($attributes: SentinelAttributes) {\n\tcreateSentinel(attributes: $attributes) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:3617cd964a5282e8fbdbbb88a2dfddc82c9392725b259d6db7e10b87adb28e91":"mutation SaveServiceContext ($name: String!, $attributes: ServiceContextAttributes!) {\n\tsaveServiceContext(name: $name, attributes: $attributes) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:3642d7afaa157713cb448c26f4f3362a53ba61ba9f368233782e709637054dbe":"mutation DeletePrAutomation ($id: ID!) {\n\tdeletePrAutomation(id: $id) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:368c82946025827b9e5a282df168753546a94ae38c4eba8077c45f32ae92ab54":"mutation DeleteObserver ($id: ID!) {\n\tdeleteObserver(id: $id) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:36fea2d78373476143b536962a73f6b9eca5fdef00b5415ab69e1ab830908756":"mutation CreateStackDefinition ($attributes: StackDefinitionAttributes!) {\n\tcreateStackDefinition(attributes: $attributes) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:3715c332fc325a323b5c2baf5a93b97960d05d5a84c4480a8bec3ae6d2e2b3ba":"query GetBindingPolicyTiny ($id: ID!) {\n\tbindingPolicy(id: $id) {\n\t\tid\n\t}\n}\n","sha256:375a7c2c38b8646e8df33e517981225183365bcadcc689195c122f3d4ab5864c":"mutation UpdateGlobalServiceDeployment ($id: ID!, $attributes: GlobalServiceAttributes!) {\n\tupdateGlobalService(id: $id, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:376451d410f05aa32972a4ecfe1e4e9efab9bcd12428dfcee693eacfbe653ae9":"mutation CreateServiceDeploymentWithHandle ($cluster: String!, $attributes: ServiceDeploymentAttributes!) {\n\tcreateServiceDeployment(cluster: $cluster, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:37a8038a21b33330a0321ceaa792807a8a959323c31d52b87f71cd557f5e8529":"query MyCluster {\n\tmyCluster {\n\t\t... {\n\t\t\tid\n\t\t\tname\n\t\t\tdistro\n\t\t\tsupportedAddons\n\t\t\trestore {\n\t\t\t\t... ClusterRestoreFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:383f1a8e3b789b58df1c1b5e1de4ada6be3b0ef5e3cd24f6a79109ff2a6ef6ec":"mutation DeleteAccessToken ($token: String!) {\n\tdeleteAccessToken(token: $token) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:38cf2b80e79145a83cf653ef5dd530c09492427bbc5c2f2b2b00a99f63081a6d":"mutation DeleteServiceDeployment ($id: ID!) {\n\tdeleteServiceDeployment(id: $id) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:39189795df275ba5770b0f0fdc2167fef15a2ef105f13bb69b95d1e3d75ef749":"mutation UpsertVirtualCluster ($parentID: ID!, $attributes: ClusterAttributes!) {\n\tupsertVirtualCluster(parentId: $parentID, attributes: $attributes) {\n\t\tdeployToken\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:391a0d44f56daaa9236742e4c686aed180e197f9d2e8fe4fd007d58e3fb89d14":"query GetPersona ($id: ID!) {\n\tpersona(id: $id) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:395be562633ea07aa14a2848d97c2662d5a27f2bc3b0306ff8fb328b80c35562":"query ListObservabilityProviders ($after: String, $first: Int, $before: String, $last: Int) {\n\tobservabilityProviders(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ObservabilityProviderFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:3a5b26fabfbcb1813210e97107878f8cf880da4efec00b5d807733890b99c663":"mutation UpdateDeploymentSettings ($attributes: DeploymentSettingsAttributes!) {\n\tupdateDeploymentSettings(attributes: $attributes) {\n\t\t... DeploymentSettingsFragment\n\t}\n}\nfragment DeploymentSettingsFragment on DeploymentSettings {\n\tid\n\tname\n\tagentHelmValues\n\tagentHelmValuesTemplateable\n\tagentVsn\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tartifactRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tdeployerRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tai {\n\t\t... AISettingsFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment AISettingsFragment on AiSettings {\n\tenabled\n\tprovider\n\topenai {\n\t\tmodel\n\t}\n\tanthropic {\n\t\tmodel\n\t}\n}\n","sha256:3c3311c918109c032947b1352a1b4229f13ac85fc9e6ae86c4feda508041cde9":"mutation CreateAgentRunUpload ($runId: ID!, $session: Upload, $screenRecording: Upload, $patch: Upload) {\n\tcreateAgentRunUpload(runId: $runId, attributes: {session:$session,screenRecording:$screenRecording,patch:$patch}) {\n\t\t... AgentRunUploadFragment\n\t}\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:3c447e070c14ecaac431c794c559ba5fa606bc15df98c00bcc81e24809315a4f":"mutation DeleteCustomStackRun ($id: ID!) {\n\tdeleteCustomStackRun(id: $id) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:3cbfaefd04ec40ea1887c27ae44dbbfd5bb148938afe070745b9f35951a4b791":"mutation UpsertCloudConnection ($attributes: CloudConnectionAttributes!) {\n\tupsertCloudConnection(attributes: $attributes) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:3d79eb2a713ca289a10f7515c20da885c422f3c2220a76d6d505e681d8021237":"mutation CreateGitRepository ($attributes: GitAttributes!) {\n\tcreateGitRepository(attributes: $attributes) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:3e27a6a17cfbb6f6db0ee7472736f01ea3fc36b07c7654011e2f40c4f5405e75":"query GetSentinelTiny ($id: ID!) {\n\tsentinel(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:3f077b2e9c8019b17de56676404222eb2dceb3f3cb76f6f40bccf9086217553b":"query GetDeploymentSettings {\n\tdeploymentSettings {\n\t\t... DeploymentSettingsFragment\n\t}\n}\nfragment DeploymentSettingsFragment on DeploymentSettings {\n\tid\n\tname\n\tagentHelmValues\n\tagentHelmValuesTemplateable\n\tagentVsn\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tartifactRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tdeployerRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tai {\n\t\t... AISettingsFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment AISettingsFragment on AiSettings {\n\tenabled\n\tprovider\n\topenai {\n\t\tmodel\n\t}\n\tanthropic {\n\t\tmodel\n\t}\n}\n","sha256:4098e8f5d7c1242768a4330163d671ffefb47a68245a8035f1347543f7c4254d":"mutation UpdateBindingPolicy ($id: ID!, $attributes: BindingPolicyUpdateAttributes!) {\n\tupdateBindingPolicy(id: $id, attributes: $attributes) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:413142a1e1214ce0d2a445a9d9912d4b098d01e69aa9d6a35c619c0d05a8a7ed":"mutation CreateWorkbench ($attributes: WorkbenchAttributes!) {\n\tcreateWorkbench(attributes: $attributes) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:41e4f03ed32b05e32866db167f922d8092eef5aad38075b2245827da5d9ad23c":"query GetCatalogTiny ($id: ID, $name: String) {\n\tcatalog(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:42bc0bd98144dabaac9fef4c5455c391a5deb4b9a594273884aa88c59778dd9e":"query GetComplianceReportGenerator ($id: ID, $name: String) {\n\tcomplianceReportGenerator(id: $id, name: $name) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4356bc0c1808c4f31a7a47247affbdc702e039c898d4fa26a650774b3c9f8338":"query GetAgentRunTodos ($id: ID!) {\n\tagentRun(id: $id) {\n\t\ttodos {\n\t\t\t... AgentTodoFragment\n\t\t}\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:45177eb025b2c2716b361dcca23690272398564a94ba297e06014bcb247068eb":"query GetAgentRun ($id: ID!) {\n\tagentRun(id: $id) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:45568860a37d05e3d18ecb976ee1f222aed9a5e7a9c0fa7150c1251c9ef61fae":"mutation UpdateGlobalService ($id: ID!, $attributes: GlobalServiceAttributes!) {\n\tupdateGlobalService(id: $id, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:45b1488b1732a010d79649d4a39feb42ce81a6842f62fa9f9c801df10136e3f8":"mutation UpsertObservabilityProvider ($attributes: ObservabilityProviderAttributes!) {\n\tupsertObservabilityProvider(attributes: $attributes) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:45c1ed4b2d99d030559403440ac39f886badb154fcfd4f10e301ea0a056ab824":"query GetPipelineContext ($id: ID!) {\n\tpipelineContext(id: $id) {\n\t\t... PipelineContextFragment\n\t}\n}\nfragment PipelineContextFragment on PipelineContext {\n\tid\n\tcontext\n}\n","sha256:46566d1616e7e91db2d6216bad8fe25d3985df875d9c85d06ecc1d6a9ff761d4":"mutation UpsertNotificationRouter ($attributes: NotificationRouterAttributes!) {\n\tupsertNotificationRouter(attributes: $attributes) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4664a72f360d14d57f6c374965d8d12a4795cbca5c8af739d02349214a90e3c5":"query GetScmWebhook ($id: ID, $externalId: String) {\n\tscmWebhook(id: $id, externalId: $externalId) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:4694b939a2c331cca99be014be0d45dd8756b9cfc8a2f7fed2fb0b2ae2b2b176":"query Me {\n\tme {\n\t\tid\n\t\temail\n\t\tname\n\t}\n}\n","sha256:46c0244b8b182a0be59a3619a9147a3686d4894a5403b47f4758ec7456437bbd":"query GetClusterIsoImage ($id: ID, $image: String) {\n\tclusterIsoImage(id: $id, image: $image) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:4700694be9716b23c92b557c584739bdc4f7a86d0106842f5ade8d21da402adb":"mutation EnqueueWorkbenchPrFollowup ($url: String!, $attributes: QueuedPromptAttributes!) {\n\tenqueueWorkbenchPrFollowup(url: $url, attributes: $attributes) {\n\t\t... QueuedPromptFragment\n\t\tworkbenchJob {\n\t\t\tid\n\t\t\turl\n\t\t}\n\t}\n}\nfragment QueuedPromptFragment on QueuedPrompt {\n\tid\n\tprompt\n\tdequeableAt\n\tworkbenchJob {\n\t\tid\n\t}\n\tuser {\n\t\tid\n\t}\n}\n","sha256:47dc4b6bd1139a41dc445fb76faeb339207d650f0b1b9b6991e56dbc37777de6":"query GetClusterByHandle ($handle: String) {\n\tcluster(handle: $handle) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4889a49b7bc53288977c1d827c7e540ef407641fd1b37faf467ad3aa1fae20eb":"query ListInfrastructureStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tinfrastructureStacks(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... InfrastructureStackEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment InfrastructureStackEdgeFragment on InfrastructureStackEdge {\n\tnode {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:4a0f99c5c1ed02f2c004bf4676a192e75731634bfe4e37218dd6a34a1c95b326":"query ServiceAccounts ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tserviceAccounts(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... UserFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4bb4613ac3d087f679e786b1d6a491b02d4333ca215fbdfc7233b43ab02d9f66":"query GetStackRunMinimal ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunMinimalFragment\n\t}\n}\nfragment StackRunMinimalFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\n","sha256:4bc390a223f5151c820474b4ec055094ecbbc7fb3894f9f48baa6b612ce62161":"query GetAgentRuntime ($id: ID!) {\n\tagentRuntime(id: $id) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4beb4e8b7b5844428fa204b98d19c00119ab761ba14a33d1e40e1cdebdc2365a":"mutation UpdateStackRun ($id: ID!, $attributes: StackRunAttributes!) {\n\tupdateStackRun(id: $id, attributes: $attributes) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:4cb5452060ebdbaa1e8effa76d240b91af5cfe5e2fcc8780fa6607c298fa725d":"mutation WorkbenchPrFollowup ($url: String!, $attributes: WorkbenchMessageAttributes!) {\n\tworkbenchPrFollowup(url: $url, attributes: $attributes) {\n\t\tid\n\t\tprompt\n\t\ttype\n\t\tstatus\n\t}\n}\n","sha256:4ccc84b66170761dbc355854fbe36f2ad7914720d9026128e860a2ca679caa4b":"mutation AddStackRunLogs ($id: ID!, $attributes: RunLogAttributes!) {\n\taddRunLogs(stepId: $id, attributes: $attributes) {\n\t\tupdatedAt\n\t}\n}\n","sha256:4d391c1b966bca6a1f7392320cb12a42bb9d76c0ea06b9aee89eba25db04b08b":"mutation CreateScmWebhook ($connectionId: ID!, $owner: String!) {\n\tcreateScmWebhook(connectionId: $connectionId, owner: $owner) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:4e817a16d60e0674f5530ba1e1249840f369e23853ca214d13863f299b8f7d0e":"query GetNotificationSink ($id: ID!) {\n\tnotificationSink(id: $id) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4e9ae0595f3f41aeefd121080484f583351451a9ed9c4a2ac21d24b375d5ae8e":"mutation UpsertComplianceReportGenerator ($attributes: ComplianceReportGeneratorAttributes!) {\n\tupsertComplianceReportGenerator(attributes: $attributes) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:50da97f82323246c4aec944e818a055833aabfcf3e4be9d67e061fe7776ae0df":"mutation UpdateServiceDeploymentWithHandle ($cluster: String!, $name: String!, $attributes: ServiceUpdateAttributes!) {\n\tupdateServiceDeployment(cluster: $cluster, name: $name, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:51ef8948450e9b14889936618653d431bd618dcbf0f0883aae0c4fb6d537be4a":"mutation UpdatePersona ($id: ID!, $attributes: PersonaAttributes!) {\n\tupdatePersona(id: $id, attributes: $attributes) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:527aebd2d9c8f2c1e9f845c3ab24baf3fdd536ce86a0206e14ec3b05132b3913":"mutation CreateAgentMessage ($runId: ID!, $attributes: AgentMessageAttributes!) {\n\tcreateAgentMessage(runId: $runId, attributes: $attributes) {\n\t\tid\n\t\tmessage\n\t}\n}\n","sha256:54910ed76d4c42ee7339454901466a271af34936ab345c88fb03ee4bdb763a3a":"query ListClustersWithParameters ($after: String, $first: Int, $before: String, $last: Int, $projectId: ID, $tagQuery: TagQuery) {\n\tclusters(after: $after, first: $first, before: $before, last: $last, projectId: $projectId, tagQuery: $tagQuery) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ClusterEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ClusterEdgeFragment on ClusterEdge {\n\tnode {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:54f9977d5571d11d430f63e03d6208e3a305b0e2bc32a06a1ebbebf6b4522fa3":"mutation DeletePreviewEnvironmentTemplate ($id: ID!) {\n\tdeletePreviewEnvironmentTemplate(id: $id) {\n\t\tid\n\t}\n}\n","sha256:5525b1c9bf332e1fc609b70c671ecb9ba088933b87b249f40fa1827d7db494f9":"mutation CreateClusterIsoImage ($attributes: ClusterIsoImageAttributes!) {\n\tcreateClusterIsoImage(attributes: $attributes) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:556a981320a385d7d9776830051cbf6d2127e4e538b57d3d28d1473aad5dfd33":"mutation DeleteOIDCProvider ($id: ID!, $type: OidcProviderType!) {\n\tdeleteOidcProvider(id: $id, type: $type) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:56607343e0225629d380152b80a6aeaa8d46a2a306400b6c3f4e396595d33c33":"mutation CreateNamespace ($attributes: ManagedNamespaceAttributes!) {\n\tcreateManagedNamespace(attributes: $attributes) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:573648a4bd455ab3047a5627bd4188286785ec9d36d9a4a69d525c9999a7ead4":"mutation DeleteFederatedCredential ($id: ID!) {\n\tdeleteFederatedCredential(id: $id) {\n\t\tid\n\t}\n}\n","sha256:57790a6caa298edfdbc1f311bcb963189e1b8a519753c8029225bbc6a9d497ef":"query GetPolicy ($id: ID, $name: String) {\n\tpolicy(id: $id, name: $name) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:580fca816c2a2b2d59eb97ad4f2569218ef0685d0e724a2e0e5de4230db5aa93":"query ListGitRepositories ($cursor: String, $before: String, $last: Int) {\n\tgitRepositories(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\t... GitRepositoryEdgeFragment\n\t\t}\n\t}\n}\nfragment GitRepositoryEdgeFragment on GitRepositoryEdge {\n\tnode {\n\t\t... GitRepositoryFragment\n\t}\n\tcursor\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:5893cd09a5fbd29b0b6ce255f5e5d50e08ff164d1da91525a124b44619b58d59":"mutation CreateWorkbenchPrompt ($workbenchId: ID!, $attributes: WorkbenchPromptAttributes!) {\n\tcreateWorkbenchPrompt(workbenchId: $workbenchId, attributes: $attributes) {\n\t\tid\n\t}\n}\n","sha256:58ea9b0116be68d9f4da2ac8110d93fde21e86df23bb1ef89b982e5a16aa11ed":"mutation UpdateClusterIsoImage ($id: ID!, $attributes: ClusterIsoImageAttributes!) {\n\tupdateClusterIsoImage(id: $id, attributes: $attributes) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:594c9c271560981bef35235a0b0e29463631416f6dbf2aab24d2efb5f5395ba7":"query GetBindingPolicy ($id: ID!) {\n\tbindingPolicy(id: $id) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:594cb032bccdf14d2cae9ade9f52b20d4b56e9ab6630e299927ee9d2c9801fa5":"mutation CreateWorkbenchCron ($workbenchId: ID!, $attributes: WorkbenchCronAttributes!) {\n\tcreateWorkbenchCron(workbenchId: $workbenchId, attributes: $attributes) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:5abc2071d4557f9edd21dfc6472a9473d4b1b267eb0c3e3b8437ee1eca0e91cb":"mutation ShareSecret ($attributes: SharedSecretAttributes!) {\n\tshareSecret(attributes: $attributes) {\n\t\tname\n\t\thandle\n\t\tsecret\n\t\tinsertedAt\n\t\tupdatedAt\n\t}\n}\n","sha256:5b27782cd5302beb56aec90bd5e986f67aea75a37582b480e0860ac9242293a0":"query GetIssueWebhook ($id: ID, $name: String) {\n\tissueWebhook(id: $id, name: $name) {\n\t\t... IssueWebhookFragment\n\t}\n}\nfragment IssueWebhookFragment on IssueWebhook {\n\tid\n\tname\n\tprovider\n}\n","sha256:5baa034c528aa2f193811366642087e0b6c75c88fe1a8c5c22bc06ee75d02427":"mutation DeleteServiceContext ($id: ID!) {\n\tdeleteServiceContext(id: $id) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:5e4949060ce8bce3c89357a76aa82dcd88350b1965a30113a6eeeda2c424aa8d":"query ListNotificationSinks ($after: String, $first: Int, $before: String, $last: Int) {\n\tnotificationSinks(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... NotificationSinkEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment NotificationSinkEdgeFragment on NotificationSinkEdge {\n\tcursor\n\tnode {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:5e544cd179164a2409b455e448b0eed324f40742a26522fb344a1e997d2a3c80":"mutation DeleteObservabilityWebhook ($id: ID!) {\n\tdeleteObservabilityWebhook(id: $id) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:5e94440e7b15f517f56955063550fd90e284a59c002e9121b8df3a45660c99fc":"query GetHelmRepository ($url: String!) {\n\thelmRepository(url: $url) {\n\t\t... HelmRepositoryFragment\n\t}\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:60bb829fc0d5411b67d8e260b204b0c3118d75c022ffd368f18f7f9edc85bc5f":"query GetClusterProvider ($id: ID!) {\n\tclusterProvider(id: $id) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:60de6586577e9cb81f7c41bcf3482947a47f5da53ca1e658ea5a5764d6343aac":"mutation CreateScmWebhookPointer ($attributes: ScmWebhookAttributes!) {\n\tcreateScmWebhookPointer(attributes: $attributes) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:61ccd6c95eca788ecfe7ffe54fdf2bdb203432adc5790785ef82deadce19f219":"mutation DeletePersona ($id: ID!) {\n\tdeletePersona(id: $id) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:633dba4e06a7c190478b1c6d65302b9715ecbe84bc5f5bf1534286fc064c39fe":"query GetStackRunBase ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunBaseFragment\n\t}\n}\nfragment StackRunBaseFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:6374f2075fc651ba96385d190f73e93a949d38a302c3a520b9aa7b48e14986d2":"mutation DeleteClusterRegistration ($id: ID!) {\n\tdeleteClusterRegistration(id: $id) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:653bd2dca1e546786b5564738f50ef09c21243d55f0a8ff6af6613af43a6839d":"query ListClusterSentinelRunJobs ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterSentinelRunJobs(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... SentinelRunJobFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:663074674ca5e1837c9a836c9ca87d011e3b82c7aee97c307816f923807f1403":"mutation CancelAgentRun ($id: ID!) {\n\tcancelAgentRun(id: $id) {\n\t\tid\n\t}\n}\n","sha256:672a471c01d8cea255bc474ee2c2b4b0bf19071e5c4cac93dd3d60de6af33c3a":"query ListBindingPolicies ($after: String, $first: Int, $before: String, $last: Int) {\n\tbindingPolicies(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... BindingPolicyFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:676c685a9306b2973a2921f6f0158ec0e4785aced9987122ea6ef490c93ecfb4":"mutation UpdateWorkbenchCron ($id: ID!, $attributes: WorkbenchCronAttributes!) {\n\tupdateWorkbenchCron(id: $id, attributes: $attributes) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:68d98b7ac666f84eeb85897ef3519a78ecf00304af9b78e9ae3b4c25532a4982":"mutation DeleteStackDefinition ($id: ID!) {\n\tdeleteStackDefinition(id: $id) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:68fac5688e28798e6adbf158c70679ee2e327893121a12db46a02362ac47b68c":"mutation UpdateUser ($id: ID, $attributes: UserAttributes!) {\n\tupdateUser(id: $id, attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:6c6860b13a9d0aaacfd7eb47b2c1a993768f0389f5fbe197efa64971d2e232df":"query ListHelmRepositories ($after: String, $first: Int, $before: String, $last: Int) {\n\thelmRepositories(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... HelmRepositoryFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:6cfac09e011997d8e43d520ffb21c7f2742981c3a59ba78e9274cfc750f3a991":"query ListScmWebhooks ($after: String, $before: String, $first: Int, $last: Int) {\n\tscmWebhooks(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ScmWebhookFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:6fb3a6d7b695c4168b976dedfcf9a53c6ab7783770a26d4f25fa705153dae6f0":"mutation RegisterRuntimeServices ($services: [RuntimeServiceAttributes], $layout: OperationalLayoutAttributes, $deprecated: [DeprecatedCustomResourceAttributes], $serviceId: ID) {\n\tregisterRuntimeServices(services: $services, layout: $layout, deprecated: $deprecated, serviceId: $serviceId)\n}\n","sha256:6fcb5448dc8bc96c565dab0bf002bb9bcb82ad8785717de59ad14a80e4d4e178":"query GetScmConnectionByName ($name: String!) {\n\tscmConnection(name: $name) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:6fe58e154caaddb59485ac72d26e0ffee5fb864c6e1a45b31b90082830872995":"mutation DetachServiceDeployment ($id: ID!) {\n\tdetachServiceDeployment(id: $id) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:6fec0d284e2f2884e65a4de72ee9ed2673b92adfc0b19e73d970364aa3410d79":"mutation CreateCluster ($attributes: ClusterAttributes!) {\n\tcreateCluster(attributes: $attributes) {\n\t\tdeployToken\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:7022709816c360b28f659e86985f545a415f48e96b2f30ef866ea3ae97f39fa9":"query GetClusterBackup ($id: ID, $clusterId: ID, $namespace: String, $name: String) {\n\tclusterBackup(id: $id, clusterId: $clusterId, namespace: $namespace, name: $name) {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:705e50fb64758842c60cce987d7ab0eb08cf21df44eaf506ee141324260481bb":"query GetAgentRunMinimal ($id: ID!) {\n\tagentRun(id: $id) {\n\t\t... AgentRunMinimalFragment\n\t}\n}\nfragment AgentRunMinimalFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\truntime {\n\t\ttype\n\t}\n\tpullRequests {\n\t\tid\n\t\tstatus\n\t\turl\n\t\ttitle\n\t\tref\n\t}\n\tupload {\n\t\tsession\n\t\tpatch\n\t\tscreenRecording\n\t}\n}\n","sha256:70dd24813b99b33f0bd76a916a653bd40aefb7b4d1f950c1c6cfb349f5e064c7":"mutation DeleteCatalog ($id: ID!) {\n\tdeleteCatalog(id: $id) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:71211688078517de55856c131211f78a9b5f707fc2c3857726fd59a81123b2b9":"query GetWorkbenchToolTiny ($id: ID, $name: String) {\n\tworkbenchTool(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:75340df6d83e5cb03878a6914da84328432f6879320e6083d0cf6fd1ba1e0a35":"mutation RollbackService ($id: ID!, $revisionId: ID!) {\n\trollbackService(id: $id, revisionId: $revisionId) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:782b1bd26714e00f7908991d5ed8af1beee25bbdb038e0885378d17a277b1929":"query GetClusterProviderByCloud ($cloud: String!) {\n\tclusterProvider(cloud: $cloud) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:78dbebdbef637a8412788971739ba9931f0eae3ae63eb7b0d0d75902620521fc":"query GetCustomStackRun ($id: ID!) {\n\tcustomStackRun(id: $id) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:7a35b4446780f4560edd416760772e7f4d9bd8193e64e39d945a0ca57e6d5799":"mutation UpdateAgentMessage ($id: ID!, $attributes: AgentMessageAttributes!) {\n\tupdateAgentMessage(id: $id, attributes: $attributes) {\n\t\tid\n\t\tmessage\n\t}\n}\n","sha256:7a526118f0ec20a508e94f419446156ab87b99bd9ff5700c13cf8612f6e8be8d":"query GetObserver ($id: ID, $name: String) {\n\tobserver(id: $id, name: $name) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:7bb99a71a060105e0369bd65dfbef40cfaefd3bf24f3a20be6bba8ebe0f5d151":"query ListPolicies ($after: String, $first: Int, $before: String, $last: Int, $projectId: ID, $q: String) {\n\tpolicies(after: $after, first: $first, before: $before, last: $last, projectId: $projectId, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... PolicyFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:7bf259965e095c6f562ceabf64b53c96f2af8c279f8f585ae46150d432e15177":"mutation DeleteAgentRuntime ($id: ID!) {\n\tdeleteAgentRuntime(id: $id) {\n\t\tid\n\t}\n}\n","sha256:7c28e35a508edb6910ec148143db545bf6ceae2d3f89d99dd12108d55cbace2e":"query ListProviders {\n\tclusterProviders(first: 100) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ClusterProviderFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:7d305588dda783d061b91186810d26c83dc96ce88ca6eadd3dc0aeb8e5c2b1e9":"query GetObservabilityWebhook ($id: ID, $name: String) {\n\tobservabilityWebhook(id: $id, name: $name) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:7e2b1754c1a0096773632c812c86d3e0e73c8bd0ff4e4de4e783b3afc545c212":"query GetTinyCluster ($id: ID) {\n\tcluster(id: $id) {\n\t\t... TinyClusterFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:7fc3c4c26cd7f027d90210964398854eebe7e5ce7bb518f4c8839505a4b4fcb3":"mutation AddGroupMember ($groupId: ID!, $userId: ID!) {\n\tcreateGroupMember(groupId: $groupId, userId: $userId) {\n\t\t... GroupMemberFragment\n\t}\n}\nfragment GroupMemberFragment on GroupMember {\n\tid\n\tuser {\n\t\tid\n\t}\n\tgroup {\n\t\tid\n\t}\n}\n","sha256:806453fdd48b0a0eae70fc366b758b34c1fb7290ff39b393794e5181fe7664ae":"query GetGitRepositoryID ($url: String) {\n\tgitRepository(url: $url) {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:808ebe4bf5034aa84eae9f40e3b4046bd9d0961b9c6c15acc96c29a5c2ba961b":"mutation CreateGlobalService ($attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:812b636e5bfc0c485832996d9aed1a5826dc9a1d48e1b65ff68774f2c97e89c9":"query ListClusterServices {\n\tclusterServices {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:825ebd6ac166846c04631143991b97b8170a7a9d266ebb1c9331a9976a20d30f":"query GetClusterGates {\n\tclusterGates {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:82a9426820e1787f567e38edbce7759b05900a1ec3721d17f883dd62ebc6642c":"query GetPrAutomation ($id: ID!) {\n\tprAutomation(id: $id) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:836475a72bf4f3ebb0e1fcd945018865862b53cb7616f62ba213c2fd5fe69d05":"query ListViolationStatistics ($field: ConstraintViolationField!) {\n\tviolationStatistics(field: $field) {\n\t\t... ViolationStatisticFragment\n\t}\n}\nfragment ViolationStatisticFragment on ViolationStatistic {\n\tvalue\n\tviolations\n\tcount\n}\n","sha256:83b4333debfd340763ef190910485c333c6dd49d47110057df60be57da770157":"mutation DeleteNotificationRouter ($id: ID!) {\n\tdeleteNotificationRouter(id: $id) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:843362e6b99d63d6a55e850db9f69b9b09f86278c3eb97dca4f720100546283d":"query GetMCPServer ($id: ID!) {\n\tmcpServer(id: $id) {\n\t\t... MCPServerFragment\n\t}\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:851d296b63f9c0c937e82a454781e76d918b708a27c3e264069902f71eff5d6d":"mutation CreateStack ($attributes: StackAttributes!) {\n\tcreateStack(attributes: $attributes) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:857bac887a978a2ac4f093331e7384dfb57425924b0a1bd5a09ffa9e04844819":"mutation UpdateOIDCProvider ($id: ID!, $type: OidcProviderType!, $attributes: OidcProviderAttributes!) {\n\tupdateOidcProvider(id: $id, type: $type, attributes: $attributes) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:85df9e68d83e11a9f9321348538306287166a75d4ab75ab2b48855e80d8b39d2":"mutation DeleteBootstrapToken ($id: ID!) {\n\tdeleteBootstrapToken(id: $id) {\n\t\tid\n\t}\n}\n","sha256:8670eabfee3682802dbfd5c68f5e72b37119ec31e909f425655206ed9d5a18ec":"mutation UpdateFederatedCredential ($id: ID!, $attributes: FederatedCredentialAttributes!) {\n\tupdateFederatedCredential(id: $id, attributes: $attributes) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:86eb778bec88542b242c634b49a9073f61d1a6ea3c569519f7ac3281203bdf6f":"mutation DeleteBindingPolicy ($id: ID!) {\n\tdeleteBindingPolicy(id: $id) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:891cd1d4fbd8a953702cf2564d83f04e8bc76746d689988b9200ec64b2553336":"mutation RunSentinel ($id: ID!, $overrides: SentinelRunOverrides) {\n\trunSentinel(id: $id, overrides: $overrides) {\n\t\t... SentinelRunFragment\n\t}\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:897d62511eba988b849bd933c4ecb4586c6cf041aa66da4bc33967b3304da588":"mutation DeleteProject ($id: ID!) {\n\tdeleteProject(id: $id) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:8c0caea577e1915120cdd7b5231a7f1a58eb0c339d1aaf024f8aa120902a7442":"mutation CreateClusterBackup ($attributes: BackupAttributes!) {\n\tcreateClusterBackup(attributes: $attributes) {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:8c44743ad7a874271ddb162b00027395262b0ac38d0322a4f09afe48f5c442e2":"mutation UpdateAgentRunAnalysis ($id: ID!, $attributes: AgentAnalysisAttributes!) {\n\tupdateAgentRunAnalysis(id: $id, attributes: $attributes) {\n\t\t... AgentRunBaseFragment\n\t}\n}\nfragment AgentRunBaseFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tmode\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:8ca4f731dfc18a56ba661dcbba9c673f55aee501b263dbf655e67788eefec1eb":"query ListClusterMinimalStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... MinimalStackRunEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment MinimalStackRunEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunMinimalFragment\n\t}\n}\nfragment StackRunMinimalFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\n","sha256:8d30669f0383e625d9b639af9cf66ccdb9458850496a8cbf656780348b7c7766":"mutation UpdateWorkbenchWebhook ($id: ID!, $attributes: WorkbenchWebhookAttributes!) {\n\tupdateWorkbenchWebhook(id: $id, attributes: $attributes) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:8d31d95b1fa3ae035864ae7aab5e31a31347f5c3a9654ea25237813800fb2c6c":"query GetSentinel ($id: ID!) {\n\tsentinel(id: $id) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:8e8fd8e272f046273e47c808d99bd0dd91b158e3c23175488c07482dc99b3a2b":"mutation UpsertNotificationSink ($attributes: NotificationSinkAttributes!) {\n\tupsertNotificationSink(attributes: $attributes) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:8f12d8cad53529ad1067b2ad72f6dc4ca662168c0268c3bbc027db8f662ef925":"query GetAgentUrl ($id: ID!) {\n\tcluster(id: $id) {\n\t\tagentUrl\n\t}\n}\n","sha256:8fa6f7a3f1ca23ce9e7d886bb84c023f4be92f923d057ce7bd97e95a41e541a0":"query GetDeploymentSettingsMinimal {\n\tdeploymentSettings {\n\t\t... DeploymentSettingsMinimalFragment\n\t}\n}\nfragment DeploymentSettingsMinimalFragment on DeploymentSettings {\n\tagentHelmValues\n\tagentVsn\n}\n","sha256:901e2e68afb969b6cc521cb1f1f3e0d134e6f0f11b9f24dcb288b95cc2a6e39e":"mutation CreateServiceAccount ($attributes: ServiceAccountAttributes!) {\n\tcreateServiceAccount(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:90314a4b07d2a45508cf458997cf53a19dd5eb958764462f71e43f062128f3db":"query GetMCPServers ($q: String, $first: Int, $after: String, $before: String, $last: Int) {\n\tmcpServers(q: $q, first: $first, after: $after, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... MCPServerFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:910b361b6f8a5a95c6ddfd9d86bbeba38445e6242537e44f8a71f1294a098d31":"mutation UpsertVulnerabilities ($vulnerabilities: [VulnerabilityReportAttributes]) {\n\tupsertVulnerabilities(vulnerabilities: $vulnerabilities)\n}\n","sha256:91104bc566948580b79bda2fc4bf5cac926cf9bf185468a2e32653a9aaef8292":"mutation UpdateCluster ($id: ID!, $attributes: ClusterUpdateAttributes!) {\n\tupdateCluster(id: $id, attributes: $attributes) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9189c9e78cd7eb57a9e67c9b09905683e01f2864e5e49516cac6beeaae44ce28":"query ListObservabilityWebhooks ($after: String, $before: String, $first: Int, $last: Int) {\n\tobservabilityWebhooks(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ObservabilityWebhookFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:921369b1661c3b6001335e7a580e5d3b9e04a2792231cde13dc7b98159790d97":"mutation UpdatePrAutomation ($id: ID!, $attributes: PrAutomationAttributes!) {\n\tupdatePrAutomation(id: $id, attributes: $attributes) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:929cc36181b7f6e09352f8e2776a66a3876c5fdd3ce60ab2637ac4dad4340cc0":"query PagedClusterServicesForAgent ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragmentForAgent\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentEdgeFragmentForAgent on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentForAgent\n\t}\n}\nfragment ServiceDeploymentForAgent on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\ttarball\n\tdeletedAt\n\tdryRun\n\ttemplated\n\tsha\n\tstatus\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tself\n\t\tversion\n\t\tpingedAt\n\t\tmetadata\n\t\ttags {\n\t\t\t... ClusterTags\n\t\t}\n\t\tcurrentVersion\n\t\tkasUrl\n\t\tdistro\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\thelm {\n\t\trelease\n\t\tvaluesFiles\n\t\tvalues\n\t\tignoreHooks\n\t\tignoreCrds\n\t\tluaScript\n\t\tluaFile\n\t\tluaFolder\n\t\tpythonScript\n\t\tpythonFile\n\t\tpythonFolder\n\t\tkustomizePostrender\n\t}\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tcontexts {\n\t\tname\n\t\tconfiguration\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tdeleteNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\trevision {\n\t\tid\n\t}\n\timports {\n\t\tid\n\t\tstack {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\toutputs {\n\t\t\tname\n\t\t\tvalue\n\t\t\tsecret\n\t\t}\n\t}\n\trenderers {\n\t\t... RendererFragment\n\t}\n\tdependencies {\n\t\t... ServiceDependencyFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment RendererFragment on Renderer {\n\tpath\n\ttype\n\thelm {\n\t\t... HelmMinimalFragment\n\t}\n}\nfragment HelmMinimalFragment on HelmMinimal {\n\tvalues\n\tvaluesFiles\n\trelease\n\tignoreHooks\n}\nfragment ServiceDependencyFragment on ServiceDependency {\n\tid\n\tname\n}\n","sha256:930b441c217f098b4a06fe5ee2b3413b71ddfeb7a14fd5a3f34e9eb094cf38c7":"query GetNotificationSinkByName ($name: String) {\n\tnotificationSink(name: $name) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9408ad873dfdbd82d7e41d8dbff8b46185dea3a6f1fa49dec03cd60ebbc1e830":"query GetGroupTiny ($name: String!) {\n\tgroup(name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:945929e80092a3ddfffa063c66ef0f3daaf82409c169e3e7127fafed50a14ab2":"query ListNamespaces ($after: String, $first: Int, $before: String, $last: Int) {\n\tmanagedNamespaces(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ManagedNamespaceEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ManagedNamespaceEdgeFragment on ManagedNamespaceEdge {\n\tcursor\n\tnode {\n\t\t... ManagedNamespaceMinimalFragment\n\t}\n}\nfragment ManagedNamespaceMinimalFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n}\n","sha256:953c6871b8ad6a66454c4be5f93053bbfb913d5da336e4a83e9ba1f702561273":"mutation DeleteUser ($id: ID!) {\n\tdeleteUser(id: $id) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:95f63c044687b9aeb755352caddb8fae1cff74a694a8d44c20c2669e786b4f82":"query ListServiceDeployment ($after: String, $before: String, $last: Int, $clusterId: ID) {\n\tserviceDeployments(after: $after, first: 100, before: $before, last: $last, clusterId: $clusterId) {\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:960457be7108f80ff02c924d123a5a85a8ea8df66a779785b18eb8376f72f525":"mutation DeleteClusterIsoImage ($id: ID!) {\n\tdeleteClusterIsoImage(id: $id) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:96e9ad521bf896ffa2f2b2b584ef7d8216073289a30bdfe8de3ca0e6241057f1":"mutation UpdateWorkbenchPrompt ($id: ID!, $attributes: WorkbenchPromptAttributes!) {\n\tupdateWorkbenchPrompt(id: $id, attributes: $attributes) {\n\t\tid\n\t}\n}\n","sha256:97134516f2bf93fd448744222727bc2d4b9c4778c529fecc1d68766696fc4ad5":"query GetScmConnection ($id: ID!) {\n\tscmConnection(id: $id) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:980afba6c180a980bcf9a8639972cfe0612f6251116bf78b86442ade3cda51c3":"query GetWorkbenchTiny ($id: ID, $name: String) {\n\tworkbench(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:9827fcdc2ff6a39a12b07c9f580189df66b547435d5077b4348d57534c3981f5":"query TokenExchange ($token: String!) {\n\ttokenExchange(token: $token) {\n\t\t... UserFragment\n\t\tgroups {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\tboundRoles {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:98630448e8dfa27ddc91790290e32ffc4f4ebee749bd1a8f890940c6f637bcb8":"query PagedClusterGateIDs ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterGates(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... PipelineGateIDsEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PipelineGateIDsEdgeFragment on PipelineGateEdge {\n\tnode {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:99c515b3c841d29dd7c06d7a15866725fe3522f0a8d7e6c749ead1e4148bbb58":"query ListAgentRuntimePendingRuns ($id: ID!, $after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuntime(id: $id) {\n\t\tpendingRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\t\tedges {\n\t\t\t\tnode {\n\t\t\t\t\t... AgentRunFragment\n\t\t\t\t}\n\t\t\t}\n\t\t\tpageInfo {\n\t\t\t\t... PageInfoFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:99cf665c8973fc5fbe75bbb8053212dd63bbd38fae367116c111ae69665385fb":"query ListScmConnections ($cursor: String, $before: String, $last: Int) {\n\tscmConnections(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ScmConnectionFragment\n\t\t\t}\n\t\t\tcursor\n\t\t}\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:9a1a0ff9faec767fdd76670f61d6f07e3bfb6f87e38e9f7258337ec4d55ef49c":"query GetServiceDeploymentByHandle ($cluster: String!, $name: String!) {\n\tserviceDeployment(cluster: $cluster, name: $name) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:9c6c086b73a8e8893f47aebd4f4b3fa31e6a323f54e4f49bad3390f41ff55e77":"mutation UpdateProject ($id: ID!, $attributes: ProjectAttributes!) {\n\tupdateProject(id: $id, attributes: $attributes) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9fb8d63cdb26f2f0c24141600a2e63734c288a3721a76322410265f4f2979d35":"query GetClusterRegistrations ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterRegistrations(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ClusterRegistrationFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:a09067ffa71e8f8b2a7a319ff96f0a79b1e54733cc99029952e2744ebcb93e8d":"mutation CreateGroup ($attributtes: GroupAttributes!) {\n\tcreateGroup(attributes: $attributtes) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:a16b1da2c5e2560270870aa279c534d36db2d0dc8abfb0c21578fc61fc7a6b00":"query ListPrAutomations ($cursor: String, $before: String, $last: Int) {\n\tprAutomations(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... PrAutomationFragment\n\t\t\t}\n\t\t\tcursor\n\t\t}\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:a21b5e44c5251b2393d36641f8e80e67318a9fe5cbd5a5a5010c21ee2deeb985":"mutation DeleteWorkbenchCron ($id: ID!) {\n\tdeleteWorkbenchCron(id: $id) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a334251e65b8ab49ef2c93cf1b71d07822fb6b8f9201095cd5490fd1deab6e8e":"query ListServiceDeployments ($cursor: String, $before: String, $last: Int) {\n\tserviceDeployments(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ServiceDeploymentFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:a44c40a19e2a6fdec2c6ebc9a7d8d85f004466fc628e568ef27a4973c6e4ae38":"mutation GetWorkbenchCron ($id: ID!) {\n\tworkbenchCron(id: $id) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a6982b6bb2f74922ef5d6e2368ac42f8a499ad17f16f819a0f64e89b0c20abe0":"mutation DeleteWorkbenchWebhook ($id: ID!) {\n\tdeleteWorkbenchWebhook(id: $id) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a7c3ab7455fa73c5f0171b092aafbfee2c47186ef1e6053d5ba99e5b264b4b16":"query GetCatalog ($id: ID, $name: String) {\n\tcatalog(id: $id, name: $name) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:a84f8942424abe644392066d12e351e0835027df1720d80bfa24f202b38a9dfd":"query GetNamespace ($id: ID!) {\n\tmanagedNamespace(id: $id) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:a8ce65444a9c0e953ccc22260b021bf84771782d619f4d9f940867bdaf01d9df":"mutation DeleteStack ($id: ID!) {\n\tdeleteStack(id: $id) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:a91f084bbbd85931d0e231c6caf2d1280b97dd1f9c7a1fb574192f3710106563":"mutation UpsertHelmRepository ($url: String!, $attributes: HelmRepositoryAttributes) {\n\tupsertHelmRepository(url: $url, attributes: $attributes) {\n\t\t... HelmRepositoryFragment\n\t}\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:a929072c59cbb7e762fec990adb41cf6cf80c06d00bbd0caa372f6bd4661b053":"query GetClusterWithToken ($id: ID, $handle: String) {\n\tcluster(id: $id, handle: $handle) {\n\t\t... ClusterFragment\n\t\tdeployToken\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:a9481fbef0ee5faac5f98ff86f1fcc351aef26a41e52daf22428135a715824b1":"query PagedClusterGates ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterGates(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... PipelineGateEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PipelineGateEdgeFragment on PipelineGateEdge {\n\tnode {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:aa077f5ef1fd98bb3909a063b4f4f6d722ee4355e2006aa48a80a5a3f34a988d":"mutation DeleteScmConnection ($id: ID!) {\n\tdeleteScmConnection(id: $id) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:aa987069b6edaf93d75eb44ab52356a7374b4ea4669b503729dc5209e4ba85e2":"query GetServiceDeploymentComponents ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\tid\n\t\tcomponents {\n\t\t\tkind\n\t\t\tstate\n\t\t}\n\t}\n}\n","sha256:abd3ae6e1fb895e3c792f77c5ec324b372ffc85abb94f26772455a98f547ef0a":"mutation UpdateScmConnection ($id: ID!, $attributes: ScmConnectionAttributes!) {\n\tupdateScmConnection(id: $id, attributes: $attributes) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:acdaf678c528e8bf7724301610dd4dd6304314c59d436e8e5452073068a143fc":"mutation DeleteGlobalService ($id: ID!) {\n\tdeleteGlobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:ad10097393ee33916a9be2804e6c786bb8f42679e64049dcf17eb8dd2cf79ef1":"query PagedClusterServiceIds ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentIdEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentIdEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentIdFragment\n\t}\n}\nfragment ServiceDeploymentIdFragment on ServiceDeployment {\n\tid\n}\n","sha256:af037c14ab732c3150f56513fcdbf6187c36457b52c13b05928e9dea542d3f97":"query GetProject ($id: ID, $name: String) {\n\tproject(id: $id, name: $name) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:aff1e211314f3b4f2795d03b2a40b9302661e9b92c8cc49c6c46c2758274c875":"mutation UpdateWorkbench ($id: ID!, $attributes: WorkbenchAttributes!) {\n\tupdateWorkbench(id: $id, attributes: $attributes) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b0c7d62eece94e065f18516cf7006281428f4ff44ecd903fb3fbcf334d99deac":"mutation CreateQueuedPrompt ($jobId: ID!, $attributes: QueuedPromptAttributes!) {\n\tcreateQueuedPrompt(jobId: $jobId, attributes: $attributes) {\n\t\t... QueuedPromptFragment\n\t}\n}\nfragment QueuedPromptFragment on QueuedPrompt {\n\tid\n\tprompt\n\tdequeableAt\n\tworkbenchJob {\n\t\tid\n\t}\n\tuser {\n\t\tid\n\t}\n}\n","sha256:b220576f4e2238111c178658b7e3e11c7a2fc482e1d1145c94aab213f2595242":"mutation DeleteGroupMember ($userId: ID!, $groupId: ID!) {\n\tdeleteGroupMember(userId: $userId, groupId: $groupId) {\n\t\t... GroupMemberFragment\n\t}\n}\nfragment GroupMemberFragment on GroupMember {\n\tid\n\tuser {\n\t\tid\n\t}\n\tgroup {\n\t\tid\n\t}\n}\n","sha256:b344029ffce5a39a293ead846a55b56059495641da56fe8b536d4e12f9b22b71":"query GetWorkbench ($id: ID, $name: String) {\n\tworkbench(id: $id, name: $name) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b3c5a853563920b74b4e2d1687e851e198d53c61d2d42df5642261d732841cc6":"mutation DeletePolicy ($id: ID!) {\n\tdeletePolicy(id: $id) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:b48053dac3c5ecd9ab8e99a7f29f52b25c13f7f191203637fb43f1833a30d335":"query ListServiceDeploymentByHandle ($after: String, $before: String, $last: Int, $cluster: String) {\n\tserviceDeployments(after: $after, first: 100, before: $before, last: $last, cluster: $cluster) {\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:b5aade690f9187a9eb7b67156c989946e1f652356238ffb859cf67c002dd5b20":"query GetServiceDeploymentForAgent ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\t... ServiceDeploymentForAgent\n\t}\n}\nfragment ServiceDeploymentForAgent on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\ttarball\n\tdeletedAt\n\tdryRun\n\ttemplated\n\tsha\n\tstatus\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tself\n\t\tversion\n\t\tpingedAt\n\t\tmetadata\n\t\ttags {\n\t\t\t... ClusterTags\n\t\t}\n\t\tcurrentVersion\n\t\tkasUrl\n\t\tdistro\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\thelm {\n\t\trelease\n\t\tvaluesFiles\n\t\tvalues\n\t\tignoreHooks\n\t\tignoreCrds\n\t\tluaScript\n\t\tluaFile\n\t\tluaFolder\n\t\tpythonScript\n\t\tpythonFile\n\t\tpythonFolder\n\t\tkustomizePostrender\n\t}\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tcontexts {\n\t\tname\n\t\tconfiguration\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tdeleteNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\trevision {\n\t\tid\n\t}\n\timports {\n\t\tid\n\t\tstack {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\toutputs {\n\t\t\tname\n\t\t\tvalue\n\t\t\tsecret\n\t\t}\n\t}\n\trenderers {\n\t\t... RendererFragment\n\t}\n\tdependencies {\n\t\t... ServiceDependencyFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment RendererFragment on Renderer {\n\tpath\n\ttype\n\thelm {\n\t\t... HelmMinimalFragment\n\t}\n}\nfragment HelmMinimalFragment on HelmMinimal {\n\tvalues\n\tvaluesFiles\n\trelease\n\tignoreHooks\n}\nfragment ServiceDependencyFragment on ServiceDependency {\n\tid\n\tname\n}\n","sha256:b6344198b643d2b030241e4ba06a7a808511584a5ddc52dabbbcc1b896c989ff":"mutation CloneServiceDeploymentWithHandle ($clusterId: ID!, $cluster: String!, $name: String!, $attributes: ServiceCloneAttributes!) {\n\tcloneService(clusterId: $clusterId, cluster: $cluster, name: $name, attributes: $attributes) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:b640b4ec159932cdb9519e0edba90585ba6552f8637f5a3136ecca8c7c4b33c5":"query ListClusters ($cursor: String, $before: String, $last: Int) {\n\tclusters(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\t... ClusterEdgeFragment\n\t\t}\n\t}\n}\nfragment ClusterEdgeFragment on ClusterEdge {\n\tnode {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b6bb1e90c1b8586144c0060e4b38c1d76124d80c3d4ae2d7b1f6ada4251afedf":"mutation UpdateServiceDeployment ($id: ID!, $attributes: ServiceUpdateAttributes!) {\n\tupdateServiceDeployment(id: $id, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:b77c4291ae27a7349ae24c8c3963ce23ff5daed32c51eb1275dbccd1df6fcbe1":"query GetObservabilityProvider ($id: ID, $name: String) {\n\tobservabilityProvider(id: $id, name: $name) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:b80a7faf4eee40b6c3823963dcf3614aa12035c3da6b317cb8208ccc4f6ac8b7":"query GetPrAutomationByName ($name: String!) {\n\tprAutomation(name: $name) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:b83ec626d13be86492db9fd86946d48b92e7e29239c0ff5600ac0e6006109e5c":"mutation CreateProviderCredential ($attributes: ProviderCredentialAttributes!, $name: String!) {\n\tcreateProviderCredential(attributes: $attributes, name: $name) {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:b87afc4a88b126bb018cbdee0a2d9f5c3552d1a2d9b032cdd1875023c2680da4":"mutation DeleteComplianceReportGenerator ($id: ID!) {\n\tdeleteComplianceReportGenerator(id: $id) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b88dad5dbf1911bf14fc349f8f14568b3cea7b12079ba4f50b80360a8a05d063":"mutation CreateGlobalServiceDeployment ($serviceId: ID!, $attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(serviceId: $serviceId, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:b92d34e46bb45d51af62431f19f46a643594ab8d2ace6ee0cdd7d2f9076c4116":"mutation UpsertPolicyConstraints ($constraints: [PolicyConstraintAttributes!]) {\n\tupsertPolicyConstraints(constraints: $constraints)\n}\n","sha256:b93ae4d17a11b60381e132d78df0ec8d9431bbf834517cc47ab74f83c7ef87aa":"mutation CreateServiceAccountToken ($id: ID!, $scopes: [ScopeAttributes], $expiry: String) {\n\tcreateServiceAccountToken(id: $id, scopes: $scopes, expiry: $expiry) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:b97ad5c22e824cb03ea1120d22df72eb1a45c6e18b82b399000786edf1fb6635":"mutation DeleteSentinel ($id: ID!) {\n\tdeleteSentinel(id: $id) {\n\t\tid\n\t}\n}\n","sha256:babd1fcf26e7e8d1243a3f92bb3135de93cd73b0bb5d4e28e40bd650bcbdfd1d":"query GetWorkbenchPrompt ($id: ID!) {\n\tworkbenchPrompt(id: $id) {\n\t\t... WorkbenchPromptFragment\n\t}\n}\nfragment WorkbenchPromptFragment on WorkbenchPrompt {\n\tid\n\ttitle\n\tcategory\n\tprompt\n}\n","sha256:bb41a2b83ff40ea0e043a1edace47470f4c97a1b20b95d0c8b862e85ce5ad54f":"query GetUser ($email: String!) {\n\tuser(email: $email) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:bcaa00aae81a591bfbc55c97d7d7fab286def9d56608d84929c4e948dbea70da":"mutation CreateClusterRegistration ($attributes: ClusterRegistrationCreateAttributes!) {\n\tcreateClusterRegistration(attributes: $attributes) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:be6f160416467f5e1c4f5f50a1549a66bbc8069b3b54836348e3be3507cdc897":"query GetPrGovernance ($id: ID, $name: String) {\n\tprGovernance(id: $id, name: $name) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:becbe7cfde6f4a45472afa3838782c007a7ca917e38ba1c6e9994f66543401c1":"mutation UpdateStackRunStep ($id: ID!, $attributes: RunStepAttributes!) {\n\tupdateRunStep(id: $id, attributes: $attributes) {\n\t\t... RunStepFragment\n\t}\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\n","sha256:bef364b9855a0f6ff2adb5d11c887b240e54f9ccad79cf8cb5a687a5f01fe216":"query ListProjects ($after: String, $before: String, $first: Int, $last: Int, $q: String) {\n\tprojects(after: $after, before: $before, first: $first, last: $last, q: $q) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ProjectFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:bfaf5cbd07eaa142e0d849d06d5e5b453aa32d0c6eeace81fa1933d76650e234":"mutation CreateClusterRestore ($backupId: ID!) {\n\tcreateClusterRestore(backupId: $backupId) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:bfb0af0255fcb8a8df9b9a92adc450dc9d7b73aecfb9d984041d36741ab28357":"query GetPolicyTiny ($id: ID, $name: String) {\n\tpolicy(id: $id, name: $name) {\n\t\t... TinyPolicyFragment\n\t}\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:c064e0789ac325d358976a1f68ae61f2d0fd196ac6452d2a0d89e14dc0a8f106":"mutation updateServiceComponents ($id: ID!, $components: [ComponentAttributes], $revisionId: ID!, $sha: String, $errors: [ServiceErrorAttributes], $metadata: ServiceMetadataAttributes) {\n\tupdateServiceComponents(id: $id, components: $components, revisionId: $revisionId, sha: $sha, errors: $errors, metadata: $metadata) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:c09faa203ac4b24e71309d89522aeb52d09256d884896870c257c57940b352ae":"mutation CreateAccessToken {\n\tcreateAccessToken {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:c0b9e33345dc718f8fb3c28711b5694a0b0e04be77e9faf13094cbecb500eeab":"mutation UpsertPreviewEnvironmentTemplate ($attributes: PreviewEnvironmentTemplateAttributes!) {\n\tupsertPreviewEnvironmentTemplate(attributes: $attributes) {\n\t\t... PreviewEnvironmentTemplateFragment\n\t}\n}\nfragment PreviewEnvironmentTemplateFragment on PreviewEnvironmentTemplate {\n\tid\n\tname\n\tcommentTemplate\n\tflow {\n\t\tid\n\t}\n\tconnection {\n\t\tid\n\t}\n\ttemplate {\n\t\tname\n\t}\n}\n","sha256:c115b884fcc5aa8a05486db11aec7c66d51336be00dbcb79b14276e983bcf4c4":"mutation UpsertCustomCompatibilityMatrix ($attributes: CustomCompatibilityMatrixAttributes!) {\n\tupsertCustomCompatibilityMatrix(attributes: $attributes) {\n\t\t... CustomCompatibilityMatrixFragment\n\t}\n}\nfragment CustomCompatibilityMatrixFragment on CustomCompatibilityMatrix {\n\tid\n\tname\n}\n","sha256:c1cd732253ebdf1c807451b3cf00bed2497fddd70b94dc26115e51be4f20de65":"mutation DeleteNamespace ($id: ID!) {\n\tdeleteManagedNamespace(id: $id) {\n\t\tid\n\t}\n}\n","sha256:c233e6f7b150960c88d30f2bbebdaa5cb184e1d973b4d57add138eae8b439a99":"query GetStackDefinition ($id: ID!) {\n\tstackDefinition(id: $id) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:c33f34d45c517bb9de74e17503e1955925c8ae908a2c6f3e1f8937cdc5494736":"mutation DeleteNotificationSink ($id: ID!) {\n\tdeleteNotificationSink(id: $id) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:c361daaf8af4e815cd5037cfca3508c99c82d5d13efeea7be74df0aa0a4a4086":"mutation DeleteScmWebhook ($id: ID!) {\n\tdeleteScmWebhook(id: $id) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:c3e1711d5f843ae701bc44bd0ec9a83709e9b97495bd569a45482d64029eba0b":"mutation CreatePersona ($attributes: PersonaAttributes!) {\n\tcreatePersona(attributes: $attributes) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:c4d1d8e2c7cc145562d0347c03a7e8d55ffa769b5c86fc0bf62e5a437a5c7705":"query GetScmConnectionTiny ($id: ID, $name: String) {\n\tscmConnection(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:c59085c3cc9fc0cdf5fdab1ad6426d70cad3c18d61e8099408b0f729ff7896a0":"query GetGroup ($name: String!) {\n\tgroup(name: $name) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:c648bed210879433e880936999a0177cfed858de16ae630b4d28fdf328e5ba8c":"query ListClusterStackIds ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... StackRunIdEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunIdEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:c6e7aaf82961c3a494e7dad20a5034cb38d7b6c7f7d314ede07872165c9514c2":"mutation CreateServiceDeployment ($clusterId: ID!, $attributes: ServiceDeploymentAttributes!) {\n\tcreateServiceDeployment(clusterId: $clusterId, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:c8e0fc5503578fcfd182a285f270117143fea26d5788ae339ea658d7824ead7a":"query GetStackRunApprovedAt ($id: ID!) {\n\tstackRun(id: $id) {\n\t\tapprovedAt\n\t}\n}\n","sha256:c8e4277ef08029190490500c4713ee3efdb9cbd85fe2afa0ab64c9fde367c4c8":"mutation CreateWorkbenchWebhook ($workbenchId: ID!, $attributes: WorkbenchWebhookAttributes!) {\n\tcreateWorkbenchWebhook(workbenchId: $workbenchId, attributes: $attributes) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:c9d7d1433d0b7c8a13ee3f48b79dc7ca7d2fbe3fbc95a59605bc4bcb6105be48":"query GetPipelines ($after: String) {\n\tpipelines(first: 100, after: $after) {\n\t\tedges {\n\t\t\t... PipelineEdgeFragment\n\t\t}\n\t}\n}\nfragment PipelineEdgeFragment on PipelineEdge {\n\tnode {\n\t\t... PipelineFragment\n\t}\n}\nfragment PipelineFragment on Pipeline {\n\tid\n\tname\n\tstages {\n\t\t... PipelineStageFragment\n\t}\n\tedges {\n\t\t... PipelineStageEdgeFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment PipelineStageFragment on PipelineStage {\n\tid\n\tname\n\tservices {\n\t\tservice {\n\t\t\t... ServiceDeploymentBaseFragment\n\t\t}\n\t\tcriteria {\n\t\t\tsource {\n\t\t\t\t... ServiceDeploymentBaseFragment\n\t\t\t}\n\t\t\tsecrets\n\t\t}\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PipelineStageEdgeFragment on PipelineStageEdge {\n\tid\n\tfrom {\n\t\t... PipelineStageFragment\n\t}\n\tto {\n\t\t... PipelineStageFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:cb1a08aa627034f757f578e60b19cdf3d86cb6d07d0e092665994437fd3b0c8c":"query GetAgentRuntimeByName ($name: String!, $clusterId: ID!) {\n\tagentRuntime(name: $name, clusterId: $clusterId) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:cb23898da395a1259a3eea1069486d08bdd398b8e19ab7767f479516394fb545":"mutation IngestClusterCost ($costs: CostIngestAttributes!) {\n\tingestClusterCost(costs: $costs)\n}\n","sha256:cbf979fbb7271eae49c77cfe27cf45f05476150dbf4d2de0e43a6baed1fbbf9f":"mutation CreateCustomStackRun ($attributes: CustomStackRunAttributes!) {\n\tcreateCustomStackRun(attributes: $attributes) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:cc23c54f364f7fc86b1677d8f80d5f90f66bb7dbb52aa56ac2ca9505602f7c63":"mutation ApproveStackRun ($id: ID!) {\n\tapproveStackRun(id: $id) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:cc4284d27cd80dffc23f9a8b628e071a091bf13b1e8a75c1a628b487c92ea8c8":"mutation DeleteGroup ($groupId: ID!) {\n\tdeleteGroup(groupId: $groupId) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:cc42a4ba14d88488b304966f6db6111e774264487956c89be92e2ce5a1f825d8":"query ListWorkbenchTools ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tworkbenchTools(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... WorkbenchToolFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:cd777b75a96e3400c0bdd6a75f4e63860fb1019c20082c6509d7a8a9179d2947":"query GetInfrastructureStackStatus ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackStatusFragment\n\t}\n}\nfragment InfrastructureStackStatusFragment on InfrastructureStack {\n\tstatus\n}\n","sha256:cf8c42483cecc603b29f28f8c4f4f0fc9cba008aa0ae2228ba85683ddb71c31c":"query GetUserTiny ($email: String!) {\n\tuser(email: $email) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:d0243f65b29d1f4a3dc0fc341329bd64771a81b61027b49b5c657638fc12d993":"mutation DetachStack ($id: ID!) {\n\tdetachStack(id: $id) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:d0deff4a75c0315f913f84dcd0babf240d3dd12dc7b753f6796ac081b4b10b6c":"query ListAgentRunsMinimal ($after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRunMinimalFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRunMinimalFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\truntime {\n\t\ttype\n\t}\n\tpullRequests {\n\t\tid\n\t\tstatus\n\t\turl\n\t\ttitle\n\t\tref\n\t}\n\tupload {\n\t\tsession\n\t\tpatch\n\t\tscreenRecording\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:d17fdd1f3585dbb5fe41795aa0f06da222848b52ad30ef0827bc0eb968fc3c68":"mutation DeleteGlobalServiceDeployment ($id: ID!) {\n\tdeleteGlobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:d1b43ea072acd70d56e7e3637eb05a13b854defd61c46d3f03cac4c831be0df4":"mutation UpsertPrGovernance ($attributes: PrGovernanceAttributes!) {\n\tupsertPrGovernance(attributes: $attributes) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:d212c3e56c32e78aa75561817cfa4aa18d96b3f7ef6b60e363dfdd864b78bbc4":"mutation PingCluster ($attributes: ClusterPing!) {\n\tpingCluster(attributes: $attributes) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:d37c4e4d20689e9ff322abbb478c77fc9a8aec7b995b68617d3401d1f123b39b":"mutation CreateScmConnection ($attributes: ScmConnectionAttributes!) {\n\tcreateScmConnection(attributes: $attributes) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:d5f1c35ebe2aa909ebaf89248f6120c9fbe9b6b991bc615ae72c786bbc519892":"mutation DeleteWorkbench ($id: ID!) {\n\tdeleteWorkbench(id: $id) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:d666f635df84ed6a6c279cd0f46a5ede9d26b15ec7aac618a0d96fb731fb7dda":"query GetAccessToken ($id: ID!) {\n\taccessToken(id: $id) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:d7a398fe4bbf2a5f798ff3b3cc4b219587eeb27f422f3afb15c9621926dcb1e4":"mutation DeleteClusterProvider ($id: ID!) {\n\tdeleteClusterProvider(id: $id) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:d7d71625718364b0b47e0f2fcacf1411f6ce8f1a5f8d5368133b7c28ee931c2d":"query GetClusterRegistration ($id: ID, $machineId: String) {\n\tclusterRegistration(id: $id, machineId: $machineId) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:d9d6a609a379b3b6ba578167a4b9218c222ffede1152770c7df98cd5558bdb57":"mutation AgentPrReview ($runId: ID!, $attributes: AgentPrReviewAttributes!) {\n\tagentPrReview(runId: $runId, attributes: $attributes) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:da49a26dea358a0bd0fbe7d5293211ce6a6264208cd6a62c06f3fbbecda3d907":"query ListClusterStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... StackRunEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunFragment\n\t}\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:da61f9d23f2bb33137008e58f123fe876dd8b1313e9e4c9bcde20a36f0af2026":"mutation UpdateClusterRestore ($id: ID!, $attributes: RestoreAttributes!) {\n\tupdateClusterRestore(id: $id, attributes: $attributes) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:da7c309e7952dd39dd8aff2fb5caff9e91fd9b874fd67a885a8fa9919c56f922":"query GetFederatedCredential ($id: ID!) {\n\tfederatedCredential(id: $id) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:db848743beb32ccf52efc157a7df4acd0e6f68d1b66b1563f014a7aa5b503794":"mutation CreateWorkbenchTool ($attributes: WorkbenchToolAttributes!) {\n\tcreateWorkbenchTool(attributes: $attributes) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:dd43f3ef75185258586ab4bb1b086ed6a2703f09a5e439ea3f4a7cda94429d74":"mutation UpdateCustomStackRun ($id: ID!, $attributes: CustomStackRunAttributes!) {\n\tupdateCustomStackRun(id: $id, attributes: $attributes) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:df1a376b62fbd1450e92d22cb75ad7ee44d7f03f99bfb7d5c0e9d899ed428b22":"mutation DeleteFlow ($id: ID!) {\n\tdeleteFlow(id: $id) {\n\t\tid\n\t}\n}\n","sha256:e00dac57c9bbde70847c095096e903c6b33b62d4e20bc848a5996649ed738826":"query GetServiceDeployment ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:e12171fbbb1ccefe73589f2b19ea00806a6d8a4ef0be04692110bfcd18587456":"mutation UpdateRbac ($rbac: RbacAttributes!, $serviceId: ID, $clusterId: ID, $providerId: ID) {\n\tupdateRbac(rbac: $rbac, serviceId: $serviceId, clusterId: $clusterId, providerId: $providerId)\n}\n","sha256:e2d945757a488df65767d201a8b1b87d4485fe2e48cf16478979b6f4c5cd9a20":"mutation AddServiceError ($id: ID!, $errors: [ServiceErrorAttributes]) {\n\tupdateServiceComponents(id: $id, errors: $errors) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:e44cf2898da342dcf07148d3868d094a0dd29e5579d25257d5be9c1f0f05489a":"query GetSentinelRunJob ($id: ID!) {\n\tsentinelRunJob(id: $id) {\n\t\t... SentinelRunJobFragment\n\t}\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e59e52086eae818a70aac84cb1c4d4ac1e23135482a8444db2155af8bf60a789":"mutation UpdateServiceAccount ($id: ID!, $attributes: ServiceAccountAttributes!) {\n\tupdateServiceAccount(id: $id, attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:e5c3c0029872eee1c6e1cdd984869fe9a4b27eca35ea11c05567ae7561df3519":"query ListComplianceReportGenerators ($after: String, $before: String, $first: Int, $last: Int) {\n\tcomplianceReportGenerators(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ComplianceReportGeneratorFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:e5f970f2b0557a81ab6348adfc94a898956ea5f945ac0bd067ebc465a588a25e":"mutation UpdateSentinelRunJobStatus ($id: ID!, $attributes: SentinelRunJobUpdateAttributes) {\n\tupdateSentinelRunJob(id: $id, attributes: $attributes) {\n\t\t... SentinelRunJobFragment\n\t}\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e64a2264b1a894d3db35c700efe1e5b72103efab97275077b7184600bb81b4ec":"query GetServiceDeploymentTiny ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:e81829a6508fe6b8fb4e8d0e7b4180772c5ebff701a3011e1ce4a365cdcea6c5":"query GetSentinelRun ($id: ID!) {\n\tsentinelRun(id: $id) {\n\t\t... SentinelRunFragment\n\t}\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e885bd9d9a88f0e525d69bee24aba63717c7969bcda29dcc1e0181db1d6553f7":"mutation UpdateGroup ($groupId: ID!, $attributtes: GroupAttributes!) {\n\tupdateGroup(groupId: $groupId, attributes: $attributtes) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:e8cabd7bee2b3ec8fb69f3c07726d145c7ba7d1342e884bb6674c48ee584d3f2":"query GetObserverTiny ($id: ID, $name: String) {\n\tobserver(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:e98aa15a1c0af4f3b5d1831279f62d9ef48c9a28217191e54b8e7545e322356a":"mutation UpsertAgentRuntime ($attributes: AgentRuntimeAttributes!) {\n\tupsertAgentRuntime(attributes: $attributes) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:ea42f99ac6aa82489ff83d4b6a3569d01af1e44663670ce7983d6e0950e00445":"mutation CreateOIDCProvider ($type: OidcProviderType!, $attributes: OidcProviderAttributes!) {\n\tcreateOidcProvider(type: $type, attributes: $attributes) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:eb1e79ee0e1ae9924acfacadc2225debe000a1deaf29f4bd0b4fd32bdc06fc37":"mutation KickService ($id: ID!) {\n\tkickService(serviceId: $id) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:eb48e1387916b107c9eb813c9b4c86628952b1cc47b2cc19138c55e28c0d27c2":"query GetInfrastructureStackId ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:eb6667b96554ee27077292eed506b0777efacdffaee51babf8fdaa2fe20de1df":"query GetObservabilityProviderTiny ($id: ID, $name: String) {\n\tobservabilityProvider(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:ebb21cf148c1266159da87762af8b07b3d86e2bc357ed7e97e3836552ff47725":"query ListAgentRuntimes ($after: String, $first: Int, $before: String, $last: Int, $q: String, $type: AgentRuntimeType) {\n\tagentRuntimes(after: $after, first: $first, before: $before, last: $last, q: $q, type: $type) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRuntimeFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:edf0898fb4698594637c396cb651e59637dde77354bfd5f6cbac6a174973ab3f":"mutation CreatePolicy ($attributes: PolicyAttributes!) {\n\tcreatePolicy(attributes: $attributes) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:ee2c452c191fc50ec78c441ccd4beaec32bb632b4a32df0b3bbdbf5a77ae2b26":"query GetCluster ($id: ID) {\n\tcluster(id: $id) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:f0180c3b7af6b2fd274ee2b25b45dc2f9577ea7cd180278c8873f71e30a8e57c":"query ListWorkbenches ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tworkbenches(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... WorkbenchFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:f0877907330fe5fe1eb0c25fde95aa37e9cc7c9e0a1c18f5fd432ec35fbdaf0f":"mutation UpdateStack ($id: ID!, $attributes: StackAttributes!) {\n\tupdateStack(id: $id, attributes: $attributes) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:f0e05ce093b55732e58f7c3095178c28f5fe253dc86cb3fe35b8d9780e729d8a":"mutation DeleteProviderCredential ($id: ID!) {\n\tdeleteProviderCredential(id: $id) {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:f0f3bc7a7e51984167ff9097cb46eea2b6f8511fde8e987e799db5e919392da2":"mutation UpdatePolicy ($id: ID!, $attributes: PolicyAttributes!) {\n\tupdatePolicy(id: $id, attributes: $attributes) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:f2bb0c00963bc3dd9e407275110593d11307a2f5ad6b0874d0ec68e39f98aacc":"query GetFlow ($id: ID!) {\n\tflow(id: $id) {\n\t\t... FlowFragment\n\t}\n}\nfragment FlowFragment on Flow {\n\tid\n\tname\n\tdescription\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\n","sha256:f2e2e6aea69a2fe6413ac04731bf6bdf9b1b8fbfbc631f64081b97925cf0c4d5":"mutation CreatePrAutomation ($attributes: PrAutomationAttributes!) {\n\tcreatePrAutomation(attributes: $attributes) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:f48fca8fbe86193ecceac779139b392ec35b9668b6391b87e9e485968adbe281":"mutation KickServiceByHandle ($cluster: String!, $name: String!) {\n\tkickService(cluster: $cluster, name: $name) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:f4c23df10fd69bac428668e234d4671734030cdb043ab60cf1c2d1ae81755751":"mutation CloneServiceDeployment ($clusterId: ID!, $id: ID!, $attributes: ServiceCloneAttributes!) {\n\tcloneService(clusterId: $clusterId, serviceId: $id, attributes: $attributes) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:f4e1c56176b7a939e788ef5b53f4787503b89c032124e826851a5ff4aceb0f25":"query GetNotificationRouterByName ($name: String) {\n\tnotificationRouter(name: $name) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:f6ed33ad9b1d5a5809a4e165bd5ef8f45b11473299e695b900de16f0e019638e":"mutation CreateBindingPolicy ($attributes: BindingPolicyAttributes!) {\n\tcreateBindingPolicy(attributes: $attributes) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:f6f84fe259c76394005edc0fae05274cf74dbc7798901ae09e0ffcd10cc83f56":"mutation UpsertMCPServer ($attributes: McpServerAttributes!) {\n\tupsertMcpServer(attributes: $attributes) {\n\t\t... MCPServerFragment\n\t}\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:f8ad34afb74d7611413565ccb547ce422f230839b2e0ab0ca2a63d8da00a58d0":"query ListAgentRuns ($after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRunFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:fb582babd9105b9d3a968a697cd3c6879d73cc169cb3a0ea2ff6919653b93159":"query GetPersonaTiny ($id: ID!) {\n\tpersona(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:fb5ea857664bc64ec6b9b3be0df5183537c6ada36d9076badf3035fac4821160":"mutation updateGate ($id: ID!, $attributes: GateUpdateAttributes!) {\n\tupdateGate(id: $id, attributes: $attributes) {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:fbbe6bebeab1e039a67523921914f1c01201317c02cc98e06dec4433b164babe":"mutation UpsertFlow ($attributes: FlowAttributes!) {\n\tupsertFlow(attributes: $attributes) {\n\t\t... FlowFragment\n\t}\n}\nfragment FlowFragment on Flow {\n\tid\n\tname\n\tdescription\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\n","sha256:fd1e534eae2f32dcc454ce202bcdf126e56a5fd1783af6d72bac469daf44711a":"mutation UpsertObservabilityWebhook ($attributes: ObservabilityWebhookAttributes!) {\n\tupsertObservabilityWebhook(attributes: $attributes) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:fd2719879c20e353e13ab4632ed7ef0463e32c44312ba4718fa3c3398f85757b":"mutation DeleteUpgradePlanCallout ($name: String!) {\n\tdeleteUpgradePlanCallout(name: $name) {\n\t\tid\n\t}\n}\n","sha256:fe29529018620357fb036988eaedf93dcc5f4c261a1790008fe871e730df22a7":"mutation CreateAgentMessageOutput ($attributes: AgentMessageOutputAttributes!) {\n\tagentMessageOutput(attributes: $attributes) {\n\t\tmessageId\n\t\tagentRunId\n\t\tstdout\n\t\tstderr\n\t}\n}\n","sha256:fe6d1ea15a4c48af7dd3d108284742c3e213ae0ca2d056b54e9f69e76d324ff0":"query GetPipeline ($id: ID!) {\n\tpipeline(id: $id) {\n\t\t... PipelineFragmentMinimal\n\t}\n}\nfragment PipelineFragmentMinimal on Pipeline {\n\tid\n\tname\n}\n","sha256:fe9a6d6142da6bdab74374a10496278f9c48e7c7d5be86f30230ab48f378cec0":"query GetClusterIdByHandle ($handle: String) {\n\tcluster(handle: $handle) {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:feaaf702508e6b2448a4d426421ceaece0bdb6c525c329b24c8944dec9373dc3":"query PagedClusterServices ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n"}}
+{"operations":{"sha256:00103bd4468d331dceccf9f2cf1c3770fe14da6023e65301de2f423934a180df":"query GetNamespaceByName ($name: String!) {\n\tmanagedNamespace(name: $name) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:0079baec6ec668221625f6674e7a6d3e9732fb54295023d0694fb597a5655fed":"mutation CreateAgentRun ($runtimeId: ID!, $attributes: AgentRunAttributes!) {\n\tcreateAgentRun(runtimeId: $runtimeId, attributes: $attributes) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:00cc798d4efba980df734ed908f4a6eff35ea9532ba5a24ce2e678c47b9e4edd":"mutation DeleteGitRepository ($id: ID!) {\n\tdeleteGitRepository(id: $id) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:02711e8d33b56e8ab950ec3feaf8e17a23665d6c78ac21affb27f66a0c066834":"query GetServiceDeploymentTinyByHandle ($cluster: String!, $name: String!) {\n\tserviceDeployment(cluster: $cluster, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:0495efe67b265523309e91230a439c44a3566aa4f54eae8038c54b08e197da4a":"mutation CreatePullRequest ($id: ID!, $identifier: String, $branch: String, $context: Json) {\n\tcreatePullRequest(id: $id, identifier: $identifier, branch: $branch, context: $context) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:04f446a7241e2a77f9c03860529c22f6097f0b065b8a91812af367db06c51783":"mutation DeletePipeline ($id: ID!) {\n\tdeletePipeline(id: $id) {\n\t\t... PipelineFragmentId\n\t}\n}\nfragment PipelineFragmentId on Pipeline {\n\tid\n}\n","sha256:05614f559b29689b95f90bfb84adf304e3898a429c26fc3b55dda779621f3d26":"mutation UpsertCatalog ($attributes: CatalogAttributes) {\n\tupsertCatalog(attributes: $attributes) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:071e713551ffc28f4196427c367142ecc5fa316d0b9fc17c0dfc682f6b1dca67":"query GetProjectTiny ($id: ID, $name: String) {\n\tproject(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:07fc34a5e5b6a6de044a6b35bf40e5218106f2849f0528e71f8f23287a498858":"mutation UpdateCloudConnection ($id: ID!, $attributes: CloudConnectionAttributes!) {\n\tupdateCloudConnection(id: $id, attributes: $attributes) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:08223278347596ef0a0f5ab698ed517803e9dcf41027abe6e1b00e1765a24534":"mutation UpdateAgentRunTodos ($id: ID!, $todos: [AgentTodoAttributes]) {\n\tupdateAgentRunTodos(id: $id, todos: $todos) {\n\t\t... AgentRunBaseFragment\n\t}\n}\nfragment AgentRunBaseFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tmode\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:085357a60e4fc347e143328a81f9de10226eed039c1bf5c65180c4a22e0cabbf":"mutation CreateGlobalServiceDeploymentFromTemplate ($attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:08538e2a930e5635cdf567d936c4e328614f999e32a060237d625a4bf0a0d818":"query GetPreviewEnvironmentTemplate ($id: ID, $flowId: ID, $name: String) {\n\tpreviewEnvironmentTemplate(id: $id, flowId: $flowId, name: $name) {\n\t\t... PreviewEnvironmentTemplateFragment\n\t}\n}\nfragment PreviewEnvironmentTemplateFragment on PreviewEnvironmentTemplate {\n\tid\n\tname\n\tcommentTemplate\n\tflow {\n\t\tid\n\t}\n\tconnection {\n\t\tid\n\t}\n\ttemplate {\n\t\tname\n\t}\n}\n","sha256:0860bf6411f3d79915d4229c914b2f6f01f790c4f060cb845172f57cc919db2f":"mutation UpdateAgentRun ($id: ID!, $attributes: AgentRunStatusAttributes!) {\n\tupdateAgentRun(id: $id, attributes: $attributes) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:087514315644018028c9097e305b44d39b6d2a04bbc27db80624db6f7cc0ca72":"query GetCloudConnection ($id: ID, $name: String) {\n\tcloudConnection(id: $id, name: $name) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0a28bd1898f2387165f13394e8eef522528534c85f28548d81706a42b2711b11":"mutation CreateProject ($attributes: ProjectAttributes!) {\n\tcreateProject(attributes: $attributes) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0bc7753b4e8e392d65a52f75255bc48a95cdea84ee46118b08f141280cb5aa18":"query ListStackRuns ($id: ID!, $after: String, $before: String, $first: Int, $last: Int) {\n\tinfrastructureStack(id: $id) {\n\t\truns(after: $after, before: $before, first: $first, last: $last) {\n\t\t\tpageInfo {\n\t\t\t\t... PageInfoFragment\n\t\t\t}\n\t\t\tedges {\n\t\t\t\tnode {\n\t\t\t\t\t... StackRunFragment\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:0c0af919e2a1ba02a7c44e25fe40583b263f45bc1a1639ae2d730c016a86fdbe":"query GetStackRun ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunFragment\n\t}\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:0c4c1df078093fe381c14fb9f8ab6e669fedf3a631a8508dbad33ac9cfba8d93":"mutation DeleteWorkbenchTool ($id: ID!) {\n\tdeleteWorkbenchTool(id: $id) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:0d0a41b5dfa910c86743e2020189205095d82cfdaff768c950becb55d86e2b18":"query GetPrAutomationTiny ($id: ID, $name: String) {\n\tprAutomation(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:0e44517bb19e961ba5072de436b6c59ae5f5f26a0abe32ae3e8ddee5f69a6aa2":"query GetInfrastructureStack ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:0f0760bb85acd02798886990edc78e9aac44db50fa883f250d5972519ffa9ce3":"query GetGitRepository ($id: ID, $url: String) {\n\tgitRepository(id: $id, url: $url) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:0f2aa1a8d7ef81b1122c7d75ae4e54e7f47f04ec942981b778e1d6899309f374":"mutation DeleteCustomCompatibilityMatrix ($name: String!) {\n\tdeleteCustomCompatibilityMatrix(name: $name) {\n\t\tid\n\t}\n}\n","sha256:0fa340d64f20a24b0474d3d73ba219d190d314d53d35e1cd3cba85f0c08b3e9b":"query ListClusterNamespaces ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterManagedNamespaces(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ManagedNamespaceEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ManagedNamespaceEdgeFragment on ManagedNamespaceEdge {\n\tcursor\n\tnode {\n\t\t... ManagedNamespaceMinimalFragment\n\t}\n}\nfragment ManagedNamespaceMinimalFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n}\n","sha256:113ac0549d0fcfd701e5bd6f98913d91d1b5c93a64d33494d301d8a0512d0c3b":"mutation DeleteCluster ($id: ID!) {\n\tdeleteCluster(id: $id) {\n\t\tid\n\t}\n}\n","sha256:1241ee42efef6bee48784022906e25828de81d27b66b8b2661a6696b25bf8096":"query ListPolicyConstraints ($after: String, $first: Int, $before: String, $last: Int, $namespace: String, $kind: String, $q: String) {\n\tpolicyConstraints(after: $after, first: $first, before: $before, last: $last, namespace: $namespace, kind: $kind, q: $q) {\n\t\t... PolicyConstraintConnectionFragment\n\t}\n}\nfragment PolicyConstraintConnectionFragment on PolicyConstraintConnection {\n\tpageInfo {\n\t\t... PageInfoFragment\n\t}\n\tedges {\n\t\t... PolicyConstraintEdgeFragment\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PolicyConstraintEdgeFragment on PolicyConstraintEdge {\n\tcursor\n\tnode {\n\t\t... PolicyConstraintFragment\n\t}\n}\nfragment PolicyConstraintFragment on PolicyConstraint {\n\tid\n\tname\n\tdescription\n\trecommendation\n\tviolationCount\n\tref {\n\t\t... ConstraintRefFragment\n\t}\n\tviolations {\n\t\t... ViolationFragment\n\t}\n}\nfragment ConstraintRefFragment on ConstraintRef {\n\tkind\n\tname\n}\nfragment ViolationFragment on Violation {\n\tid\n\tgroup\n\tversion\n\tkind\n\tnamespace\n\tname\n\tmessage\n}\n","sha256:12978d7990d091e6a41e14baa02a3eec74a42fa51d13c7123407753af75206d5":"mutation DeleteMCPServer ($id: ID!) {\n\tdeleteMcpServer(id: $id) {\n\t\tid\n\t}\n}\n","sha256:14dab7763ca34c91224365fb4ee687491114c4f8417edf9242c56b2471d8e8aa":"mutation UpsertObserver ($attributes: ObserverAttributes!) {\n\tupsertObserver(attributes: $attributes) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:156bc954626bd533fcb5d6b04f8818932bf0aac8fe3b75559b80c0fdba618249":"query GetServiceContext ($name: String!) {\n\tserviceContext(name: $name) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:15709e3e6be95a817cd82440cad42dff3e321b122c6dd4a244b34c11c83e0d60":"mutation AddClusterAuditLog ($audit: ClusterAuditAttributes, $audits: [ClusterAuditAttributes!]) {\n\taddClusterAuditLog(audit: $audit, audits: $audits)\n}\n","sha256:167f4296a579145d132b20e16834fe927e5cbcf3207bc99ee1e4224cde76c0ca":"mutation TriggerRun ($id: ID!) {\n\ttriggerRun(id: $id) {\n\t\t... StackRunBaseFragment\n\t}\n}\nfragment StackRunBaseFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:173a6ff059c298faca0983bed5cd23dd2618146a475ba1b318c6df57571088fe":"mutation DetachCluster ($id: ID!) {\n\tdetachCluster(id: $id) {\n\t\tid\n\t}\n}\n","sha256:18dd5f16f5b5edea59cefc781dd47a75481f7fbf8e82fe78bd0b282bdea8ecb1":"query GetServiceContextTiny ($name: String!) {\n\tserviceContext(name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:19d5a50725b33d0f729cfab39941f60c599fa65fd3b62bc8ccaf516d466d61bd":"mutation DeleteCloudConnection ($id: ID!) {\n\tdeleteCloudConnection(id: $id) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1b46f5f5487d9da23d5fefe4e9c687345d8262c0c56cc51fba038dcb114804fb":"mutation UpdateClusterRegistration ($id: ID!, $attributes: ClusterRegistrationUpdateAttributes!) {\n\tupdateClusterRegistration(id: $id, attributes: $attributes) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:1b8cbf2dcdf2de8865c73a61fa9d6c804e98ab333aa265a4662e88187f1102c8":"query GetServiceTarball ($id: ID!) {\n\tserviceTarball(id: $id) {\n\t\tpath\n\t\tcontent\n\t}\n}\n","sha256:1bda12b2e70df63429dc0f9828860174e95a031e50753a96c7df1d8fbbc31e5f":"mutation CompletesStackRun ($id: ID!, $attributes: StackRunAttributes!) {\n\tcompleteStackRun(id: $id, attributes: $attributes) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:1cefc75c539e6334a815541ea29d5b313d62320a0891add20d37aadcb87e2f86":"mutation UpdateGitRepository ($id: ID!, $attributes: GitAttributes!) {\n\tupdateGitRepository(id: $id, attributes: $attributes) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:1d4359e183ae6b47f7415ab6785626c59d818e2b146ae91e3098c10ef74e4635":"mutation UpdateWorkbenchTool ($id: ID!, $attributes: WorkbenchToolAttributes!) {\n\tupdateWorkbenchTool(id: $id, attributes: $attributes) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1e351c0a49167a35fcecf3cd2357422f8d0d46d815b2cefbe94af6a2eea3e050":"mutation UpsertUser ($attributes: UserAttributes!) {\n\tupsertUser(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:1e3e1e2790a3766fa468050e82832991f68555001110778be9611b060369753e":"mutation CreatePipelineContext ($pipelineId: ID!, $attributes: PipelineContextAttributes!) {\n\tcreatePipelineContext(pipelineId: $pipelineId, attributes: $attributes) {\n\t\t... PipelineContextFragment\n\t}\n}\nfragment PipelineContextFragment on PipelineContext {\n\tid\n\tcontext\n}\n","sha256:1f6e3f1f3f3453e925cba533c56cd78e169a56f9276e8795f8aa63576dd56a24":"mutation UpsertUpgradePlanCallout ($attributes: UpgradePlanCalloutAttributes!) {\n\tupsertUpgradePlanCallout(attributes: $attributes) {\n\t\t... UpgradePlanCalloutFragment\n\t}\n}\nfragment UpgradePlanCalloutFragment on UpgradePlanCallout {\n\tid\n\tname\n}\n","sha256:1f6f1a1489995b77678694f2575e16e943eeee4736e05a91dec811f0f15983f3":"mutation CreateFederatedCredential ($attributes: FederatedCredentialAttributes!) {\n\tcreateFederatedCredential(attributes: $attributes) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:1ffea4d7cf10ecfd70c134cdf5bfb7dbeaf6434a6a643a55cff81fd9ebbcec0c":"mutation SaveUpgradeInsights ($insights: [UpgradeInsightAttributes], $addons: [CloudAddonAttributes]) {\n\tsaveUpgradeInsights(insights: $insights, addons: $addons) {\n\t\tid\n\t\tname\n\t\tversion\n\t}\n}\n","sha256:203d28df2014c4b7e9a0b2207cf6ccc8a5ef26fdf3e2601c5a3d62109c6837ea":"query ListStackDefinitions ($after: String, $first: Int, $before: String, $last: Int) {\n\tstackDefinitions(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... StackDefinitionFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:221cb5170a90de1dc482ba3e31377437aa9b15a97c7b8ff3230177b70e08bfe4":"query GetHelmRepositoryTiny ($url: String!) {\n\thelmRepository(url: $url) {\n\t\tid\n\t}\n}\n","sha256:2345924629957866fb322bc4c388a43686af182cbbddf270b0f30f8a3b377dd0":"query GetGlobalServiceDeployment ($id: ID!) {\n\tglobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:23583acdae3cdcc986ffa4a7e1a2b55d5e7a3bde0311c3ec5718bfbbea14f219":"query GetGlobalServiceDeploymentByName ($name: String!) {\n\tglobalService(name: $name) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:23bb559098a8c85f67e0edcbff659daa6e752c76f0892c65d77432d568398bee":"query GetClusterRestore ($id: ID!) {\n\tclusterRestore(id: $id) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:24a3dde607ba5f19327deea354f30f58b8184bcc9d2bbc102fb49b51c5f422b5":"query GetNotificationRouter ($id: ID!) {\n\tnotificationRouter(id: $id) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:25a4c7c811b4dd79d86e145181462499315c7b476c5caaaa60518db1f57f95d9":"mutation SavePipeline ($name: String!, $attributes: PipelineAttributes!) {\n\tsavePipeline(name: $name, attributes: $attributes) {\n\t\t... PipelineFragmentMinimal\n\t}\n}\nfragment PipelineFragmentMinimal on Pipeline {\n\tid\n\tname\n}\n","sha256:2623408de61d79178f6ee987a04e0df092546078b563e89b072b162af6f15ffe":"mutation GetWorkbenchWebhook ($id: ID!) {\n\tgetWorkbenchWebhook(id: $id) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:263be051e9e86e4a69b64064ebf9971db9f14ff4827e881b0a9ea988c3d0870e":"mutation DeleteObservabilityProvider ($id: ID!) {\n\tdeleteObservabilityProvider(id: $id) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:299b1ad1887219aef8605421301e00b36aabb4a1cbd34f3ba1f7c4717612eadf":"mutation DeletePrGovernance ($id: ID!) {\n\tdeletePrGovernance(id: $id) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:29a58c567342ed6668f8af22b9ff8d5ed8c55c74151c93d87accd3827bc39faf":"mutation CreateBootstrapToken ($attributes: BootstrapTokenAttributes!) {\n\tcreateBootstrapToken(attributes: $attributes) {\n\t\t... BootstrapTokenBase\n\t}\n}\nfragment BootstrapTokenBase on BootstrapToken {\n\tid\n\ttoken\n}\n","sha256:2a1fd145f179ee0d1e6ce186d9d3633981ac99bf3752b07c815b1ce2f659c430":"mutation CreateClusterProvider ($attributes: ClusterProviderAttributes!) {\n\tcreateClusterProvider(attributes: $attributes) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:2a9a8fbe23cdfbbf00c854bb4f8332064dff6c8a552ac756b506395bd25100c7":"mutation UpdateClusterProvider ($id: ID!, $attributes: ClusterProviderUpdateAttributes!) {\n\tupdateClusterProvider(id: $id, attributes: $attributes) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:2cfa322ebeb5f421f7cd23fad60e385d43d70b18962d71d0fede0f594cc1b46d":"mutation UpdateSentinel ($id: ID!, $attributes: SentinelAttributes) {\n\tupdateSentinel(id: $id, attributes: $attributes) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:2d79ab2f196f1d63931d3806a4477b92870750014a086d6f2561e55cb6a67af3":"mutation CreateUser ($attributes: UserAttributes!) {\n\tcreateUser(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:2e5118d5c1872f1f474c40362070af9ad131edef31a6fcfa53ffc550957cb86d":"mutation CreateAgentPullRequest ($runId: ID!, $attributes: AgentPullRequestAttributes!) {\n\tagentPullRequest(runId: $runId, attributes: $attributes) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:2e5a060183ca0f115ca2fd5c98f051bd8f260fa00902992c20ad8fcf46523699":"query GetFederatedCredentialTiny ($id: ID!) {\n\tfederatedCredential(id: $id) {\n\t\tid\n\t}\n}\n","sha256:2ed4e4848a2483a8d60683df43dcf2668484b6af513db89072d7b9163cb91e40":"mutation UpdateNamespace ($id: ID!, $attributes: ManagedNamespaceAttributes!) {\n\tupdateManagedNamespace(id: $id, attributes: $attributes) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:2f962b9a1cf08b3ac5eb37f0935bf9fb9553825da92e773f0198f564812ddcca":"query GetClusterGate ($id: ID!) {\n\tclusterGate(id: $id) {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:2fb0280705bd95774e0830e6b69482a17a4bdea51b60aae031c878e7622bfb31":"query ListAccessTokens ($cursor: String, $before: String, $last: Int) {\n\taccessTokens(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AccessTokenFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:3153ef98895d30c2c6f51cf864b6461c951e4385c408e4736ab5c85909c55967":"query GetWorkbenchTool ($id: ID, $name: String) {\n\tworkbenchTool(id: $id, name: $name) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:31c87507e58e544b9660476a49191db9bb682a97098db47b0a24f6ab6b7c7099":"mutation DeleteWorkbenchPrompt ($id: ID!) {\n\tdeleteWorkbenchPrompt(id: $id) {\n\t\tid\n\t}\n}\n","sha256:3328865733a3222c979c5635979280018cbe8a54f6eea8f28e32314b39c6a6a6":"mutation UpdateStackDefinition ($id: ID!, $attributes: StackDefinitionAttributes!) {\n\tupdateStackDefinition(id: $id, attributes: $attributes) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:344d00a3e2e6e10a36de6867db2b9deba25bdebc3547c897fe6f2548738724a7":"query GetStackDefinitionTiny ($id: ID!) {\n\tstackDefinition(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:3557f778cd80f66482868b2bc6d0df507b4a2eb9cc6249877b001bdcc2c2c455":"mutation CreateSentinel ($attributes: SentinelAttributes) {\n\tcreateSentinel(attributes: $attributes) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:3617cd964a5282e8fbdbbb88a2dfddc82c9392725b259d6db7e10b87adb28e91":"mutation SaveServiceContext ($name: String!, $attributes: ServiceContextAttributes!) {\n\tsaveServiceContext(name: $name, attributes: $attributes) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:3642d7afaa157713cb448c26f4f3362a53ba61ba9f368233782e709637054dbe":"mutation DeletePrAutomation ($id: ID!) {\n\tdeletePrAutomation(id: $id) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:368c82946025827b9e5a282df168753546a94ae38c4eba8077c45f32ae92ab54":"mutation DeleteObserver ($id: ID!) {\n\tdeleteObserver(id: $id) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:36fea2d78373476143b536962a73f6b9eca5fdef00b5415ab69e1ab830908756":"mutation CreateStackDefinition ($attributes: StackDefinitionAttributes!) {\n\tcreateStackDefinition(attributes: $attributes) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:3715c332fc325a323b5c2baf5a93b97960d05d5a84c4480a8bec3ae6d2e2b3ba":"query GetBindingPolicyTiny ($id: ID!) {\n\tbindingPolicy(id: $id) {\n\t\tid\n\t}\n}\n","sha256:375a7c2c38b8646e8df33e517981225183365bcadcc689195c122f3d4ab5864c":"mutation UpdateGlobalServiceDeployment ($id: ID!, $attributes: GlobalServiceAttributes!) {\n\tupdateGlobalService(id: $id, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:376451d410f05aa32972a4ecfe1e4e9efab9bcd12428dfcee693eacfbe653ae9":"mutation CreateServiceDeploymentWithHandle ($cluster: String!, $attributes: ServiceDeploymentAttributes!) {\n\tcreateServiceDeployment(cluster: $cluster, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:37a8038a21b33330a0321ceaa792807a8a959323c31d52b87f71cd557f5e8529":"query MyCluster {\n\tmyCluster {\n\t\t... {\n\t\t\tid\n\t\t\tname\n\t\t\tdistro\n\t\t\tsupportedAddons\n\t\t\trestore {\n\t\t\t\t... ClusterRestoreFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:383f1a8e3b789b58df1c1b5e1de4ada6be3b0ef5e3cd24f6a79109ff2a6ef6ec":"mutation DeleteAccessToken ($token: String!) {\n\tdeleteAccessToken(token: $token) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:38cf2b80e79145a83cf653ef5dd530c09492427bbc5c2f2b2b00a99f63081a6d":"mutation DeleteServiceDeployment ($id: ID!) {\n\tdeleteServiceDeployment(id: $id) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:39189795df275ba5770b0f0fdc2167fef15a2ef105f13bb69b95d1e3d75ef749":"mutation UpsertVirtualCluster ($parentID: ID!, $attributes: ClusterAttributes!) {\n\tupsertVirtualCluster(parentId: $parentID, attributes: $attributes) {\n\t\tdeployToken\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:391a0d44f56daaa9236742e4c686aed180e197f9d2e8fe4fd007d58e3fb89d14":"query GetPersona ($id: ID!) {\n\tpersona(id: $id) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:395be562633ea07aa14a2848d97c2662d5a27f2bc3b0306ff8fb328b80c35562":"query ListObservabilityProviders ($after: String, $first: Int, $before: String, $last: Int) {\n\tobservabilityProviders(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ObservabilityProviderFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:3a5b26fabfbcb1813210e97107878f8cf880da4efec00b5d807733890b99c663":"mutation UpdateDeploymentSettings ($attributes: DeploymentSettingsAttributes!) {\n\tupdateDeploymentSettings(attributes: $attributes) {\n\t\t... DeploymentSettingsFragment\n\t}\n}\nfragment DeploymentSettingsFragment on DeploymentSettings {\n\tid\n\tname\n\tagentHelmValues\n\tagentHelmValuesTemplateable\n\tagentVsn\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tartifactRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tdeployerRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tai {\n\t\t... AISettingsFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment AISettingsFragment on AiSettings {\n\tenabled\n\tprovider\n\topenai {\n\t\tmodel\n\t}\n\tanthropic {\n\t\tmodel\n\t}\n}\n","sha256:3c3311c918109c032947b1352a1b4229f13ac85fc9e6ae86c4feda508041cde9":"mutation CreateAgentRunUpload ($runId: ID!, $session: Upload, $screenRecording: Upload, $patch: Upload) {\n\tcreateAgentRunUpload(runId: $runId, attributes: {session:$session,screenRecording:$screenRecording,patch:$patch}) {\n\t\t... AgentRunUploadFragment\n\t}\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:3c447e070c14ecaac431c794c559ba5fa606bc15df98c00bcc81e24809315a4f":"mutation DeleteCustomStackRun ($id: ID!) {\n\tdeleteCustomStackRun(id: $id) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:3cbfaefd04ec40ea1887c27ae44dbbfd5bb148938afe070745b9f35951a4b791":"mutation UpsertCloudConnection ($attributes: CloudConnectionAttributes!) {\n\tupsertCloudConnection(attributes: $attributes) {\n\t\t... CloudConnectionFragment\n\t}\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:3d79eb2a713ca289a10f7515c20da885c422f3c2220a76d6d505e681d8021237":"mutation CreateGitRepository ($attributes: GitAttributes!) {\n\tcreateGitRepository(attributes: $attributes) {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:3e27a6a17cfbb6f6db0ee7472736f01ea3fc36b07c7654011e2f40c4f5405e75":"query GetSentinelTiny ($id: ID!) {\n\tsentinel(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:3f077b2e9c8019b17de56676404222eb2dceb3f3cb76f6f40bccf9086217553b":"query GetDeploymentSettings {\n\tdeploymentSettings {\n\t\t... DeploymentSettingsFragment\n\t}\n}\nfragment DeploymentSettingsFragment on DeploymentSettings {\n\tid\n\tname\n\tagentHelmValues\n\tagentHelmValuesTemplateable\n\tagentVsn\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tartifactRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tdeployerRepository {\n\t\t... GitRepositoryFragment\n\t}\n\tai {\n\t\t... AISettingsFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment AISettingsFragment on AiSettings {\n\tenabled\n\tprovider\n\topenai {\n\t\tmodel\n\t}\n\tanthropic {\n\t\tmodel\n\t}\n}\n","sha256:4098e8f5d7c1242768a4330163d671ffefb47a68245a8035f1347543f7c4254d":"mutation UpdateBindingPolicy ($id: ID!, $attributes: BindingPolicyUpdateAttributes!) {\n\tupdateBindingPolicy(id: $id, attributes: $attributes) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:413142a1e1214ce0d2a445a9d9912d4b098d01e69aa9d6a35c619c0d05a8a7ed":"mutation CreateWorkbench ($attributes: WorkbenchAttributes!) {\n\tcreateWorkbench(attributes: $attributes) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:41e4f03ed32b05e32866db167f922d8092eef5aad38075b2245827da5d9ad23c":"query GetCatalogTiny ($id: ID, $name: String) {\n\tcatalog(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:42bc0bd98144dabaac9fef4c5455c391a5deb4b9a594273884aa88c59778dd9e":"query GetComplianceReportGenerator ($id: ID, $name: String) {\n\tcomplianceReportGenerator(id: $id, name: $name) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4356bc0c1808c4f31a7a47247affbdc702e039c898d4fa26a650774b3c9f8338":"query GetAgentRunTodos ($id: ID!) {\n\tagentRun(id: $id) {\n\t\ttodos {\n\t\t\t... AgentTodoFragment\n\t\t}\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:45177eb025b2c2716b361dcca23690272398564a94ba297e06014bcb247068eb":"query GetAgentRun ($id: ID!) {\n\tagentRun(id: $id) {\n\t\t... AgentRunFragment\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\n","sha256:45568860a37d05e3d18ecb976ee1f222aed9a5e7a9c0fa7150c1251c9ef61fae":"mutation UpdateGlobalService ($id: ID!, $attributes: GlobalServiceAttributes!) {\n\tupdateGlobalService(id: $id, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:45b1488b1732a010d79649d4a39feb42ce81a6842f62fa9f9c801df10136e3f8":"mutation UpsertObservabilityProvider ($attributes: ObservabilityProviderAttributes!) {\n\tupsertObservabilityProvider(attributes: $attributes) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:45c1ed4b2d99d030559403440ac39f886badb154fcfd4f10e301ea0a056ab824":"query GetPipelineContext ($id: ID!) {\n\tpipelineContext(id: $id) {\n\t\t... PipelineContextFragment\n\t}\n}\nfragment PipelineContextFragment on PipelineContext {\n\tid\n\tcontext\n}\n","sha256:46566d1616e7e91db2d6216bad8fe25d3985df875d9c85d06ecc1d6a9ff761d4":"mutation UpsertNotificationRouter ($attributes: NotificationRouterAttributes!) {\n\tupsertNotificationRouter(attributes: $attributes) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4664a72f360d14d57f6c374965d8d12a4795cbca5c8af739d02349214a90e3c5":"query GetScmWebhook ($id: ID, $externalId: String) {\n\tscmWebhook(id: $id, externalId: $externalId) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:4694b939a2c331cca99be014be0d45dd8756b9cfc8a2f7fed2fb0b2ae2b2b176":"query Me {\n\tme {\n\t\tid\n\t\temail\n\t\tname\n\t}\n}\n","sha256:46c0244b8b182a0be59a3619a9147a3686d4894a5403b47f4758ec7456437bbd":"query GetClusterIsoImage ($id: ID, $image: String) {\n\tclusterIsoImage(id: $id, image: $image) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:4700694be9716b23c92b557c584739bdc4f7a86d0106842f5ade8d21da402adb":"mutation EnqueueWorkbenchPrFollowup ($url: String!, $attributes: QueuedPromptAttributes!) {\n\tenqueueWorkbenchPrFollowup(url: $url, attributes: $attributes) {\n\t\t... QueuedPromptFragment\n\t\tworkbenchJob {\n\t\t\tid\n\t\t\turl\n\t\t}\n\t}\n}\nfragment QueuedPromptFragment on QueuedPrompt {\n\tid\n\tprompt\n\tdequeableAt\n\tworkbenchJob {\n\t\tid\n\t}\n\tuser {\n\t\tid\n\t}\n}\n","sha256:47dc4b6bd1139a41dc445fb76faeb339207d650f0b1b9b6991e56dbc37777de6":"query GetClusterByHandle ($handle: String) {\n\tcluster(handle: $handle) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4889a49b7bc53288977c1d827c7e540ef407641fd1b37faf467ad3aa1fae20eb":"query ListInfrastructureStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tinfrastructureStacks(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... InfrastructureStackEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment InfrastructureStackEdgeFragment on InfrastructureStackEdge {\n\tnode {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:4a0f99c5c1ed02f2c004bf4676a192e75731634bfe4e37218dd6a34a1c95b326":"query ServiceAccounts ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tserviceAccounts(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... UserFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4bb4613ac3d087f679e786b1d6a491b02d4333ca215fbdfc7233b43ab02d9f66":"query GetStackRunMinimal ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunMinimalFragment\n\t}\n}\nfragment StackRunMinimalFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\n","sha256:4bc390a223f5151c820474b4ec055094ecbbc7fb3894f9f48baa6b612ce62161":"query GetAgentRuntime ($id: ID!) {\n\tagentRuntime(id: $id) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4beb4e8b7b5844428fa204b98d19c00119ab761ba14a33d1e40e1cdebdc2365a":"mutation UpdateStackRun ($id: ID!, $attributes: StackRunAttributes!) {\n\tupdateStackRun(id: $id, attributes: $attributes) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:4cb5452060ebdbaa1e8effa76d240b91af5cfe5e2fcc8780fa6607c298fa725d":"mutation WorkbenchPrFollowup ($url: String!, $attributes: WorkbenchMessageAttributes!) {\n\tworkbenchPrFollowup(url: $url, attributes: $attributes) {\n\t\tid\n\t\tprompt\n\t\ttype\n\t\tstatus\n\t}\n}\n","sha256:4ccc84b66170761dbc355854fbe36f2ad7914720d9026128e860a2ca679caa4b":"mutation AddStackRunLogs ($id: ID!, $attributes: RunLogAttributes!) {\n\taddRunLogs(stepId: $id, attributes: $attributes) {\n\t\tupdatedAt\n\t}\n}\n","sha256:4d391c1b966bca6a1f7392320cb12a42bb9d76c0ea06b9aee89eba25db04b08b":"mutation CreateScmWebhook ($connectionId: ID!, $owner: String!) {\n\tcreateScmWebhook(connectionId: $connectionId, owner: $owner) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:4e817a16d60e0674f5530ba1e1249840f369e23853ca214d13863f299b8f7d0e":"query GetNotificationSink ($id: ID!) {\n\tnotificationSink(id: $id) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:4e9ae0595f3f41aeefd121080484f583351451a9ed9c4a2ac21d24b375d5ae8e":"mutation UpsertComplianceReportGenerator ($attributes: ComplianceReportGeneratorAttributes!) {\n\tupsertComplianceReportGenerator(attributes: $attributes) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:50da97f82323246c4aec944e818a055833aabfcf3e4be9d67e061fe7776ae0df":"mutation UpdateServiceDeploymentWithHandle ($cluster: String!, $name: String!, $attributes: ServiceUpdateAttributes!) {\n\tupdateServiceDeployment(cluster: $cluster, name: $name, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:51ef8948450e9b14889936618653d431bd618dcbf0f0883aae0c4fb6d537be4a":"mutation UpdatePersona ($id: ID!, $attributes: PersonaAttributes!) {\n\tupdatePersona(id: $id, attributes: $attributes) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:527aebd2d9c8f2c1e9f845c3ab24baf3fdd536ce86a0206e14ec3b05132b3913":"mutation CreateAgentMessage ($runId: ID!, $attributes: AgentMessageAttributes!) {\n\tcreateAgentMessage(runId: $runId, attributes: $attributes) {\n\t\tid\n\t\tmessage\n\t}\n}\n","sha256:54910ed76d4c42ee7339454901466a271af34936ab345c88fb03ee4bdb763a3a":"query ListClustersWithParameters ($after: String, $first: Int, $before: String, $last: Int, $projectId: ID, $tagQuery: TagQuery) {\n\tclusters(after: $after, first: $first, before: $before, last: $last, projectId: $projectId, tagQuery: $tagQuery) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ClusterEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ClusterEdgeFragment on ClusterEdge {\n\tnode {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:54f9977d5571d11d430f63e03d6208e3a305b0e2bc32a06a1ebbebf6b4522fa3":"mutation DeletePreviewEnvironmentTemplate ($id: ID!) {\n\tdeletePreviewEnvironmentTemplate(id: $id) {\n\t\tid\n\t}\n}\n","sha256:5525b1c9bf332e1fc609b70c671ecb9ba088933b87b249f40fa1827d7db494f9":"mutation CreateClusterIsoImage ($attributes: ClusterIsoImageAttributes!) {\n\tcreateClusterIsoImage(attributes: $attributes) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:556a981320a385d7d9776830051cbf6d2127e4e538b57d3d28d1473aad5dfd33":"mutation DeleteOIDCProvider ($id: ID!, $type: OidcProviderType!) {\n\tdeleteOidcProvider(id: $id, type: $type) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:56607343e0225629d380152b80a6aeaa8d46a2a306400b6c3f4e396595d33c33":"mutation CreateNamespace ($attributes: ManagedNamespaceAttributes!) {\n\tcreateManagedNamespace(attributes: $attributes) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:566845778e4c6ce4551811f830d2e681b2d68caa72bd99709a0c790877d6eaee":"mutation UpdateDashboard ($id: ID!, $attributes: DashboardAttributes!) {\n\tupdateDashboard(id: $id, attributes: $attributes) {\n\t\t... WorkbenchDashboardFragment\n\t}\n}\nfragment WorkbenchDashboardFragment on WorkbenchDashboard {\n\tid\n\tname\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:573648a4bd455ab3047a5627bd4188286785ec9d36d9a4a69d525c9999a7ead4":"mutation DeleteFederatedCredential ($id: ID!) {\n\tdeleteFederatedCredential(id: $id) {\n\t\tid\n\t}\n}\n","sha256:57790a6caa298edfdbc1f311bcb963189e1b8a519753c8029225bbc6a9d497ef":"query GetPolicy ($id: ID, $name: String) {\n\tpolicy(id: $id, name: $name) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:580fca816c2a2b2d59eb97ad4f2569218ef0685d0e724a2e0e5de4230db5aa93":"query ListGitRepositories ($cursor: String, $before: String, $last: Int) {\n\tgitRepositories(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\t... GitRepositoryEdgeFragment\n\t\t}\n\t}\n}\nfragment GitRepositoryEdgeFragment on GitRepositoryEdge {\n\tnode {\n\t\t... GitRepositoryFragment\n\t}\n\tcursor\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:5893cd09a5fbd29b0b6ce255f5e5d50e08ff164d1da91525a124b44619b58d59":"mutation CreateWorkbenchPrompt ($workbenchId: ID!, $attributes: WorkbenchPromptAttributes!) {\n\tcreateWorkbenchPrompt(workbenchId: $workbenchId, attributes: $attributes) {\n\t\tid\n\t}\n}\n","sha256:58ea9b0116be68d9f4da2ac8110d93fde21e86df23bb1ef89b982e5a16aa11ed":"mutation UpdateClusterIsoImage ($id: ID!, $attributes: ClusterIsoImageAttributes!) {\n\tupdateClusterIsoImage(id: $id, attributes: $attributes) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:594c9c271560981bef35235a0b0e29463631416f6dbf2aab24d2efb5f5395ba7":"query GetBindingPolicy ($id: ID!) {\n\tbindingPolicy(id: $id) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:594cb032bccdf14d2cae9ade9f52b20d4b56e9ab6630e299927ee9d2c9801fa5":"mutation CreateWorkbenchCron ($workbenchId: ID!, $attributes: WorkbenchCronAttributes!) {\n\tcreateWorkbenchCron(workbenchId: $workbenchId, attributes: $attributes) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:5abc2071d4557f9edd21dfc6472a9473d4b1b267eb0c3e3b8437ee1eca0e91cb":"mutation ShareSecret ($attributes: SharedSecretAttributes!) {\n\tshareSecret(attributes: $attributes) {\n\t\tname\n\t\thandle\n\t\tsecret\n\t\tinsertedAt\n\t\tupdatedAt\n\t}\n}\n","sha256:5b27782cd5302beb56aec90bd5e986f67aea75a37582b480e0860ac9242293a0":"query GetIssueWebhook ($id: ID, $name: String) {\n\tissueWebhook(id: $id, name: $name) {\n\t\t... IssueWebhookFragment\n\t}\n}\nfragment IssueWebhookFragment on IssueWebhook {\n\tid\n\tname\n\tprovider\n}\n","sha256:5baa034c528aa2f193811366642087e0b6c75c88fe1a8c5c22bc06ee75d02427":"mutation DeleteServiceContext ($id: ID!) {\n\tdeleteServiceContext(id: $id) {\n\t\t... ServiceContextFragment\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:5e4949060ce8bce3c89357a76aa82dcd88350b1965a30113a6eeeda2c424aa8d":"query ListNotificationSinks ($after: String, $first: Int, $before: String, $last: Int) {\n\tnotificationSinks(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... NotificationSinkEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment NotificationSinkEdgeFragment on NotificationSinkEdge {\n\tcursor\n\tnode {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:5e544cd179164a2409b455e448b0eed324f40742a26522fb344a1e997d2a3c80":"mutation DeleteObservabilityWebhook ($id: ID!) {\n\tdeleteObservabilityWebhook(id: $id) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:5e94440e7b15f517f56955063550fd90e284a59c002e9121b8df3a45660c99fc":"query GetHelmRepository ($url: String!) {\n\thelmRepository(url: $url) {\n\t\t... HelmRepositoryFragment\n\t}\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:60bb829fc0d5411b67d8e260b204b0c3118d75c022ffd368f18f7f9edc85bc5f":"query GetClusterProvider ($id: ID!) {\n\tclusterProvider(id: $id) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:60de6586577e9cb81f7c41bcf3482947a47f5da53ca1e658ea5a5764d6343aac":"mutation CreateScmWebhookPointer ($attributes: ScmWebhookAttributes!) {\n\tcreateScmWebhookPointer(attributes: $attributes) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:61ccd6c95eca788ecfe7ffe54fdf2bdb203432adc5790785ef82deadce19f219":"mutation DeletePersona ($id: ID!) {\n\tdeletePersona(id: $id) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:633dba4e06a7c190478b1c6d65302b9715ecbe84bc5f5bf1534286fc064c39fe":"query GetStackRunBase ($id: ID!) {\n\tstackRun(id: $id) {\n\t\t... StackRunBaseFragment\n\t}\n}\nfragment StackRunBaseFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:6374f2075fc651ba96385d190f73e93a949d38a302c3a520b9aa7b48e14986d2":"mutation DeleteClusterRegistration ($id: ID!) {\n\tdeleteClusterRegistration(id: $id) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:653bd2dca1e546786b5564738f50ef09c21243d55f0a8ff6af6613af43a6839d":"query ListClusterSentinelRunJobs ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterSentinelRunJobs(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... SentinelRunJobFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:663074674ca5e1837c9a836c9ca87d011e3b82c7aee97c307816f923807f1403":"mutation CancelAgentRun ($id: ID!) {\n\tcancelAgentRun(id: $id) {\n\t\tid\n\t}\n}\n","sha256:672a471c01d8cea255bc474ee2c2b4b0bf19071e5c4cac93dd3d60de6af33c3a":"query ListBindingPolicies ($after: String, $first: Int, $before: String, $last: Int) {\n\tbindingPolicies(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... BindingPolicyFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:676c685a9306b2973a2921f6f0158ec0e4785aced9987122ea6ef490c93ecfb4":"mutation UpdateWorkbenchCron ($id: ID!, $attributes: WorkbenchCronAttributes!) {\n\tupdateWorkbenchCron(id: $id, attributes: $attributes) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:68d98b7ac666f84eeb85897ef3519a78ecf00304af9b78e9ae3b4c25532a4982":"mutation DeleteStackDefinition ($id: ID!) {\n\tdeleteStackDefinition(id: $id) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:68fac5688e28798e6adbf158c70679ee2e327893121a12db46a02362ac47b68c":"mutation UpdateUser ($id: ID, $attributes: UserAttributes!) {\n\tupdateUser(id: $id, attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:6c6860b13a9d0aaacfd7eb47b2c1a993768f0389f5fbe197efa64971d2e232df":"query ListHelmRepositories ($after: String, $first: Int, $before: String, $last: Int) {\n\thelmRepositories(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... HelmRepositoryFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:6cfac09e011997d8e43d520ffb21c7f2742981c3a59ba78e9274cfc750f3a991":"query ListScmWebhooks ($after: String, $before: String, $first: Int, $last: Int) {\n\tscmWebhooks(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ScmWebhookFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:6fb3a6d7b695c4168b976dedfcf9a53c6ab7783770a26d4f25fa705153dae6f0":"mutation RegisterRuntimeServices ($services: [RuntimeServiceAttributes], $layout: OperationalLayoutAttributes, $deprecated: [DeprecatedCustomResourceAttributes], $serviceId: ID) {\n\tregisterRuntimeServices(services: $services, layout: $layout, deprecated: $deprecated, serviceId: $serviceId)\n}\n","sha256:6fcb5448dc8bc96c565dab0bf002bb9bcb82ad8785717de59ad14a80e4d4e178":"query GetScmConnectionByName ($name: String!) {\n\tscmConnection(name: $name) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:6fe58e154caaddb59485ac72d26e0ffee5fb864c6e1a45b31b90082830872995":"mutation DetachServiceDeployment ($id: ID!) {\n\tdetachServiceDeployment(id: $id) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:6fec0d284e2f2884e65a4de72ee9ed2673b92adfc0b19e73d970364aa3410d79":"mutation CreateCluster ($attributes: ClusterAttributes!) {\n\tcreateCluster(attributes: $attributes) {\n\t\tdeployToken\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:7022709816c360b28f659e86985f545a415f48e96b2f30ef866ea3ae97f39fa9":"query GetClusterBackup ($id: ID, $clusterId: ID, $namespace: String, $name: String) {\n\tclusterBackup(id: $id, clusterId: $clusterId, namespace: $namespace, name: $name) {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:705e50fb64758842c60cce987d7ab0eb08cf21df44eaf506ee141324260481bb":"query GetAgentRunMinimal ($id: ID!) {\n\tagentRun(id: $id) {\n\t\t... AgentRunMinimalFragment\n\t}\n}\nfragment AgentRunMinimalFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\truntime {\n\t\ttype\n\t}\n\tpullRequests {\n\t\tid\n\t\tstatus\n\t\turl\n\t\ttitle\n\t\tref\n\t}\n\tupload {\n\t\tsession\n\t\tpatch\n\t\tscreenRecording\n\t}\n}\n","sha256:70dd24813b99b33f0bd76a916a653bd40aefb7b4d1f950c1c6cfb349f5e064c7":"mutation DeleteCatalog ($id: ID!) {\n\tdeleteCatalog(id: $id) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:71211688078517de55856c131211f78a9b5f707fc2c3857726fd59a81123b2b9":"query GetWorkbenchToolTiny ($id: ID, $name: String) {\n\tworkbenchTool(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:75340df6d83e5cb03878a6914da84328432f6879320e6083d0cf6fd1ba1e0a35":"mutation RollbackService ($id: ID!, $revisionId: ID!) {\n\trollbackService(id: $id, revisionId: $revisionId) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:782b1bd26714e00f7908991d5ed8af1beee25bbdb038e0885378d17a277b1929":"query GetClusterProviderByCloud ($cloud: String!) {\n\tclusterProvider(cloud: $cloud) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:78dbebdbef637a8412788971739ba9931f0eae3ae63eb7b0d0d75902620521fc":"query GetCustomStackRun ($id: ID!) {\n\tcustomStackRun(id: $id) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:7a35b4446780f4560edd416760772e7f4d9bd8193e64e39d945a0ca57e6d5799":"mutation UpdateAgentMessage ($id: ID!, $attributes: AgentMessageAttributes!) {\n\tupdateAgentMessage(id: $id, attributes: $attributes) {\n\t\tid\n\t\tmessage\n\t}\n}\n","sha256:7a526118f0ec20a508e94f419446156ab87b99bd9ff5700c13cf8612f6e8be8d":"query GetObserver ($id: ID, $name: String) {\n\tobserver(id: $id, name: $name) {\n\t\t... ObserverFragment\n\t}\n}\nfragment ObserverFragment on Observer {\n\tid\n\tname\n\tstatus\n\tcrontab\n\ttarget {\n\t\t... ObserverTargetFragment\n\t}\n\tactions {\n\t\t... ObserverActionFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ObserverTargetFragment on ObserverTarget {\n\thelm {\n\t\t... ObserverHelmRepoFragment\n\t}\n\toci {\n\t\t... ObserverOciRepoFragment\n\t}\n}\nfragment ObserverHelmRepoFragment on ObserverHelmRepo {\n\turl\n\tchart\n\tprovider\n}\nfragment ObserverOciRepoFragment on ObserverOciRepo {\n\turl\n\tprovider\n}\nfragment ObserverActionFragment on ObserverAction {\n\ttype\n\tconfiguration {\n\t\t... ObserverActionConfigurationFragment\n\t}\n}\nfragment ObserverActionConfigurationFragment on ObserverActionConfiguration {\n\tpr {\n\t\t... ObserverPrActionFragment\n\t}\n\tpipeline {\n\t\t... ObserverPipelineActionFragment\n\t}\n}\nfragment ObserverPrActionFragment on ObserverPrAction {\n\tautomationId\n\trepository\n\tbranchTemplate\n\tcontext\n}\nfragment ObserverPipelineActionFragment on ObserverPipelineAction {\n\tpipelineId\n\tcontext\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\n","sha256:7bb99a71a060105e0369bd65dfbef40cfaefd3bf24f3a20be6bba8ebe0f5d151":"query ListPolicies ($after: String, $first: Int, $before: String, $last: Int, $projectId: ID, $q: String) {\n\tpolicies(after: $after, first: $first, before: $before, last: $last, projectId: $projectId, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... PolicyFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:7bf259965e095c6f562ceabf64b53c96f2af8c279f8f585ae46150d432e15177":"mutation DeleteAgentRuntime ($id: ID!) {\n\tdeleteAgentRuntime(id: $id) {\n\t\tid\n\t}\n}\n","sha256:7c28e35a508edb6910ec148143db545bf6ceae2d3f89d99dd12108d55cbace2e":"query ListProviders {\n\tclusterProviders(first: 100) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ClusterProviderFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:7d305588dda783d061b91186810d26c83dc96ce88ca6eadd3dc0aeb8e5c2b1e9":"query GetObservabilityWebhook ($id: ID, $name: String) {\n\tobservabilityWebhook(id: $id, name: $name) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:7e2b1754c1a0096773632c812c86d3e0e73c8bd0ff4e4de4e783b3afc545c212":"query GetTinyCluster ($id: ID) {\n\tcluster(id: $id) {\n\t\t... TinyClusterFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:7fc3c4c26cd7f027d90210964398854eebe7e5ce7bb518f4c8839505a4b4fcb3":"mutation AddGroupMember ($groupId: ID!, $userId: ID!) {\n\tcreateGroupMember(groupId: $groupId, userId: $userId) {\n\t\t... GroupMemberFragment\n\t}\n}\nfragment GroupMemberFragment on GroupMember {\n\tid\n\tuser {\n\t\tid\n\t}\n\tgroup {\n\t\tid\n\t}\n}\n","sha256:806453fdd48b0a0eae70fc366b758b34c1fb7290ff39b393794e5181fe7664ae":"query GetGitRepositoryID ($url: String) {\n\tgitRepository(url: $url) {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:808ebe4bf5034aa84eae9f40e3b4046bd9d0961b9c6c15acc96c29a5c2ba961b":"mutation CreateGlobalService ($attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:812b636e5bfc0c485832996d9aed1a5826dc9a1d48e1b65ff68774f2c97e89c9":"query ListClusterServices {\n\tclusterServices {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:825ebd6ac166846c04631143991b97b8170a7a9d266ebb1c9331a9976a20d30f":"query GetClusterGates {\n\tclusterGates {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:82a9426820e1787f567e38edbce7759b05900a1ec3721d17f883dd62ebc6642c":"query GetPrAutomation ($id: ID!) {\n\tprAutomation(id: $id) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:836475a72bf4f3ebb0e1fcd945018865862b53cb7616f62ba213c2fd5fe69d05":"query ListViolationStatistics ($field: ConstraintViolationField!) {\n\tviolationStatistics(field: $field) {\n\t\t... ViolationStatisticFragment\n\t}\n}\nfragment ViolationStatisticFragment on ViolationStatistic {\n\tvalue\n\tviolations\n\tcount\n}\n","sha256:83b4333debfd340763ef190910485c333c6dd49d47110057df60be57da770157":"mutation DeleteNotificationRouter ($id: ID!) {\n\tdeleteNotificationRouter(id: $id) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:843362e6b99d63d6a55e850db9f69b9b09f86278c3eb97dca4f720100546283d":"query GetMCPServer ($id: ID!) {\n\tmcpServer(id: $id) {\n\t\t... MCPServerFragment\n\t}\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:851d296b63f9c0c937e82a454781e76d918b708a27c3e264069902f71eff5d6d":"mutation CreateStack ($attributes: StackAttributes!) {\n\tcreateStack(attributes: $attributes) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:857bac887a978a2ac4f093331e7384dfb57425924b0a1bd5a09ffa9e04844819":"mutation UpdateOIDCProvider ($id: ID!, $type: OidcProviderType!, $attributes: OidcProviderAttributes!) {\n\tupdateOidcProvider(id: $id, type: $type, attributes: $attributes) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:85d46af869af92f6920bab0d8bcbdd30790f74de6439c25c997147d8775d9585":"mutation DeleteDashboard ($id: ID!) {\n\tdeleteDashboard(id: $id) {\n\t\tid\n\t}\n}\n","sha256:85df9e68d83e11a9f9321348538306287166a75d4ab75ab2b48855e80d8b39d2":"mutation DeleteBootstrapToken ($id: ID!) {\n\tdeleteBootstrapToken(id: $id) {\n\t\tid\n\t}\n}\n","sha256:8670eabfee3682802dbfd5c68f5e72b37119ec31e909f425655206ed9d5a18ec":"mutation UpdateFederatedCredential ($id: ID!, $attributes: FederatedCredentialAttributes!) {\n\tupdateFederatedCredential(id: $id, attributes: $attributes) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:86eb778bec88542b242c634b49a9073f61d1a6ea3c569519f7ac3281203bdf6f":"mutation DeleteBindingPolicy ($id: ID!) {\n\tdeleteBindingPolicy(id: $id) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:8718a626952dfa0b721c1d528be55eeb633756e86f0222abdabe9c78351e62be":"mutation DeleteMonitor ($id: ID!) {\n\tdeleteMonitor(id: $id) {\n\t\tid\n\t}\n}\n","sha256:891cd1d4fbd8a953702cf2564d83f04e8bc76746d689988b9200ec64b2553336":"mutation RunSentinel ($id: ID!, $overrides: SentinelRunOverrides) {\n\trunSentinel(id: $id, overrides: $overrides) {\n\t\t... SentinelRunFragment\n\t}\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:897d62511eba988b849bd933c4ecb4586c6cf041aa66da4bc33967b3304da588":"mutation DeleteProject ($id: ID!) {\n\tdeleteProject(id: $id) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:8b7e5e13fb971cec713be888b2da40e3dde99b17e1c06fd6ce1b13cfb315d5c7":"mutation CreateDashboard ($attributes: DashboardAttributes!) {\n\tcreateDashboard(attributes: $attributes) {\n\t\t... WorkbenchDashboardFragment\n\t}\n}\nfragment WorkbenchDashboardFragment on WorkbenchDashboard {\n\tid\n\tname\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:8c0caea577e1915120cdd7b5231a7f1a58eb0c339d1aaf024f8aa120902a7442":"mutation CreateClusterBackup ($attributes: BackupAttributes!) {\n\tcreateClusterBackup(attributes: $attributes) {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:8c44743ad7a874271ddb162b00027395262b0ac38d0322a4f09afe48f5c442e2":"mutation UpdateAgentRunAnalysis ($id: ID!, $attributes: AgentAnalysisAttributes!) {\n\tupdateAgentRunAnalysis(id: $id, attributes: $attributes) {\n\t\t... AgentRunBaseFragment\n\t}\n}\nfragment AgentRunBaseFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tmode\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\n","sha256:8ca4f731dfc18a56ba661dcbba9c673f55aee501b263dbf655e67788eefec1eb":"query ListClusterMinimalStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... MinimalStackRunEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment MinimalStackRunEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunMinimalFragment\n\t}\n}\nfragment StackRunMinimalFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\n","sha256:8cf619217195e5c26fdb7262eb2dff9fbddaf4d5fdcaa2a46141f8bcd4b60e24":"query GetWorkbenchDashboard ($id: ID!) {\n\tworkbenchDashboard(id: $id) {\n\t\t... WorkbenchDashboardFragment\n\t}\n}\nfragment WorkbenchDashboardFragment on WorkbenchDashboard {\n\tid\n\tname\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:8d30669f0383e625d9b639af9cf66ccdb9458850496a8cbf656780348b7c7766":"mutation UpdateWorkbenchWebhook ($id: ID!, $attributes: WorkbenchWebhookAttributes!) {\n\tupdateWorkbenchWebhook(id: $id, attributes: $attributes) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:8d31d95b1fa3ae035864ae7aab5e31a31347f5c3a9654ea25237813800fb2c6c":"query GetSentinel ($id: ID!) {\n\tsentinel(id: $id) {\n\t\t... SentinelFragment\n\t}\n}\nfragment SentinelFragment on Sentinel {\n\tid\n\tname\n\tdescription\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:8e8fd8e272f046273e47c808d99bd0dd91b158e3c23175488c07482dc99b3a2b":"mutation UpsertNotificationSink ($attributes: NotificationSinkAttributes!) {\n\tupsertNotificationSink(attributes: $attributes) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:8f12d8cad53529ad1067b2ad72f6dc4ca662168c0268c3bbc027db8f662ef925":"query GetAgentUrl ($id: ID!) {\n\tcluster(id: $id) {\n\t\tagentUrl\n\t}\n}\n","sha256:8fa6f7a3f1ca23ce9e7d886bb84c023f4be92f923d057ce7bd97e95a41e541a0":"query GetDeploymentSettingsMinimal {\n\tdeploymentSettings {\n\t\t... DeploymentSettingsMinimalFragment\n\t}\n}\nfragment DeploymentSettingsMinimalFragment on DeploymentSettings {\n\tagentHelmValues\n\tagentVsn\n}\n","sha256:901e2e68afb969b6cc521cb1f1f3e0d134e6f0f11b9f24dcb288b95cc2a6e39e":"mutation CreateServiceAccount ($attributes: ServiceAccountAttributes!) {\n\tcreateServiceAccount(attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:90314a4b07d2a45508cf458997cf53a19dd5eb958764462f71e43f062128f3db":"query GetMCPServers ($q: String, $first: Int, $after: String, $before: String, $last: Int) {\n\tmcpServers(q: $q, first: $first, after: $after, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... MCPServerFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:910b361b6f8a5a95c6ddfd9d86bbeba38445e6242537e44f8a71f1294a098d31":"mutation UpsertVulnerabilities ($vulnerabilities: [VulnerabilityReportAttributes]) {\n\tupsertVulnerabilities(vulnerabilities: $vulnerabilities)\n}\n","sha256:91104bc566948580b79bda2fc4bf5cac926cf9bf185468a2e32653a9aaef8292":"mutation UpdateCluster ($id: ID!, $attributes: ClusterUpdateAttributes!) {\n\tupdateCluster(id: $id, attributes: $attributes) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9189c9e78cd7eb57a9e67c9b09905683e01f2864e5e49516cac6beeaae44ce28":"query ListObservabilityWebhooks ($after: String, $before: String, $first: Int, $last: Int) {\n\tobservabilityWebhooks(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ObservabilityWebhookFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:921369b1661c3b6001335e7a580e5d3b9e04a2792231cde13dc7b98159790d97":"mutation UpdatePrAutomation ($id: ID!, $attributes: PrAutomationAttributes!) {\n\tupdatePrAutomation(id: $id, attributes: $attributes) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:929cc36181b7f6e09352f8e2776a66a3876c5fdd3ce60ab2637ac4dad4340cc0":"query PagedClusterServicesForAgent ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragmentForAgent\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentEdgeFragmentForAgent on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentForAgent\n\t}\n}\nfragment ServiceDeploymentForAgent on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\ttarball\n\tdeletedAt\n\tdryRun\n\ttemplated\n\tsha\n\tstatus\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tself\n\t\tversion\n\t\tpingedAt\n\t\tmetadata\n\t\ttags {\n\t\t\t... ClusterTags\n\t\t}\n\t\tcurrentVersion\n\t\tkasUrl\n\t\tdistro\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\thelm {\n\t\trelease\n\t\tvaluesFiles\n\t\tvalues\n\t\tignoreHooks\n\t\tignoreCrds\n\t\tluaScript\n\t\tluaFile\n\t\tluaFolder\n\t\tpythonScript\n\t\tpythonFile\n\t\tpythonFolder\n\t\tkustomizePostrender\n\t}\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tcontexts {\n\t\tname\n\t\tconfiguration\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tdeleteNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\trevision {\n\t\tid\n\t}\n\timports {\n\t\tid\n\t\tstack {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\toutputs {\n\t\t\tname\n\t\t\tvalue\n\t\t\tsecret\n\t\t}\n\t}\n\trenderers {\n\t\t... RendererFragment\n\t}\n\tdependencies {\n\t\t... ServiceDependencyFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment RendererFragment on Renderer {\n\tpath\n\ttype\n\thelm {\n\t\t... HelmMinimalFragment\n\t}\n}\nfragment HelmMinimalFragment on HelmMinimal {\n\tvalues\n\tvaluesFiles\n\trelease\n\tignoreHooks\n}\nfragment ServiceDependencyFragment on ServiceDependency {\n\tid\n\tname\n}\n","sha256:930b441c217f098b4a06fe5ee2b3413b71ddfeb7a14fd5a3f34e9eb094cf38c7":"query GetNotificationSinkByName ($name: String) {\n\tnotificationSink(name: $name) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9408ad873dfdbd82d7e41d8dbff8b46185dea3a6f1fa49dec03cd60ebbc1e830":"query GetGroupTiny ($name: String!) {\n\tgroup(name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:945929e80092a3ddfffa063c66ef0f3daaf82409c169e3e7127fafed50a14ab2":"query ListNamespaces ($after: String, $first: Int, $before: String, $last: Int) {\n\tmanagedNamespaces(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ManagedNamespaceEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ManagedNamespaceEdgeFragment on ManagedNamespaceEdge {\n\tcursor\n\tnode {\n\t\t... ManagedNamespaceMinimalFragment\n\t}\n}\nfragment ManagedNamespaceMinimalFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n}\n","sha256:953c6871b8ad6a66454c4be5f93053bbfb913d5da336e4a83e9ba1f702561273":"mutation DeleteUser ($id: ID!) {\n\tdeleteUser(id: $id) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:95f63c044687b9aeb755352caddb8fae1cff74a694a8d44c20c2669e786b4f82":"query ListServiceDeployment ($after: String, $before: String, $last: Int, $clusterId: ID) {\n\tserviceDeployments(after: $after, first: 100, before: $before, last: $last, clusterId: $clusterId) {\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:960457be7108f80ff02c924d123a5a85a8ea8df66a779785b18eb8376f72f525":"mutation DeleteClusterIsoImage ($id: ID!) {\n\tdeleteClusterIsoImage(id: $id) {\n\t\t... ClusterIsoImageFragment\n\t}\n}\nfragment ClusterIsoImageFragment on ClusterIsoImage {\n\tid\n\timage\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tregistry\n\tuser\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:96e9ad521bf896ffa2f2b2b584ef7d8216073289a30bdfe8de3ca0e6241057f1":"mutation UpdateWorkbenchPrompt ($id: ID!, $attributes: WorkbenchPromptAttributes!) {\n\tupdateWorkbenchPrompt(id: $id, attributes: $attributes) {\n\t\tid\n\t}\n}\n","sha256:97134516f2bf93fd448744222727bc2d4b9c4778c529fecc1d68766696fc4ad5":"query GetScmConnection ($id: ID!) {\n\tscmConnection(id: $id) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:980afba6c180a980bcf9a8639972cfe0612f6251116bf78b86442ade3cda51c3":"query GetWorkbenchTiny ($id: ID, $name: String) {\n\tworkbench(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:9827fcdc2ff6a39a12b07c9f580189df66b547435d5077b4348d57534c3981f5":"query TokenExchange ($token: String!) {\n\ttokenExchange(token: $token) {\n\t\t... UserFragment\n\t\tgroups {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\tboundRoles {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:98630448e8dfa27ddc91790290e32ffc4f4ebee749bd1a8f890940c6f637bcb8":"query PagedClusterGateIDs ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterGates(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... PipelineGateIDsEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PipelineGateIDsEdgeFragment on PipelineGateEdge {\n\tnode {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:99c515b3c841d29dd7c06d7a15866725fe3522f0a8d7e6c749ead1e4148bbb58":"query ListAgentRuntimePendingRuns ($id: ID!, $after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuntime(id: $id) {\n\t\tpendingRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\t\tedges {\n\t\t\t\tnode {\n\t\t\t\t\t... AgentRunFragment\n\t\t\t\t}\n\t\t\t}\n\t\t\tpageInfo {\n\t\t\t\t... PageInfoFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:99cf665c8973fc5fbe75bbb8053212dd63bbd38fae367116c111ae69665385fb":"query ListScmConnections ($cursor: String, $before: String, $last: Int) {\n\tscmConnections(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ScmConnectionFragment\n\t\t\t}\n\t\t\tcursor\n\t\t}\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:9a1a0ff9faec767fdd76670f61d6f07e3bfb6f87e38e9f7258337ec4d55ef49c":"query GetServiceDeploymentByHandle ($cluster: String!, $name: String!) {\n\tserviceDeployment(cluster: $cluster, name: $name) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:9c6c086b73a8e8893f47aebd4f4b3fa31e6a323f54e4f49bad3390f41ff55e77":"mutation UpdateProject ($id: ID!, $attributes: ProjectAttributes!) {\n\tupdateProject(id: $id, attributes: $attributes) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:9fb8d63cdb26f2f0c24141600a2e63734c288a3721a76322410265f4f2979d35":"query GetClusterRegistrations ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterRegistrations(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ClusterRegistrationFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:a09067ffa71e8f8b2a7a319ff96f0a79b1e54733cc99029952e2744ebcb93e8d":"mutation CreateGroup ($attributtes: GroupAttributes!) {\n\tcreateGroup(attributes: $attributtes) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:a16b1da2c5e2560270870aa279c534d36db2d0dc8abfb0c21578fc61fc7a6b00":"query ListPrAutomations ($cursor: String, $before: String, $last: Int) {\n\tprAutomations(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... PrAutomationFragment\n\t\t\t}\n\t\t\tcursor\n\t\t}\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:a21b5e44c5251b2393d36641f8e80e67318a9fe5cbd5a5a5010c21ee2deeb985":"mutation DeleteWorkbenchCron ($id: ID!) {\n\tdeleteWorkbenchCron(id: $id) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a334251e65b8ab49ef2c93cf1b71d07822fb6b8f9201095cd5490fd1deab6e8e":"query ListServiceDeployments ($cursor: String, $before: String, $last: Int) {\n\tserviceDeployments(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ServiceDeploymentFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:a44c40a19e2a6fdec2c6ebc9a7d8d85f004466fc628e568ef27a4973c6e4ae38":"mutation GetWorkbenchCron ($id: ID!) {\n\tworkbenchCron(id: $id) {\n\t\t... WorkbenchCronFragment\n\t}\n}\nfragment WorkbenchCronFragment on WorkbenchCron {\n\tid\n\tcrontab\n\tprompt\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a6982b6bb2f74922ef5d6e2368ac42f8a499ad17f16f819a0f64e89b0c20abe0":"mutation DeleteWorkbenchWebhook ($id: ID!) {\n\tdeleteWorkbenchWebhook(id: $id) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:a7c3ab7455fa73c5f0171b092aafbfee2c47186ef1e6053d5ba99e5b264b4b16":"query GetCatalog ($id: ID, $name: String) {\n\tcatalog(id: $id, name: $name) {\n\t\t... CatalogFragment\n\t}\n}\nfragment CatalogFragment on Catalog {\n\tid\n\tname\n\tdescription\n\tcategory\n\tauthor\n\tproject {\n\t\t... ProjectFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:a84f8942424abe644392066d12e351e0835027df1720d80bfa24f202b38a9dfd":"query GetNamespace ($id: ID!) {\n\tmanagedNamespace(id: $id) {\n\t\t... ManagedNamespaceFragment\n\t}\n}\nfragment ManagedNamespaceFragment on ManagedNamespace {\n\tid\n\tname\n\tdescription\n\tlabels\n\tannotations\n\tpullSecrets\n\tservice {\n\t\t... ServiceTemplateFragment\n\t}\n\ttarget {\n\t\t... ClusterTargetFragment\n\t}\n\tdeletedAt\n}\nfragment ServiceTemplateFragment on ServiceTemplate {\n\tname\n\tnamespace\n\ttemplated\n\trepositoryId\n\tcontexts\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tsyncConfig {\n\t\t... SyncConfigFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment SyncConfigFragment on SyncConfig {\n\tcreateNamespace\n\tnamespaceMetadata {\n\t\t... NamespaceMetadataFragment\n\t}\n}\nfragment NamespaceMetadataFragment on NamespaceMetadata {\n\tlabels\n\tannotations\n}\nfragment ClusterTargetFragment on ClusterTarget {\n\ttags\n\tdistro\n}\n","sha256:a8ce65444a9c0e953ccc22260b021bf84771782d619f4d9f940867bdaf01d9df":"mutation DeleteStack ($id: ID!) {\n\tdeleteStack(id: $id) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:a91f084bbbd85931d0e231c6caf2d1280b97dd1f9c7a1fb574192f3710106563":"mutation UpsertHelmRepository ($url: String!, $attributes: HelmRepositoryAttributes) {\n\tupsertHelmRepository(url: $url, attributes: $attributes) {\n\t\t... HelmRepositoryFragment\n\t}\n}\nfragment HelmRepositoryFragment on HelmRepository {\n\tid\n\tinsertedAt\n\tupdatedAt\n\turl\n\tprovider\n\thealth\n}\n","sha256:a929072c59cbb7e762fec990adb41cf6cf80c06d00bbd0caa372f6bd4661b053":"query GetClusterWithToken ($id: ID, $handle: String) {\n\tcluster(id: $id, handle: $handle) {\n\t\t... ClusterFragment\n\t\tdeployToken\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:a9481fbef0ee5faac5f98ff86f1fcc351aef26a41e52daf22428135a715824b1":"query PagedClusterGates ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterGates(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... PipelineGateEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment PipelineGateEdgeFragment on PipelineGateEdge {\n\tnode {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:aa077f5ef1fd98bb3909a063b4f4f6d722ee4355e2006aa48a80a5a3f34a988d":"mutation DeleteScmConnection ($id: ID!) {\n\tdeleteScmConnection(id: $id) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:aa987069b6edaf93d75eb44ab52356a7374b4ea4669b503729dc5209e4ba85e2":"query GetServiceDeploymentComponents ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\tid\n\t\tcomponents {\n\t\t\tkind\n\t\t\tstate\n\t\t}\n\t}\n}\n","sha256:abd3ae6e1fb895e3c792f77c5ec324b372ffc85abb94f26772455a98f547ef0a":"mutation UpdateScmConnection ($id: ID!, $attributes: ScmConnectionAttributes!) {\n\tupdateScmConnection(id: $id, attributes: $attributes) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:acdaf678c528e8bf7724301610dd4dd6304314c59d436e8e5452073068a143fc":"mutation DeleteGlobalService ($id: ID!) {\n\tdeleteGlobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:ad10097393ee33916a9be2804e6c786bb8f42679e64049dcf17eb8dd2cf79ef1":"query PagedClusterServiceIds ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentIdEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentIdEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentIdFragment\n\t}\n}\nfragment ServiceDeploymentIdFragment on ServiceDeployment {\n\tid\n}\n","sha256:af037c14ab732c3150f56513fcdbf6187c36457b52c13b05928e9dea542d3f97":"query GetProject ($id: ID, $name: String) {\n\tproject(id: $id, name: $name) {\n\t\t... ProjectFragment\n\t}\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:aff1e211314f3b4f2795d03b2a40b9302661e9b92c8cc49c6c46c2758274c875":"mutation UpdateWorkbench ($id: ID!, $attributes: WorkbenchAttributes!) {\n\tupdateWorkbench(id: $id, attributes: $attributes) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b0c7d62eece94e065f18516cf7006281428f4ff44ecd903fb3fbcf334d99deac":"mutation CreateQueuedPrompt ($jobId: ID!, $attributes: QueuedPromptAttributes!) {\n\tcreateQueuedPrompt(jobId: $jobId, attributes: $attributes) {\n\t\t... QueuedPromptFragment\n\t}\n}\nfragment QueuedPromptFragment on QueuedPrompt {\n\tid\n\tprompt\n\tdequeableAt\n\tworkbenchJob {\n\t\tid\n\t}\n\tuser {\n\t\tid\n\t}\n}\n","sha256:b220576f4e2238111c178658b7e3e11c7a2fc482e1d1145c94aab213f2595242":"mutation DeleteGroupMember ($userId: ID!, $groupId: ID!) {\n\tdeleteGroupMember(userId: $userId, groupId: $groupId) {\n\t\t... GroupMemberFragment\n\t}\n}\nfragment GroupMemberFragment on GroupMember {\n\tid\n\tuser {\n\t\tid\n\t}\n\tgroup {\n\t\tid\n\t}\n}\n","sha256:b344029ffce5a39a293ead846a55b56059495641da56fe8b536d4e12f9b22b71":"query GetWorkbench ($id: ID, $name: String) {\n\tworkbench(id: $id, name: $name) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b3c5a853563920b74b4e2d1687e851e198d53c61d2d42df5642261d732841cc6":"mutation DeletePolicy ($id: ID!) {\n\tdeletePolicy(id: $id) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:b48053dac3c5ecd9ab8e99a7f29f52b25c13f7f191203637fb43f1833a30d335":"query ListServiceDeploymentByHandle ($after: String, $before: String, $last: Int, $cluster: String) {\n\tserviceDeployments(after: $after, first: 100, before: $before, last: $last, cluster: $cluster) {\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n","sha256:b5aade690f9187a9eb7b67156c989946e1f652356238ffb859cf67c002dd5b20":"query GetServiceDeploymentForAgent ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\t... ServiceDeploymentForAgent\n\t}\n}\nfragment ServiceDeploymentForAgent on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\ttarball\n\tdeletedAt\n\tdryRun\n\ttemplated\n\tsha\n\tstatus\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tself\n\t\tversion\n\t\tpingedAt\n\t\tmetadata\n\t\ttags {\n\t\t\t... ClusterTags\n\t\t}\n\t\tcurrentVersion\n\t\tkasUrl\n\t\tdistro\n\t}\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\thelm {\n\t\trelease\n\t\tvaluesFiles\n\t\tvalues\n\t\tignoreHooks\n\t\tignoreCrds\n\t\tluaScript\n\t\tluaFile\n\t\tluaFolder\n\t\tpythonScript\n\t\tpythonFile\n\t\tpythonFolder\n\t\tkustomizePostrender\n\t}\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tcontexts {\n\t\tname\n\t\tconfiguration\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tdeleteNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\trevision {\n\t\tid\n\t}\n\timports {\n\t\tid\n\t\tstack {\n\t\t\tid\n\t\t\tname\n\t\t}\n\t\toutputs {\n\t\t\tname\n\t\t\tvalue\n\t\t\tsecret\n\t\t}\n\t}\n\trenderers {\n\t\t... RendererFragment\n\t}\n\tdependencies {\n\t\t... ServiceDependencyFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment RendererFragment on Renderer {\n\tpath\n\ttype\n\thelm {\n\t\t... HelmMinimalFragment\n\t}\n}\nfragment HelmMinimalFragment on HelmMinimal {\n\tvalues\n\tvaluesFiles\n\trelease\n\tignoreHooks\n}\nfragment ServiceDependencyFragment on ServiceDependency {\n\tid\n\tname\n}\n","sha256:b6344198b643d2b030241e4ba06a7a808511584a5ddc52dabbbcc1b896c989ff":"mutation CloneServiceDeploymentWithHandle ($clusterId: ID!, $cluster: String!, $name: String!, $attributes: ServiceCloneAttributes!) {\n\tcloneService(clusterId: $clusterId, cluster: $cluster, name: $name, attributes: $attributes) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:b640b4ec159932cdb9519e0edba90585ba6552f8637f5a3136ecca8c7c4b33c5":"query ListClusters ($cursor: String, $before: String, $last: Int) {\n\tclusters(after: $cursor, first: 100, before: $before, last: $last) {\n\t\tedges {\n\t\t\t... ClusterEdgeFragment\n\t\t}\n\t}\n}\nfragment ClusterEdgeFragment on ClusterEdge {\n\tnode {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b6bb1e90c1b8586144c0060e4b38c1d76124d80c3d4ae2d7b1f6ada4251afedf":"mutation UpdateServiceDeployment ($id: ID!, $attributes: ServiceUpdateAttributes!) {\n\tupdateServiceDeployment(id: $id, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:b77c4291ae27a7349ae24c8c3963ce23ff5daed32c51eb1275dbccd1df6fcbe1":"query GetObservabilityProvider ($id: ID, $name: String) {\n\tobservabilityProvider(id: $id, name: $name) {\n\t\t... ObservabilityProviderFragment\n\t}\n}\nfragment ObservabilityProviderFragment on ObservabilityProvider {\n\tid\n\tname\n\ttype\n\tupdatedAt\n\tinsertedAt\n}\n","sha256:b80a7faf4eee40b6c3823963dcf3614aa12035c3da6b317cb8208ccc4f6ac8b7":"query GetPrAutomationByName ($name: String!) {\n\tprAutomation(name: $name) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:b83ec626d13be86492db9fd86946d48b92e7e29239c0ff5600ac0e6006109e5c":"mutation CreateProviderCredential ($attributes: ProviderCredentialAttributes!, $name: String!) {\n\tcreateProviderCredential(attributes: $attributes, name: $name) {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:b87afc4a88b126bb018cbdee0a2d9f5c3552d1a2d9b032cdd1875023c2680da4":"mutation DeleteComplianceReportGenerator ($id: ID!) {\n\tdeleteComplianceReportGenerator(id: $id) {\n\t\t... ComplianceReportGeneratorFragment\n\t}\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:b88dad5dbf1911bf14fc349f8f14568b3cea7b12079ba4f50b80360a8a05d063":"mutation CreateGlobalServiceDeployment ($serviceId: ID!, $attributes: GlobalServiceAttributes!) {\n\tcreateGlobalService(serviceId: $serviceId, attributes: $attributes) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:b92d34e46bb45d51af62431f19f46a643594ab8d2ace6ee0cdd7d2f9076c4116":"mutation UpsertPolicyConstraints ($constraints: [PolicyConstraintAttributes!]) {\n\tupsertPolicyConstraints(constraints: $constraints)\n}\n","sha256:b93ae4d17a11b60381e132d78df0ec8d9431bbf834517cc47ab74f83c7ef87aa":"mutation CreateServiceAccountToken ($id: ID!, $scopes: [ScopeAttributes], $expiry: String) {\n\tcreateServiceAccountToken(id: $id, scopes: $scopes, expiry: $expiry) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:b97ad5c22e824cb03ea1120d22df72eb1a45c6e18b82b399000786edf1fb6635":"mutation DeleteSentinel ($id: ID!) {\n\tdeleteSentinel(id: $id) {\n\t\tid\n\t}\n}\n","sha256:babd1fcf26e7e8d1243a3f92bb3135de93cd73b0bb5d4e28e40bd650bcbdfd1d":"query GetWorkbenchPrompt ($id: ID!) {\n\tworkbenchPrompt(id: $id) {\n\t\t... WorkbenchPromptFragment\n\t}\n}\nfragment WorkbenchPromptFragment on WorkbenchPrompt {\n\tid\n\ttitle\n\tcategory\n\tprompt\n}\n","sha256:bb41a2b83ff40ea0e043a1edace47470f4c97a1b20b95d0c8b862e85ce5ad54f":"query GetUser ($email: String!) {\n\tuser(email: $email) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:bcaa00aae81a591bfbc55c97d7d7fab286def9d56608d84929c4e948dbea70da":"mutation CreateClusterRegistration ($attributes: ClusterRegistrationCreateAttributes!) {\n\tcreateClusterRegistration(attributes: $attributes) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:be6f160416467f5e1c4f5f50a1549a66bbc8069b3b54836348e3be3507cdc897":"query GetPrGovernance ($id: ID, $name: String) {\n\tprGovernance(id: $id, name: $name) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:becbe7cfde6f4a45472afa3838782c007a7ca917e38ba1c6e9994f66543401c1":"mutation UpdateStackRunStep ($id: ID!, $attributes: RunStepAttributes!) {\n\tupdateRunStep(id: $id, attributes: $attributes) {\n\t\t... RunStepFragment\n\t}\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\n","sha256:bef364b9855a0f6ff2adb5d11c887b240e54f9ccad79cf8cb5a687a5f01fe216":"query ListProjects ($after: String, $before: String, $first: Int, $last: Int, $q: String) {\n\tprojects(after: $after, before: $before, first: $first, last: $last, q: $q) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ProjectFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:bfaf5cbd07eaa142e0d849d06d5e5b453aa32d0c6eeace81fa1933d76650e234":"mutation CreateClusterRestore ($backupId: ID!) {\n\tcreateClusterRestore(backupId: $backupId) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:bfb0af0255fcb8a8df9b9a92adc450dc9d7b73aecfb9d984041d36741ab28357":"query GetPolicyTiny ($id: ID, $name: String) {\n\tpolicy(id: $id, name: $name) {\n\t\t... TinyPolicyFragment\n\t}\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:c064e0789ac325d358976a1f68ae61f2d0fd196ac6452d2a0d89e14dc0a8f106":"mutation updateServiceComponents ($id: ID!, $components: [ComponentAttributes], $revisionId: ID!, $sha: String, $errors: [ServiceErrorAttributes], $metadata: ServiceMetadataAttributes) {\n\tupdateServiceComponents(id: $id, components: $components, revisionId: $revisionId, sha: $sha, errors: $errors, metadata: $metadata) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:c09faa203ac4b24e71309d89522aeb52d09256d884896870c257c57940b352ae":"mutation CreateAccessToken {\n\tcreateAccessToken {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:c0b9e33345dc718f8fb3c28711b5694a0b0e04be77e9faf13094cbecb500eeab":"mutation UpsertPreviewEnvironmentTemplate ($attributes: PreviewEnvironmentTemplateAttributes!) {\n\tupsertPreviewEnvironmentTemplate(attributes: $attributes) {\n\t\t... PreviewEnvironmentTemplateFragment\n\t}\n}\nfragment PreviewEnvironmentTemplateFragment on PreviewEnvironmentTemplate {\n\tid\n\tname\n\tcommentTemplate\n\tflow {\n\t\tid\n\t}\n\tconnection {\n\t\tid\n\t}\n\ttemplate {\n\t\tname\n\t}\n}\n","sha256:c115b884fcc5aa8a05486db11aec7c66d51336be00dbcb79b14276e983bcf4c4":"mutation UpsertCustomCompatibilityMatrix ($attributes: CustomCompatibilityMatrixAttributes!) {\n\tupsertCustomCompatibilityMatrix(attributes: $attributes) {\n\t\t... CustomCompatibilityMatrixFragment\n\t}\n}\nfragment CustomCompatibilityMatrixFragment on CustomCompatibilityMatrix {\n\tid\n\tname\n}\n","sha256:c1cd732253ebdf1c807451b3cf00bed2497fddd70b94dc26115e51be4f20de65":"mutation DeleteNamespace ($id: ID!) {\n\tdeleteManagedNamespace(id: $id) {\n\t\tid\n\t}\n}\n","sha256:c233e6f7b150960c88d30f2bbebdaa5cb184e1d973b4d57add138eae8b439a99":"query GetStackDefinition ($id: ID!) {\n\tstackDefinition(id: $id) {\n\t\t... StackDefinitionFragment\n\t}\n}\nfragment StackDefinitionFragment on StackDefinition {\n\tid\n\tname\n\tdescription\n\tinsertedAt\n\tupdatedAt\n\tconfiguration {\n\t\timage\n\t\ttag\n\t\tversion\n\t\thooks {\n\t\t\tcmd\n\t\t\targs\n\t\t\tafterStage\n\t\t}\n\t}\n\tsteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n\tdeleteSteps {\n\t\tcmd\n\t\targs\n\t\tstage\n\t\trequireApproval\n\t}\n}\n","sha256:c33f34d45c517bb9de74e17503e1955925c8ae908a2c6f3e1f8937cdc5494736":"mutation DeleteNotificationSink ($id: ID!) {\n\tdeleteNotificationSink(id: $id) {\n\t\t... NotificationSinkFragment\n\t}\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:c361daaf8af4e815cd5037cfca3508c99c82d5d13efeea7be74df0aa0a4a4086":"mutation DeleteScmWebhook ($id: ID!) {\n\tdeleteScmWebhook(id: $id) {\n\t\t... ScmWebhookFragment\n\t}\n}\nfragment ScmWebhookFragment on ScmWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\towner\n\ttype\n\turl\n}\n","sha256:c3e1711d5f843ae701bc44bd0ec9a83709e9b97495bd569a45482d64029eba0b":"mutation CreatePersona ($attributes: PersonaAttributes!) {\n\tcreatePersona(attributes: $attributes) {\n\t\t... PersonaFragment\n\t}\n}\nfragment PersonaFragment on Persona {\n\tid\n\tname\n\tdescription\n\tconfiguration {\n\t\t... PersonaConfigurationFragment\n\t}\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PersonaConfigurationFragment on PersonaConfiguration {\n\tall\n\tdeployments {\n\t\taddOns\n\t\tclusters\n\t\tpipelines\n\t\tproviders\n\t\trepositories\n\t\tservices\n\t}\n\thome {\n\t\tmanager\n\t\tsecurity\n\t}\n\tflows {\n\t\tpermissions\n\t\tstartWorkbenchJob\n\t\tpipelines\n\t\tpreviews\n\t\tworkbenches\n\t}\n\tsidebar {\n\t\taudits\n\t\tflows\n\t\tkubernetes\n\t\tpullRequests\n\t\tsettings\n\t\tbackups\n\t\tstacks\n\t\tworkbenches\n\t\tcd\n\t\tai\n\t}\n\tsettings {\n\t\taccessTokens\n\t\tai\n\t\taudits\n\t\tchatbots\n\t\tcloudConnections\n\t\tglobal\n\t\tnotifications\n\t\tprojects\n\t\tuserManagement\n\t\twebhooks\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:c4d1d8e2c7cc145562d0347c03a7e8d55ffa769b5c86fc0bf62e5a437a5c7705":"query GetScmConnectionTiny ($id: ID, $name: String) {\n\tscmConnection(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:c59085c3cc9fc0cdf5fdab1ad6426d70cad3c18d61e8099408b0f729ff7896a0":"query GetGroup ($name: String!) {\n\tgroup(name: $name) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:c648bed210879433e880936999a0177cfed858de16ae630b4d28fdf328e5ba8c":"query ListClusterStackIds ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... StackRunIdEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunIdEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:c6e7aaf82961c3a494e7dad20a5034cb38d7b6c7f7d314ede07872165c9514c2":"mutation CreateServiceDeployment ($clusterId: ID!, $attributes: ServiceDeploymentAttributes!) {\n\tcreateServiceDeployment(clusterId: $clusterId, attributes: $attributes) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:c8e0fc5503578fcfd182a285f270117143fea26d5788ae339ea658d7824ead7a":"query GetStackRunApprovedAt ($id: ID!) {\n\tstackRun(id: $id) {\n\t\tapprovedAt\n\t}\n}\n","sha256:c8e4277ef08029190490500c4713ee3efdb9cbd85fe2afa0ab64c9fde367c4c8":"mutation CreateWorkbenchWebhook ($workbenchId: ID!, $attributes: WorkbenchWebhookAttributes!) {\n\tcreateWorkbenchWebhook(workbenchId: $workbenchId, attributes: $attributes) {\n\t\t... WorkbenchWebhookFragment\n\t}\n}\nfragment WorkbenchWebhookFragment on WorkbenchWebhook {\n\tid\n\tname\n\tprompt\n\tpriority\n\tmatches {\n\t\tregex\n\t\tsubstring\n\t\tcaseInsensitive\n\t}\n\twebhook {\n\t\tid\n\t\tname\n\t}\n\tissueWebhook {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:c9d7d1433d0b7c8a13ee3f48b79dc7ca7d2fbe3fbc95a59605bc4bcb6105be48":"query GetPipelines ($after: String) {\n\tpipelines(first: 100, after: $after) {\n\t\tedges {\n\t\t\t... PipelineEdgeFragment\n\t\t}\n\t}\n}\nfragment PipelineEdgeFragment on PipelineEdge {\n\tnode {\n\t\t... PipelineFragment\n\t}\n}\nfragment PipelineFragment on Pipeline {\n\tid\n\tname\n\tstages {\n\t\t... PipelineStageFragment\n\t}\n\tedges {\n\t\t... PipelineStageEdgeFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment PipelineStageFragment on PipelineStage {\n\tid\n\tname\n\tservices {\n\t\tservice {\n\t\t\t... ServiceDeploymentBaseFragment\n\t\t}\n\t\tcriteria {\n\t\t\tsource {\n\t\t\t\t... ServiceDeploymentBaseFragment\n\t\t\t}\n\t\t\tsecrets\n\t\t}\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PipelineStageEdgeFragment on PipelineStageEdge {\n\tid\n\tfrom {\n\t\t... PipelineStageFragment\n\t}\n\tto {\n\t\t... PipelineStageFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:cb1a08aa627034f757f578e60b19cdf3d86cb6d07d0e092665994437fd3b0c8c":"query GetAgentRuntimeByName ($name: String!, $clusterId: ID!) {\n\tagentRuntime(name: $name, clusterId: $clusterId) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:cb23898da395a1259a3eea1069486d08bdd398b8e19ab7767f479516394fb545":"mutation IngestClusterCost ($costs: CostIngestAttributes!) {\n\tingestClusterCost(costs: $costs)\n}\n","sha256:cbf979fbb7271eae49c77cfe27cf45f05476150dbf4d2de0e43a6baed1fbbf9f":"mutation CreateCustomStackRun ($attributes: CustomStackRunAttributes!) {\n\tcreateCustomStackRun(attributes: $attributes) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:cc08cadc82120a6a12d6a9e28a2007ace57f62e3465b57fea3d35762c18dee95":"mutation CreateMonitor ($attributes: MonitorAttributes!) {\n\tcreateMonitor(attributes: $attributes) {\n\t\t... MonitorFragment\n\t}\n}\nfragment MonitorFragment on Monitor {\n\tid\n\tname\n\tservice {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:cc23c54f364f7fc86b1677d8f80d5f90f66bb7dbb52aa56ac2ca9505602f7c63":"mutation ApproveStackRun ($id: ID!) {\n\tapproveStackRun(id: $id) {\n\t\t... StackRunIdFragment\n\t}\n}\nfragment StackRunIdFragment on StackRun {\n\tid\n}\n","sha256:cc4284d27cd80dffc23f9a8b628e071a091bf13b1e8a75c1a628b487c92ea8c8":"mutation DeleteGroup ($groupId: ID!) {\n\tdeleteGroup(groupId: $groupId) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:cc42a4ba14d88488b304966f6db6111e774264487956c89be92e2ce5a1f825d8":"query ListWorkbenchTools ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tworkbenchTools(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... WorkbenchToolFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:cd777b75a96e3400c0bdd6a75f4e63860fb1019c20082c6509d7a8a9179d2947":"query GetInfrastructureStackStatus ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackStatusFragment\n\t}\n}\nfragment InfrastructureStackStatusFragment on InfrastructureStack {\n\tstatus\n}\n","sha256:cf8c42483cecc603b29f28f8c4f4f0fc9cba008aa0ae2228ba85683ddb71c31c":"query GetUserTiny ($email: String!) {\n\tuser(email: $email) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:d01f1dfce890bf9e3a0d22035b5922171221489529107499141f91ab91b429ae":"query GetMonitor ($id: ID!) {\n\tmonitor(id: $id) {\n\t\t... MonitorFragment\n\t}\n}\nfragment MonitorFragment on Monitor {\n\tid\n\tname\n\tservice {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:d0243f65b29d1f4a3dc0fc341329bd64771a81b61027b49b5c657638fc12d993":"mutation DetachStack ($id: ID!) {\n\tdetachStack(id: $id) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:d0deff4a75c0315f913f84dcd0babf240d3dd12dc7b753f6796ac081b4b10b6c":"query ListAgentRunsMinimal ($after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRunMinimalFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRunMinimalFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\truntime {\n\t\ttype\n\t}\n\tpullRequests {\n\t\tid\n\t\tstatus\n\t\turl\n\t\ttitle\n\t\tref\n\t}\n\tupload {\n\t\tsession\n\t\tpatch\n\t\tscreenRecording\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:d17fdd1f3585dbb5fe41795aa0f06da222848b52ad30ef0827bc0eb968fc3c68":"mutation DeleteGlobalServiceDeployment ($id: ID!) {\n\tdeleteGlobalService(id: $id) {\n\t\t... GlobalServiceFragment\n\t}\n}\nfragment GlobalServiceFragment on GlobalService {\n\tid\n\tname\n\tdistro\n\tprovider {\n\t\tid\n\t}\n\tservice {\n\t\tid\n\t}\n\ttags {\n\t\t... ClusterTags\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:d1b43ea072acd70d56e7e3637eb05a13b854defd61c46d3f03cac4c831be0df4":"mutation UpsertPrGovernance ($attributes: PrGovernanceAttributes!) {\n\tupsertPrGovernance(attributes: $attributes) {\n\t\t... PrGovernanceFragment\n\t}\n}\nfragment PrGovernanceFragment on PrGovernance {\n\tid\n\tname\n}\n","sha256:d212c3e56c32e78aa75561817cfa4aa18d96b3f7ef6b60e363dfdd864b78bbc4":"mutation PingCluster ($attributes: ClusterPing!) {\n\tpingCluster(attributes: $attributes) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:d37c4e4d20689e9ff322abbb478c77fc9a8aec7b995b68617d3401d1f123b39b":"mutation CreateScmConnection ($attributes: ScmConnectionAttributes!) {\n\tcreateScmConnection(attributes: $attributes) {\n\t\t... ScmConnectionFragment\n\t}\n}\nfragment ScmConnectionFragment on ScmConnection {\n\tid\n\tname\n\tapiUrl\n\tbaseUrl\n\ttype\n\tusername\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:d5f1c35ebe2aa909ebaf89248f6120c9fbe9b6b991bc615ae72c786bbc519892":"mutation DeleteWorkbench ($id: ID!) {\n\tdeleteWorkbench(id: $id) {\n\t\t... WorkbenchFragment\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:d666f635df84ed6a6c279cd0f46a5ede9d26b15ec7aac618a0d96fb731fb7dda":"query GetAccessToken ($id: ID!) {\n\taccessToken(id: $id) {\n\t\t... AccessTokenFragment\n\t}\n}\nfragment AccessTokenFragment on AccessToken {\n\tid\n\ttoken\n}\n","sha256:d7a398fe4bbf2a5f798ff3b3cc4b219587eeb27f422f3afb15c9621926dcb1e4":"mutation DeleteClusterProvider ($id: ID!) {\n\tdeleteClusterProvider(id: $id) {\n\t\t... ClusterProviderFragment\n\t}\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:d7d71625718364b0b47e0f2fcacf1411f6ce8f1a5f8d5368133b7c28ee931c2d":"query GetClusterRegistration ($id: ID, $machineId: String) {\n\tclusterRegistration(id: $id, machineId: $machineId) {\n\t\t... ClusterRegistrationFragment\n\t}\n}\nfragment ClusterRegistrationFragment on ClusterRegistration {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tmachineId\n\tname\n\thandle\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcreator {\n\t\t... UserFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:d9d6a609a379b3b6ba578167a4b9218c222ffede1152770c7df98cd5558bdb57":"mutation AgentPrReview ($runId: ID!, $attributes: AgentPrReviewAttributes!) {\n\tagentPrReview(runId: $runId, attributes: $attributes) {\n\t\t... PullRequestFragment\n\t}\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\n","sha256:da49a26dea358a0bd0fbe7d5293211ce6a6264208cd6a62c06f3fbbecda3d907":"query ListClusterStacks ($after: String, $first: Int, $before: String, $last: Int) {\n\tclusterStackRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... StackRunEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment StackRunEdgeFragment on StackRunEdge {\n\tnode {\n\t\t... StackRunFragment\n\t}\n}\nfragment StackRunFragment on StackRun {\n\tid\n\ttype\n\tstatus\n\tapproval\n\tapprovedAt\n\ttarball\n\tworkdir\n\tmanageState\n\tvariables\n\tdryRun\n\tstateUrls {\n\t\tterraform {\n\t\t\taddress\n\t\t\tlock\n\t\t\tunlock\n\t\t}\n\t}\n\tpluralCreds {\n\t\turl\n\t\ttoken\n\t}\n\tactor {\n\t\t... UserFragment\n\t}\n\tstack {\n\t\t... InfrastructureStackFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\tsteps {\n\t\t... RunStepFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\terrors {\n\t\t... ServiceErrorFragment\n\t}\n\tviolations {\n\t\t... StackPolicyViolationFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n\tapprover {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\nfragment RunStepFragment on RunStep {\n\tid\n\tstatus\n\tstage\n\tname\n\tcmd\n\targs\n\trequireApproval\n\tindex\n}\nfragment ServiceErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment StackPolicyViolationFragment on StackPolicyViolation {\n\tid\n\ttitle\n\tdescription\n\tpolicyId\n\tpolicyModule\n\tpolicyUrl\n\tseverity\n\tresolution\n\tcauses {\n\t\t... StackViolationCauseFragment\n\t}\n}\nfragment StackViolationCauseFragment on StackViolationCause {\n\tstart\n\tend\n\tresource\n\tfilename\n\tlines {\n\t\t... StackViolationCauseLineFragment\n\t}\n}\nfragment StackViolationCauseLineFragment on StackViolationCauseLine {\n\tfirst\n\tlast\n\tcontent\n\tline\n}\n","sha256:da61f9d23f2bb33137008e58f123fe876dd8b1313e9e4c9bcde20a36f0af2026":"mutation UpdateClusterRestore ($id: ID!, $attributes: RestoreAttributes!) {\n\tupdateClusterRestore(id: $id, attributes: $attributes) {\n\t\t... ClusterRestoreFragment\n\t}\n}\nfragment ClusterRestoreFragment on ClusterRestore {\n\tid\n\tstatus\n\tbackup {\n\t\t... ClusterBackupFragment\n\t}\n}\nfragment ClusterBackupFragment on ClusterBackup {\n\tid\n\tname\n\tcluster {\n\t\tid\n\t}\n\tgarbageCollected\n}\n","sha256:da7c309e7952dd39dd8aff2fb5caff9e91fd9b874fd67a885a8fa9919c56f922":"query GetFederatedCredential ($id: ID!) {\n\tfederatedCredential(id: $id) {\n\t\t... FederatedCredentialFragment\n\t}\n}\nfragment FederatedCredentialFragment on FederatedCredential {\n\tid\n\tclaimsLike\n\tissuer\n\tscopes\n\tinsertedAt\n\tupdatedAt\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n}\n","sha256:db848743beb32ccf52efc157a7df4acd0e6f68d1b66b1563f014a7aa5b503794":"mutation CreateWorkbenchTool ($attributes: WorkbenchToolAttributes!) {\n\tcreateWorkbenchTool(attributes: $attributes) {\n\t\t... WorkbenchToolFragment\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:dd43f3ef75185258586ab4bb1b086ed6a2703f09a5e439ea3f4a7cda94429d74":"mutation UpdateCustomStackRun ($id: ID!, $attributes: CustomStackRunAttributes!) {\n\tupdateCustomStackRun(id: $id, attributes: $attributes) {\n\t\t... CustomStackRunFragment\n\t}\n}\nfragment CustomStackRunFragment on CustomStackRun {\n\tid\n\tname\n\tstack {\n\t\tid\n\t}\n\tdocumentation\n\tcommands {\n\t\t... StackCommandFragment\n\t}\n\tconfiguration {\n\t\t... PrConfigurationFragment\n\t}\n}\nfragment StackCommandFragment on StackCommand {\n\tcmd\n\targs\n\tdir\n}\nfragment PrConfigurationFragment on PrConfiguration {\n\ttype\n\tname\n\tdefault\n\tdocumentation\n\tlongform\n\tplaceholder\n\toptional\n\tcondition {\n\t\t... PrConfigurationConditionFragment\n\t}\n}\nfragment PrConfigurationConditionFragment on PrConfigurationCondition {\n\toperation\n\tfield\n\tvalue\n}\n","sha256:df1a376b62fbd1450e92d22cb75ad7ee44d7f03f99bfb7d5c0e9d899ed428b22":"mutation DeleteFlow ($id: ID!) {\n\tdeleteFlow(id: $id) {\n\t\tid\n\t}\n}\n","sha256:e00dac57c9bbde70847c095096e903c6b33b62d4e20bc848a5996649ed738826":"query GetServiceDeployment ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:e12171fbbb1ccefe73589f2b19ea00806a6d8a4ef0be04692110bfcd18587456":"mutation UpdateRbac ($rbac: RbacAttributes!, $serviceId: ID, $clusterId: ID, $providerId: ID) {\n\tupdateRbac(rbac: $rbac, serviceId: $serviceId, clusterId: $clusterId, providerId: $providerId)\n}\n","sha256:e27ca39ee8eb28a862e929edec0abee9fe56d69adebdbe7d59fed7e2f4c106f9":"mutation UpdateMonitor ($id: ID!, $attributes: MonitorAttributes!) {\n\tupdateMonitor(id: $id, attributes: $attributes) {\n\t\t... MonitorFragment\n\t}\n}\nfragment MonitorFragment on Monitor {\n\tid\n\tname\n\tservice {\n\t\tid\n\t\tname\n\t}\n\tworkbench {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:e2d945757a488df65767d201a8b1b87d4485fe2e48cf16478979b6f4c5cd9a20":"mutation AddServiceError ($id: ID!, $errors: [ServiceErrorAttributes]) {\n\tupdateServiceComponents(id: $id, errors: $errors) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:e44cf2898da342dcf07148d3868d094a0dd29e5579d25257d5be9c1f0f05489a":"query GetSentinelRunJob ($id: ID!) {\n\tsentinelRunJob(id: $id) {\n\t\t... SentinelRunJobFragment\n\t}\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e59e52086eae818a70aac84cb1c4d4ac1e23135482a8444db2155af8bf60a789":"mutation UpdateServiceAccount ($id: ID!, $attributes: ServiceAccountAttributes!) {\n\tupdateServiceAccount(id: $id, attributes: $attributes) {\n\t\t... UserFragment\n\t}\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:e5c3c0029872eee1c6e1cdd984869fe9a4b27eca35ea11c05567ae7561df3519":"query ListComplianceReportGenerators ($after: String, $before: String, $first: Int, $last: Int) {\n\tcomplianceReportGenerators(after: $after, before: $before, first: $first, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... ComplianceReportGeneratorFragment\n\t\t\t}\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ComplianceReportGeneratorFragment on ComplianceReportGenerator {\n\tid\n\tname\n\tformat\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:e5f970f2b0557a81ab6348adfc94a898956ea5f945ac0bd067ebc465a588a25e":"mutation UpdateSentinelRunJobStatus ($id: ID!, $attributes: SentinelRunJobUpdateAttributes) {\n\tupdateSentinelRunJob(id: $id, attributes: $attributes) {\n\t\t... SentinelRunJobFragment\n\t}\n}\nfragment SentinelRunJobFragment on SentinelRunJob {\n\tid\n\tcheck\n\tstatus\n\tformat\n\tusesGit\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\treference {\n\t\tname\n\t\tnamespace\n\t}\n\tsentinelRun {\n\t\t... SentinelRunFragment\n\t}\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t\tdistro\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e64a2264b1a894d3db35c700efe1e5b72103efab97275077b7184600bb81b4ec":"query GetServiceDeploymentTiny ($id: ID!) {\n\tserviceDeployment(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:e81829a6508fe6b8fb4e8d0e7b4180772c5ebff701a3011e1ce4a365cdcea6c5":"query GetSentinelRun ($id: ID!) {\n\tsentinelRun(id: $id) {\n\t\t... SentinelRunFragment\n\t}\n}\nfragment SentinelRunFragment on SentinelRun {\n\tid\n\tstatus\n\tsentinel {\n\t\tid\n\t}\n\tchecks {\n\t\t... SentinelCheckFragment\n\t}\n}\nfragment SentinelCheckFragment on SentinelCheck {\n\tid\n\tname\n\ttype\n\truleFile\n\tconfiguration {\n\t\t... SentinelCheckConfigurationFragment\n\t}\n}\nfragment SentinelCheckConfigurationFragment on SentinelCheckConfiguration {\n\tlog {\n\t\t... SentinelCheckLogConfigurationFragment\n\t}\n\tkubernetes {\n\t\t... SentinelCheckKubernetesConfigurationFragment\n\t}\n\tintegrationTest {\n\t\t... SentinelCheckIntegrationTestConfigurationFragment\n\t}\n}\nfragment SentinelCheckLogConfigurationFragment on SentinelCheckLogConfiguration {\n\tnamespaces\n\tquery\n\tclusterId\n\tfacets {\n\t\tkey\n\t\tvalue\n\t}\n\tduration\n}\nfragment SentinelCheckKubernetesConfigurationFragment on SentinelCheckKubernetesConfiguration {\n\tgroup\n\tversion\n\tkind\n\tname\n\tnamespace\n}\nfragment SentinelCheckIntegrationTestConfigurationFragment on SentinelCheckIntegrationTestConfiguration {\n\tdistro\n\ttags\n\trerunFailures\n\trerunFailuresCount\n\tpostrunScript\n\tgotestsum {\n\t\tp\n\t\tparallel\n\t}\n\tjob {\n\t\t... JobSpecFragment\n\t}\n\tcases {\n\t\t... TestCaseConfigurationFragment\n\t}\n\tdefault {\n\t\t... SentinelCheckIntegrationTestDefaultConfigurationFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment TestCaseConfigurationFragment on SentinelCheckIntegrationTestCaseConfiguration {\n\tname\n\ttype\n\tcoredns {\n\t\tdialFqdns\n\t\tdelay\n\t\tretries\n\t}\n\tloadbalancer {\n\t\tannotations\n\t\tlabels\n\t\tnamePrefix\n\t\tnamespace\n\t\tdnsProbe {\n\t\t\tfqdn\n\t\t\tdelay\n\t\t\tretries\n\t\t}\n\t}\n\tpvc {\n\t\tnamePrefix\n\t\tstorageClass\n\t\tsize\n\t}\n\traw {\n\t\tyaml\n\t\texpectedResult\n\t}\n}\nfragment SentinelCheckIntegrationTestDefaultConfigurationFragment on SentinelCheckIntegrationTestDefaultConfiguration {\n\tignore\n\tnamespaceAnnotations\n\tnamespaceLabels\n\tregistry\n\tresourceAnnotations\n\tresourceLabels\n}\n","sha256:e885bd9d9a88f0e525d69bee24aba63717c7969bcda29dcc1e0181db1d6553f7":"mutation UpdateGroup ($groupId: ID!, $attributtes: GroupAttributes!) {\n\tupdateGroup(groupId: $groupId, attributes: $attributtes) {\n\t\t... GroupFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\n","sha256:e8cabd7bee2b3ec8fb69f3c07726d145c7ba7d1342e884bb6674c48ee584d3f2":"query GetObserverTiny ($id: ID, $name: String) {\n\tobserver(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:e98aa15a1c0af4f3b5d1831279f62d9ef48c9a28217191e54b8e7545e322356a":"mutation UpsertAgentRuntime ($attributes: AgentRuntimeAttributes!) {\n\tupsertAgentRuntime(attributes: $attributes) {\n\t\t... AgentRuntimeFragment\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:ea42f99ac6aa82489ff83d4b6a3569d01af1e44663670ce7983d6e0950e00445":"mutation CreateOIDCProvider ($type: OidcProviderType!, $attributes: OidcProviderAttributes!) {\n\tcreateOidcProvider(type: $type, attributes: $attributes) {\n\t\t... OIDCProviderFragment\n\t}\n}\nfragment OIDCProviderFragment on OidcProvider {\n\tid\n\tname\n\tdescription\n\tclientId\n\tclientSecret\n\tauthMethod\n\tredirectUris\n\tbindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:eb1e79ee0e1ae9924acfacadc2225debe000a1deaf29f4bd0b4fd32bdc06fc37":"mutation KickService ($id: ID!) {\n\tkickService(serviceId: $id) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:eb48e1387916b107c9eb813c9b4c86628952b1cc47b2cc19138c55e28c0d27c2":"query GetInfrastructureStackId ($id: ID, $name: String) {\n\tinfrastructureStack(id: $id, name: $name) {\n\t\t... InfrastructureStackIdFragment\n\t}\n}\nfragment InfrastructureStackIdFragment on InfrastructureStack {\n\tid\n}\n","sha256:eb6667b96554ee27077292eed506b0777efacdffaee51babf8fdaa2fe20de1df":"query GetObservabilityProviderTiny ($id: ID, $name: String) {\n\tobservabilityProvider(id: $id, name: $name) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:ebb21cf148c1266159da87762af8b07b3d86e2bc357ed7e97e3836552ff47725":"query ListAgentRuntimes ($after: String, $first: Int, $before: String, $last: Int, $q: String, $type: AgentRuntimeType) {\n\tagentRuntimes(after: $after, first: $first, before: $before, last: $last, q: $q, type: $type) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRuntimeFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:edf0898fb4698594637c396cb651e59637dde77354bfd5f6cbac6a174973ab3f":"mutation CreatePolicy ($attributes: PolicyAttributes!) {\n\tcreatePolicy(attributes: $attributes) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:ee2c452c191fc50ec78c441ccd4beaec32bb632b4a32df0b3bbdbf5a77ae2b26":"query GetCluster ($id: ID) {\n\tcluster(id: $id) {\n\t\t... ClusterFragment\n\t}\n}\nfragment ClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tinsertedAt\n\tpingedAt\n\tprotect\n\tcurrentVersion\n\tkasUrl\n\tdeletedAt\n\tmetadata\n\tdistro\n\ttags {\n\t\t... ClusterTags\n\t}\n\tprovider {\n\t\t... ClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tstatus {\n\t\t... ClusterStatusFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\tdeletedAt\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tservice {\n\t\t... ServiceDeploymentFragment\n\t}\n\tcredentials {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment ClusterStatusFragment on ClusterStatus {\n\tconditions {\n\t\t... ClusterConditionFragment\n\t}\n}\nfragment ClusterConditionFragment on ClusterCondition {\n\tstatus\n\ttype\n\tmessage\n\treason\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:f0180c3b7af6b2fd274ee2b25b45dc2f9577ea7cd180278c8873f71e30a8e57c":"query ListWorkbenches ($after: String, $first: Int, $before: String, $last: Int, $q: String) {\n\tworkbenches(after: $after, first: $first, before: $before, last: $last, q: $q) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... WorkbenchFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment WorkbenchFragment on Workbench {\n\tid\n\tname\n\tdescription\n\tsystemPrompt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tagentRuntime {\n\t\t... TinyAgentRuntimeFragment\n\t}\n\tconfiguration {\n\t\tcoding {\n\t\t\tmode\n\t\t\trepositories\n\t\t}\n\t\tinfrastructure {\n\t\t\tservices\n\t\t\tstacks\n\t\t\tkubernetes\n\t\t}\n\t\tobservability {\n\t\t\tlogs\n\t\t\tmetrics\n\t\t}\n\t}\n\tskills {\n\t\tref {\n\t\t\tref\n\t\t\tfolder\n\t\t\tfiles\n\t\t}\n\t\tfiles\n\t}\n\ttools {\n\t\t... WorkbenchToolFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment TinyAgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\tcluster {\n\t\tid\n\t\tname\n\t\thandle\n\t}\n}\nfragment WorkbenchToolFragment on WorkbenchTool {\n\tid\n\tname\n\ttool\n\tcategories\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tmcpServer {\n\t\t... MCPServerFragment\n\t}\n\tcloudConnection {\n\t\t... CloudConnectionFragment\n\t}\n\tscmConnection {\n\t\tid\n\t\tname\n\t\ttype\n\t}\n\tconfiguration {\n\t\thttp {\n\t\t\turl\n\t\t\tmethod\n\t\t\tfunction\n\t\t\theaders {\n\t\t\t\tname\n\t\t\t\tvalue\n\t\t\t}\n\t\t\tbody\n\t\t\tinputSchema\n\t\t}\n\t\telastic {\n\t\t\tindex\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\topensearch {\n\t\t\thost\n\t\t\tindex\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t\tassumeRoleArn\n\t\t\tusePodIdentity\n\t\t}\n\t\tprometheus {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t\tawsSigv4\n\t\t\tawsAccessKeyId\n\t\t\tawsRegion\n\t\t}\n\t\tloki {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tvictoriaLogs {\n\t\t\turl\n\t\t\tusername\n\t\t\taccountId\n\t\t\tprojectId\n\t\t}\n\t\tsplunk {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\ttempo {\n\t\t\turl\n\t\t\tusername\n\t\t\ttenantId\n\t\t}\n\t\tjaeger {\n\t\t\turl\n\t\t\tusername\n\t\t}\n\t\tdatadog {\n\t\t\tsite\n\t\t}\n\t\tdynatrace {\n\t\t\turl\n\t\t}\n\t\tcloudwatch {\n\t\t\tregion\n\t\t\tlogGroupNames\n\t\t\troleArn\n\t\t\troleSessionName\n\t\t}\n\t\tazure {\n\t\t\tsubscriptionId\n\t\t\ttenantId\n\t\t\tclientId\n\t\t\tprometheusUrl\n\t\t}\n\t\tsentry {\n\t\t\turl\n\t\t}\n\t\tlinear {\n\t\t\turl\n\t\t}\n\t\tslack {\n\t\t\turl\n\t\t}\n\t\tpagerduty {\n\t\t\turl\n\t\t}\n\t\tteams {\n\t\t\tclientId\n\t\t\ttenantId\n\t\t}\n\t\tatlassian {\n\t\t\turl\n\t\t\temail\n\t\t}\n\t\texa {\n\t\t\turl\n\t\t}\n\t\tgithub {\n\t\t\turl\n\t\t\ttoolset\n\t\t\tappId\n\t\t\tinstallationId\n\t\t}\n\t\tgitlab {\n\t\t\turl\n\t\t}\n\t\tbitbucket {\n\t\t\turl\n\t\t}\n\t\tbitbucketDatacenter {\n\t\t\turl\n\t\t}\n\t\tazureDevops {\n\t\t\turl\n\t\t}\n\t\tlambda {\n\t\t\tlambdaArn\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tcloudRun {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tazureFunction {\n\t\t\tidentifier\n\t\t\tdescription\n\t\t\tinputSchema\n\t\t}\n\t\tdocker {\n\t\t\turl\n\t\t\tprovider\n\t\t\tproxy {\n\t\t\t\turl\n\t\t\t\tnoproxy\n\t\t\t}\n\t\t}\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\nfragment CloudConnectionFragment on CloudConnection {\n\tid\n\tname\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tprovider\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:f0877907330fe5fe1eb0c25fde95aa37e9cc7c9e0a1c18f5fd432ec35fbdaf0f":"mutation UpdateStack ($id: ID!, $attributes: StackAttributes!) {\n\tupdateStack(id: $id, attributes: $attributes) {\n\t\t... InfrastructureStackFragment\n\t}\n}\nfragment InfrastructureStackFragment on InfrastructureStack {\n\tid\n\tname\n\ttype\n\tvariables\n\tapproval\n\tworkdir\n\tmanageState\n\tdeletedAt\n\tgit {\n\t\t... GitRefFragment\n\t}\n\tjobSpec {\n\t\t... JobSpecFragment\n\t}\n\tconfiguration {\n\t\t... StackConfigurationFragment\n\t}\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tfiles {\n\t\t... StackFileFragment\n\t}\n\tenvironment {\n\t\t... StackEnvironmentFragment\n\t}\n\toutput {\n\t\t... StackOutputFragment\n\t}\n\tstate {\n\t\t... StackStateFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tpolicyEngine {\n\t\t... PolicyEngineFragment\n\t}\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment StackConfigurationFragment on StackConfiguration {\n\timage\n\tversion\n\ttag\n\thooks {\n\t\t... StackHookFragment\n\t}\n\tterraform {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tterragrunt {\n\t\tparallelism\n\t\trefresh\n\t\tapproveEmpty\n\t}\n\tpulumi {\n\t\tparallel\n\t\trefresh\n\t\tapproveEmpty\n\t\tstack\n\t\tbackendUrl\n\t}\n\tansible {\n\t\tinventory\n\t\tplaybook\n\t\tprivateKeyFile\n\t\tconfigFile\n\t}\n}\nfragment StackHookFragment on StackHook {\n\tcmd\n\targs\n\tafterStage\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment StackFileFragment on StackFile {\n\tpath\n\tcontent\n}\nfragment StackEnvironmentFragment on StackEnvironment {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\nfragment StackStateFragment on StackState {\n\tid\n\tplan\n\tplanJson\n\tstate {\n\t\t... StackStateResourceFragment\n\t}\n}\nfragment StackStateResourceFragment on StackStateResource {\n\tidentifier\n\tresource\n\tname\n\tconfiguration\n\tlinks\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PolicyEngineFragment on PolicyEngine {\n\ttype\n\tmaxSeverity\n\tcustomPolicies\n}\n","sha256:f0e05ce093b55732e58f7c3095178c28f5fe253dc86cb3fe35b8d9780e729d8a":"mutation DeleteProviderCredential ($id: ID!) {\n\tdeleteProviderCredential(id: $id) {\n\t\t... ProviderCredentialFragment\n\t}\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\n","sha256:f0f3bc7a7e51984167ff9097cb46eea2b6f8511fde8e987e799db5e919392da2":"mutation UpdatePolicy ($id: ID!, $attributes: PolicyAttributes!) {\n\tupdatePolicy(id: $id, attributes: $attributes) {\n\t\t... PolicyFragment\n\t}\n}\nfragment PolicyFragment on Policy {\n\tid\n\tname\n\ttype\n\tdescription\n\tpolicy\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\n","sha256:f2bb0c00963bc3dd9e407275110593d11307a2f5ad6b0874d0ec68e39f98aacc":"query GetFlow ($id: ID!) {\n\tflow(id: $id) {\n\t\t... FlowFragment\n\t}\n}\nfragment FlowFragment on Flow {\n\tid\n\tname\n\tdescription\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\n","sha256:f2e2e6aea69a2fe6413ac04731bf6bdf9b1b8fbfbc631f64081b97925cf0c4d5":"mutation CreatePrAutomation ($attributes: PrAutomationAttributes!) {\n\tcreatePrAutomation(attributes: $attributes) {\n\t\t... PrAutomationFragment\n\t}\n}\nfragment PrAutomationFragment on PrAutomation {\n\tid\n\tname\n\ttitle\n\taddon\n\tmessage\n\tidentifier\n\tinsertedAt\n\tupdatedAt\n}\n","sha256:f48fca8fbe86193ecceac779139b392ec35b9668b6391b87e9e485968adbe281":"mutation KickServiceByHandle ($cluster: String!, $name: String!) {\n\tkickService(cluster: $cluster, name: $name) {\n\t\t... ServiceDeploymentExtended\n\t}\n}\nfragment ServiceDeploymentExtended on ServiceDeployment {\n\tcluster {\n\t\t... BaseClusterFragment\n\t}\n\terrors {\n\t\t... ErrorFragment\n\t}\n\trevision {\n\t\t... RevisionFragment\n\t}\n\tcontexts {\n\t\t... ServiceContextFragment\n\t}\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n\timports {\n\t\tstack {\n\t\t\t... InfrastructureStackTinyFragment\n\t\t}\n\t\toutputs {\n\t\t\t... StackOutputFragment\n\t\t}\n\t}\n}\nfragment BaseClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tversion\n\tdistro\n\tpingedAt\n\tcurrentVersion\n\tkasUrl\n\tmetadata\n\ttags {\n\t\t... ClusterTags\n\t}\n\tcredential {\n\t\t... ProviderCredentialFragment\n\t}\n\tprovider {\n\t\t... BaseClusterProviderFragment\n\t}\n\tnodePools {\n\t\t... NodePoolFragment\n\t}\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment ClusterTags on Tag {\n\tname\n\tvalue\n}\nfragment ProviderCredentialFragment on ProviderCredential {\n\tid\n\tname\n\tnamespace\n\tkind\n}\nfragment BaseClusterProviderFragment on ClusterProvider {\n\tid\n\tname\n\tnamespace\n\tcloud\n\teditable\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment NodePoolFragment on NodePool {\n\tid\n\tname\n\tminSize\n\tmaxSize\n\tinstanceType\n\tlabels\n\ttaints {\n\t\t... NodePoolTaintFragment\n\t}\n}\nfragment NodePoolTaintFragment on Taint {\n\tkey\n\tvalue\n\teffect\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment ErrorFragment on ServiceError {\n\tsource\n\tmessage\n}\nfragment RevisionFragment on Revision {\n\tid\n\tsha\n\tgit {\n\t\tref\n\t\tfolder\n\t}\n}\nfragment ServiceContextFragment on ServiceContext {\n\tid\n\tname\n\tconfiguration\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\nfragment InfrastructureStackTinyFragment on InfrastructureStack {\n\tid\n\tname\n}\nfragment StackOutputFragment on StackOutput {\n\tname\n\tvalue\n\tsecret\n}\n","sha256:f4c23df10fd69bac428668e234d4671734030cdb043ab60cf1c2d1ae81755751":"mutation CloneServiceDeployment ($clusterId: ID!, $id: ID!, $attributes: ServiceCloneAttributes!) {\n\tcloneService(clusterId: $clusterId, serviceId: $id, attributes: $attributes) {\n\t\t... ServiceDeploymentFragment\n\t}\n}\nfragment ServiceDeploymentFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n\tcomponents {\n\t\tid\n\t\tuid\n\t\tname\n\t\tgroup\n\t\tkind\n\t\tnamespace\n\t\tstate\n\t\tsynced\n\t\tversion\n\t\tcontent {\n\t\t\t... ComponentContentFragment\n\t\t}\n\t}\n\tprotect\n\tdeletedAt\n\tsha\n\ttarball\n\tdryRun\n\ttemplated\n\tconfiguration {\n\t\tname\n\t\tvalue\n\t}\n\tflow {\n\t\tid\n\t}\n\tsyncConfig {\n\t\tcreateNamespace\n\t\tenforceNamespace\n\t\tnamespaceMetadata {\n\t\t\tlabels\n\t\t\tannotations\n\t\t}\n\t\tdiffNormalizers {\n\t\t\t... DiffNormalizerFragment\n\t\t}\n\t}\n\tmetadata {\n\t\timages\n\t\tfqdns\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\nfragment ComponentContentFragment on ComponentContent {\n\tid\n\tlive\n\tdesired\n}\nfragment DiffNormalizerFragment on DiffNormalizer {\n\tnamespace\n\tname\n\tkind\n\tbackfill\n\tjsonPointers\n}\n","sha256:f4e1c56176b7a939e788ef5b53f4787503b89c032124e826851a5ff4aceb0f25":"query GetNotificationRouterByName ($name: String) {\n\tnotificationRouter(name: $name) {\n\t\t... NotificationRouterFragment\n\t}\n}\nfragment NotificationRouterFragment on NotificationRouter {\n\tid\n\tname\n\tsinks {\n\t\t... NotificationSinkFragment\n\t}\n\tevents\n}\nfragment NotificationSinkFragment on NotificationSink {\n\tid\n\tname\n\ttype\n\tconfiguration {\n\t\t... SinkConfigurationFragment\n\t}\n\tnotificationBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment SinkConfigurationFragment on SinkConfiguration {\n\tid\n\tslack {\n\t\t... UrlSinkConfigurationFragment\n\t}\n\tteams {\n\t\t... UrlSinkConfigurationFragment\n\t}\n}\nfragment UrlSinkConfigurationFragment on UrlSinkConfiguration {\n\turl\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\n","sha256:f6ed33ad9b1d5a5809a4e165bd5ef8f45b11473299e695b900de16f0e019638e":"mutation CreateBindingPolicy ($attributes: BindingPolicyAttributes!) {\n\tcreateBindingPolicy(attributes: $attributes) {\n\t\t... BindingPolicyFragment\n\t}\n}\nfragment BindingPolicyFragment on BindingPolicy {\n\tid\n\ttype\n\tinterval\n\tnextPollAt\n\tmatches {\n\t\tworkbench {\n\t\t\tregexes\n\t\t}\n\t}\n\tpolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tbindPolicy {\n\t\t... TinyPolicyFragment\n\t}\n\tinsertedAt\n\tupdatedAt\n}\nfragment TinyPolicyFragment on Policy {\n\tid\n\tname\n}\n","sha256:f6f84fe259c76394005edc0fae05274cf74dbc7798901ae09e0ffcd10cc83f56":"mutation UpsertMCPServer ($attributes: McpServerAttributes!) {\n\tupsertMcpServer(attributes: $attributes) {\n\t\t... MCPServerFragment\n\t}\n}\nfragment MCPServerFragment on McpServer {\n\tid\n\tname\n\turl\n\tauthentication {\n\t\tplural\n\t\theaders {\n\t\t\tname\n\t\t\tvalue\n\t\t}\n\t}\n\tconfirm\n}\n","sha256:f8ad34afb74d7611413565ccb547ce422f230839b2e0ab0ca2a63d8da00a58d0":"query ListAgentRuns ($after: String, $first: Int, $before: String, $last: Int) {\n\tagentRuns(after: $after, first: $first, before: $before, last: $last) {\n\t\tedges {\n\t\t\tnode {\n\t\t\t\t... AgentRunFragment\n\t\t\t}\n\t\t}\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t}\n}\nfragment AgentRunFragment on AgentRun {\n\tid\n\tprompt\n\trepository\n\tbranch\n\theadBranch\n\tmode\n\treviewDepth\n\tlanguage\n\tlanguageVersion\n\ttodos {\n\t\t... AgentTodoFragment\n\t}\n\tprompts {\n\t\t... AgentPromptFragment\n\t}\n\tskills {\n\t\tname\n\t\tdescription\n\t\tcontents\n\t}\n\tstatus\n\tpodReference {\n\t\t... AgentPodReferenceFragment\n\t}\n\terror\n\tanalysis {\n\t\t... AgentAnalysisFragment\n\t}\n\tusage {\n\t\tinputTokens\n\t\toutputTokens\n\t\ttotalTokens\n\t\tcachedTokens\n\t\treasoningTokens\n\t\tinputCost\n\t\toutputCost\n\t\ttotalCost\n\t}\n\tscmCreds {\n\t\t... ScmCredentialFragment\n\t}\n\tpluralCreds {\n\t\t... PluralCredsFragment\n\t}\n\tworkbenchMcpUrl\n\truntime {\n\t\t... AgentRuntimeFragment\n\t}\n\tuser {\n\t\tid\n\t\tname\n\t\temail\n\t}\n\tflow {\n\t\tid\n\t\tname\n\t}\n\tpullRequests {\n\t\t... PullRequestFragment\n\t}\n\tupload {\n\t\t... AgentRunUploadFragment\n\t}\n\tbabysit\n\tbabysitInterval\n\tapproval\n\tapprovedAt\n\tfollowup\n\tfollowupPrUrl\n}\nfragment AgentTodoFragment on AgentTodo {\n\tdescription\n\tdone\n\ttitle\n}\nfragment AgentPromptFragment on AgentPrompt {\n\tid\n\tprompt\n\tseq\n}\nfragment AgentPodReferenceFragment on AgentPodReference {\n\tname\n\tnamespace\n}\nfragment AgentAnalysisFragment on AgentAnalysis {\n\tsummary\n\tanalysis\n\tbullets\n}\nfragment ScmCredentialFragment on ScmCreds {\n\ttoken\n\tusername\n\texaKey\n}\nfragment PluralCredsFragment on PluralCreds {\n\ttoken\n\turl\n}\nfragment AgentRuntimeFragment on AgentRuntime {\n\tid\n\tname\n\ttype\n\taiProxy\n\tcluster {\n\t\t... TinyClusterFragment\n\t}\n\tcreateBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\nfragment TinyClusterFragment on Cluster {\n\tid\n\tname\n\thandle\n\tself\n\tdeletedAt\n\tproject {\n\t\t... TinyProjectFragment\n\t}\n}\nfragment TinyProjectFragment on Project {\n\tid\n\tname\n\tdefault\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment PullRequestFragment on PullRequest {\n\tid\n\tstatus\n\turl\n\ttitle\n\tcreator\n\tref\n}\nfragment AgentRunUploadFragment on AgentRunUpload {\n\tid\n\tsession\n\tscreenRecording\n\tpatch\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\n","sha256:fb582babd9105b9d3a968a697cd3c6879d73cc169cb3a0ea2ff6919653b93159":"query GetPersonaTiny ($id: ID!) {\n\tpersona(id: $id) {\n\t\tid\n\t\tname\n\t}\n}\n","sha256:fb5ea857664bc64ec6b9b3be0df5183537c6ada36d9076badf3035fac4821160":"mutation updateGate ($id: ID!, $attributes: GateUpdateAttributes!) {\n\tupdateGate(id: $id, attributes: $attributes) {\n\t\t... PipelineGateFragment\n\t}\n}\nfragment PipelineGateFragment on PipelineGate {\n\tid\n\tname\n\ttype\n\tstate\n\tupdatedAt\n\tspec {\n\t\t... GateSpecFragment\n\t}\n\tstatus {\n\t\t... GateStatusFragment\n\t}\n}\nfragment GateSpecFragment on GateSpec {\n\tjob {\n\t\t... JobSpecFragment\n\t}\n}\nfragment JobSpecFragment on JobGateSpec {\n\tnamespace\n\traw\n\tcontainers {\n\t\t... ContainerSpecFragment\n\t}\n\tlabels\n\tannotations\n\tserviceAccount\n\trequests {\n\t\t... ContainerResourcesFragment\n\t}\n\tnodeSelector\n\ttolerations {\n\t\tkey\n\t\toperator\n\t\tvalue\n\t\teffect\n\t}\n}\nfragment ContainerSpecFragment on ContainerSpec {\n\tname\n\timage\n\targs\n\tenv {\n\t\tname\n\t\tvalue\n\t}\n\tenvFrom {\n\t\tconfigMap\n\t\tsecret\n\t}\n}\nfragment ContainerResourcesFragment on ContainerResources {\n\trequests {\n\t\t... ResourceRequestFragment\n\t}\n\tlimits {\n\t\t... ResourceRequestFragment\n\t}\n}\nfragment ResourceRequestFragment on ResourceRequest {\n\tcpu\n\tmemory\n}\nfragment GateStatusFragment on GateStatus {\n\tjobRef {\n\t\t... JobReferenceFragment\n\t}\n}\nfragment JobReferenceFragment on JobReference {\n\tname\n\tnamespace\n}\n","sha256:fbbe6bebeab1e039a67523921914f1c01201317c02cc98e06dec4433b164babe":"mutation UpsertFlow ($attributes: FlowAttributes!) {\n\tupsertFlow(attributes: $attributes) {\n\t\t... FlowFragment\n\t}\n}\nfragment FlowFragment on Flow {\n\tid\n\tname\n\tdescription\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n\tproject {\n\t\t... ProjectFragment\n\t}\n}\nfragment PolicyBindingFragment on PolicyBinding {\n\tid\n\tgroup {\n\t\t... GroupFragment\n\t}\n\tuser {\n\t\t... UserFragment\n\t}\n}\nfragment GroupFragment on Group {\n\tid\n\tname\n\tdescription\n\tglobal\n}\nfragment UserFragment on User {\n\tname\n\tid\n\temail\n}\nfragment ProjectFragment on Project {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\tdefault\n\tdescription\n\tdisableInsights\n\treadBindings {\n\t\t... PolicyBindingFragment\n\t}\n\twriteBindings {\n\t\t... PolicyBindingFragment\n\t}\n}\n","sha256:fd1e534eae2f32dcc454ce202bcdf126e56a5fd1783af6d72bac469daf44711a":"mutation UpsertObservabilityWebhook ($attributes: ObservabilityWebhookAttributes!) {\n\tupsertObservabilityWebhook(attributes: $attributes) {\n\t\t... ObservabilityWebhookFragment\n\t}\n}\nfragment ObservabilityWebhookFragment on ObservabilityWebhook {\n\tid\n\tinsertedAt\n\tupdatedAt\n\tname\n\ttype\n\turl\n}\n","sha256:fd2719879c20e353e13ab4632ed7ef0463e32c44312ba4718fa3c3398f85757b":"mutation DeleteUpgradePlanCallout ($name: String!) {\n\tdeleteUpgradePlanCallout(name: $name) {\n\t\tid\n\t}\n}\n","sha256:fe29529018620357fb036988eaedf93dcc5f4c261a1790008fe871e730df22a7":"mutation CreateAgentMessageOutput ($attributes: AgentMessageOutputAttributes!) {\n\tagentMessageOutput(attributes: $attributes) {\n\t\tmessageId\n\t\tagentRunId\n\t\tstdout\n\t\tstderr\n\t}\n}\n","sha256:fe6d1ea15a4c48af7dd3d108284742c3e213ae0ca2d056b54e9f69e76d324ff0":"query GetPipeline ($id: ID!) {\n\tpipeline(id: $id) {\n\t\t... PipelineFragmentMinimal\n\t}\n}\nfragment PipelineFragmentMinimal on Pipeline {\n\tid\n\tname\n}\n","sha256:fe9a6d6142da6bdab74374a10496278f9c48e7c7d5be86f30230ab48f378cec0":"query GetClusterIdByHandle ($handle: String) {\n\tcluster(handle: $handle) {\n\t\t... {\n\t\t\tid\n\t\t}\n\t}\n}\n","sha256:feaaf702508e6b2448a4d426421ceaece0bdb6c525c329b24c8944dec9373dc3":"query PagedClusterServices ($after: String, $first: Int, $before: String, $last: Int) {\n\tpagedClusterServices(after: $after, first: $first, before: $before, last: $last) {\n\t\tpageInfo {\n\t\t\t... PageInfoFragment\n\t\t}\n\t\tedges {\n\t\t\t... ServiceDeploymentEdgeFragment\n\t\t}\n\t}\n}\nfragment PageInfoFragment on PageInfo {\n\thasNextPage\n\tendCursor\n}\nfragment ServiceDeploymentEdgeFragment on ServiceDeploymentEdge {\n\tnode {\n\t\t... ServiceDeploymentBaseFragment\n\t}\n}\nfragment ServiceDeploymentBaseFragment on ServiceDeployment {\n\tid\n\tname\n\tnamespace\n\tversion\n\tstatus\n\tkustomize {\n\t\t... KustomizeFragment\n\t}\n\tgit {\n\t\t... GitRefFragment\n\t}\n\thelm {\n\t\t... HelmSpecFragment\n\t}\n\trepository {\n\t\t... GitRepositoryFragment\n\t}\n}\nfragment KustomizeFragment on Kustomize {\n\tpath\n\tenableHelm\n}\nfragment GitRefFragment on GitRef {\n\tfolder\n\tref\n}\nfragment HelmSpecFragment on HelmSpec {\n\tvaluesFiles\n}\nfragment GitRepositoryFragment on GitRepository {\n\tid\n\terror\n\thealth\n\tauthMethod\n\turl\n\tdecrypt\n\trecurseSubmodules\n}\n"}}
diff --git a/go/client/graph/deployment.graphql b/go/client/graph/deployment.graphql
index 4018ad95fd..0f2a0499d6 100644
--- a/go/client/graph/deployment.graphql
+++ b/go/client/graph/deployment.graphql
@@ -248,6 +248,13 @@ query GetServiceDeploymentByHandle($cluster: String!, $name: String!) {
}
}
+query GetServiceDeploymentTinyByHandle($cluster: String!, $name: String!) {
+ serviceDeployment(cluster: $cluster, name: $name) {
+ id
+ name
+ }
+}
+
query GetServiceTarball($id: ID!) {
serviceTarball(id: $id) {
path
diff --git a/go/client/graph/monitoring.graphql b/go/client/graph/monitoring.graphql
new file mode 100644
index 0000000000..6d0857f2ae
--- /dev/null
+++ b/go/client/graph/monitoring.graphql
@@ -0,0 +1,69 @@
+fragment MonitorFragment on Monitor {
+ id
+ name
+ service {
+ id
+ name
+ }
+ workbench {
+ id
+ name
+ }
+}
+
+fragment WorkbenchDashboardFragment on WorkbenchDashboard {
+ id
+ name
+ workbench {
+ id
+ name
+ }
+}
+
+query GetMonitor($id: ID!) {
+ monitor(id: $id) {
+ ...MonitorFragment
+ }
+}
+
+mutation CreateMonitor($attributes: MonitorAttributes!) {
+ createMonitor(attributes: $attributes) {
+ ...MonitorFragment
+ }
+}
+
+mutation UpdateMonitor($id: ID!, $attributes: MonitorAttributes!) {
+ updateMonitor(id: $id, attributes: $attributes) {
+ ...MonitorFragment
+ }
+}
+
+mutation DeleteMonitor($id: ID!) {
+ deleteMonitor(id: $id) {
+ id
+ }
+}
+
+query GetWorkbenchDashboard($id: ID!) {
+ workbenchDashboard(id: $id) {
+ ...WorkbenchDashboardFragment
+ }
+}
+
+mutation CreateDashboard($attributes: DashboardAttributes!) {
+ createDashboard(attributes: $attributes) {
+ ...WorkbenchDashboardFragment
+ }
+}
+
+mutation UpdateDashboard($id: ID!, $attributes: DashboardAttributes!) {
+ updateDashboard(id: $id, attributes: $attributes) {
+ ...WorkbenchDashboardFragment
+ }
+}
+
+mutation DeleteDashboard($id: ID!) {
+ deleteDashboard(id: $id) {
+ id
+ }
+}
diff --git a/go/controller/api/v1alpha1/dashboard_types.go b/go/controller/api/v1alpha1/dashboard_types.go
new file mode 100644
index 0000000000..16734339fe
--- /dev/null
+++ b/go/controller/api/v1alpha1/dashboard_types.go
@@ -0,0 +1,340 @@
+/*
+Copyright 2023.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1alpha1
+
+import (
+ "github.com/samber/lo"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/meta"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+
+ console "github.com/pluralsh/console/go/client"
+)
+
+func init() {
+ SchemeBuilder.Register(&Dashboard{}, &DashboardList{})
+}
+
+// +kubebuilder:object:root=true
+
+// DashboardList contains a list of Dashboard resources.
+type DashboardList struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ListMeta `json:"metadata,omitempty"`
+ Items []Dashboard `json:"items"`
+}
+
+// +kubebuilder:object:root=true
+// +kubebuilder:resource:scope=Namespaced
+// +kubebuilder:subresource:status
+// +kubebuilder:printcolumn:name="ID",type="string",JSONPath=".status.id",description="ID of the Dashboard in the Console API."
+// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type==\"Ready\")].status",description="Whether the Dashboard is ready."
+
+// Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs
+// arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.
+type Dashboard struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ObjectMeta `json:"metadata,omitempty"`
+
+ // Spec defines the desired state of the Dashboard.
+ // +kubebuilder:validation:Required
+ Spec DashboardSpec `json:"spec"`
+
+ // Status represents the current state of this resource.
+ // +kubebuilder:validation:Optional
+ Status Status `json:"status,omitempty"`
+}
+
+// SetReadOnlyStatus sets the read-only status of the dashboard.
+func (in *Dashboard) SetReadOnlyStatus(readOnly bool) {
+ in.Status.ReadOnly = readOnly
+}
+
+// ConsoleID implements [PluralResource] interface.
+func (in *Dashboard) ConsoleID() *string {
+ return in.Status.ID
+}
+
+// ConsoleName implements [PluralResource] interface.
+func (in *Dashboard) ConsoleName() string {
+ if in.Spec.Name != nil && len(*in.Spec.Name) > 0 {
+ return *in.Spec.Name
+ }
+ return in.Name
+}
+
+// Diff compares the current Dashboard spec with its last known state.
+func (in *Dashboard) Diff(hasher Hasher) (changed bool, sha string, err error) {
+ currentSha, err := hasher(in.Spec)
+ if err != nil {
+ return false, "", err
+ }
+ return !in.Status.IsSHAEqual(currentSha), currentSha, nil
+}
+
+// SetCondition sets a condition on the Dashboard status.
+func (in *Dashboard) SetCondition(condition metav1.Condition) {
+ meta.SetStatusCondition(&in.Status.Conditions, condition)
+}
+
+// Attributes converts the Dashboard spec into Console API attributes.
+// The workbenchID has to be resolved from the spec reference by the caller.
+func (in *Dashboard) Attributes(workbenchID string) console.DashboardAttributes {
+ return console.DashboardAttributes{
+ WorkbenchID: &workbenchID,
+ Name: lo.ToPtr(in.ConsoleName()),
+ Description: in.Spec.Description,
+ Graphs: lo.Map(in.Spec.Graphs, func(g DashboardGraph, _ int) *console.DashboardGraphAttributes {
+ return g.Attributes()
+ }),
+ Inputs: lo.Map(in.Spec.Inputs, func(i DashboardInput, _ int) *console.DashboardInputAttributes {
+ return i.Attributes()
+ }),
+ }
+}
+
+// DashboardSpec defines the desired state of a Dashboard.
+// +kubebuilder:validation:XValidation:rule="!has(self.graphs) || self.graphs.all(g, !has(g.sectionId) || size(g.sectionId) == 0 || self.graphs.exists(s, s.type == 'SECTION' && s.identifier == g.sectionId))",message="sectionId must reference an existing SECTION graph"
+type DashboardSpec struct {
+
+ // WorkbenchRef references the Workbench that owns this dashboard.
+ // The Workbench must be in the same namespace as the dashboard.
+ // It is immutable, a dashboard cannot be moved to a different workbench.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:XValidation:rule="has(self.name) && size(self.name) > 0",message="name is required"
+ // +kubebuilder:validation:XValidation:rule="self == oldSelf",message="workbenchRef is immutable"
+ WorkbenchRef corev1.LocalObjectReference `json:"workbenchRef"`
+
+ // Name is the dashboard name, unique within its workbench.
+ // If not set, metadata.name is used.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Name *string `json:"name,omitempty"`
+
+ // Description is an optional dashboard description.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Description *string `json:"description,omitempty"`
+
+ // Graphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
+ // Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
+ // Note that overlapping graph layouts are only validated by the Console API.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:MaxItems=200
+ // +listType=map
+ // +listMapKey=identifier
+ Graphs []DashboardGraph `json:"graphs,omitempty"`
+
+ // Inputs are user-configurable dashboard variables.
+ // +kubebuilder:validation:Optional
+ // +listType=map
+ // +listMapKey=name
+ Inputs []DashboardInput `json:"inputs,omitempty"`
+
+ // Reconciliation settings for this resource.
+ // +kubebuilder:validation:Optional
+ Reconciliation *Reconciliation `json:"reconciliation,omitempty"`
+}
+
+// DashboardGraph is a single graph placed on the dashboard grid.
+// +kubebuilder:validation:XValidation:rule="self.type != 'MARKDOWN' || has(self.markdown)",message="markdown must be set for MARKDOWN graphs"
+// +kubebuilder:validation:XValidation:rule="self.type != 'SECTION' || !has(self.sectionId) || size(self.sectionId) == 0",message="sections cannot be nested, SECTION graphs cannot set sectionId"
+type DashboardGraph struct {
+ // Identifier is a stable identifier unique within the dashboard.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:MaxLength=128
+ Identifier string `json:"identifier"`
+
+ // Title is the graph title.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Title *string `json:"title,omitempty"`
+
+ // Description is an optional graph description.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Description *string `json:"description,omitempty"`
+
+ // Type is the graph visualization type.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=TIMESERIES;GAUGE;LOGS;MARKDOWN;TABLE;STAT;BAR;PIE;HEATMAP;TRACES;SECTION
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MaxLength=16
+ Type console.DashboardGraphType `json:"type"`
+
+ // SectionID is the identifier of the SECTION graph containing this graph. Sections cannot be nested.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MaxLength=128
+ SectionID *string `json:"sectionId,omitempty"`
+
+ // Markdown is the content for MARKDOWN graphs.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Markdown *string `json:"markdown,omitempty"`
+
+ // Options are visualization-specific display options. Sections may set collapsed.
+ // +kubebuilder:validation:Optional
+ Options *runtime.RawExtension `json:"options,omitempty"`
+
+ // Layout is the grid position and size of the graph.
+ // +kubebuilder:validation:Required
+ Layout DashboardGraphLayout `json:"layout"`
+
+ // Datasource is the tool call used to fetch external data.
+ // +kubebuilder:validation:Optional
+ Datasource *DashboardDatasource `json:"datasource,omitempty"`
+}
+
+func (in *DashboardGraph) Attributes() *console.DashboardGraphAttributes {
+ var options *string
+ if in.Options != nil && len(in.Options.Raw) > 0 {
+ options = lo.ToPtr(string(in.Options.Raw))
+ }
+
+ return &console.DashboardGraphAttributes{
+ Identifier: in.Identifier,
+ Title: in.Title,
+ Description: in.Description,
+ Type: in.Type,
+ SectionID: in.SectionID,
+ Markdown: in.Markdown,
+ Options: options,
+ Layout: console.DashboardGraphLayoutAttributes{
+ X: in.Layout.X,
+ Y: in.Layout.Y,
+ W: in.Layout.W,
+ H: in.Layout.H,
+ },
+ Datasource: in.Datasource.Attributes(),
+ }
+}
+
+// DashboardGraphLayout defines the grid position and size of a graph.
+type DashboardGraphLayout struct {
+ // X is the zero-based horizontal grid coordinate.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Minimum=0
+ X int64 `json:"x"`
+
+ // Y is the zero-based vertical grid coordinate.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Minimum=0
+ Y int64 `json:"y"`
+
+ // W is the width in grid columns.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Minimum=1
+ W int64 `json:"w"`
+
+ // H is the height in grid rows.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Minimum=1
+ H int64 `json:"h"`
+}
+
+// DashboardDatasource defines an observability tool call used to fetch dashboard data.
+type DashboardDatasource struct {
+ // Type is the kind of data returned by the datasource.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=LOGS;METRICS;TRACES;LABELS
+ Type console.DashboardDatasourceType `json:"type"`
+
+ // Tool is the name of the observability tool used to fetch the data.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ Tool string `json:"tool"`
+
+ // Input is passed to the observability tool.
+ // +kubebuilder:validation:Required
+ Input runtime.RawExtension `json:"input"`
+}
+
+func (in *DashboardDatasource) Attributes() *console.DashboardDatasourceAttributes {
+ if in == nil {
+ return nil
+ }
+
+ input := "{}"
+ if len(in.Input.Raw) > 0 {
+ input = string(in.Input.Raw)
+ }
+
+ return &console.DashboardDatasourceAttributes{
+ Type: in.Type,
+ Tool: in.Tool,
+ Input: input,
+ }
+}
+
+// DashboardInput is a user-configurable dashboard variable.
+type DashboardInput struct {
+ // Name is the variable name referenced by graph datasource inputs.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ Name string `json:"name"`
+
+ // Label is a human-readable input label.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Label *string `json:"label,omitempty"`
+
+ // Description is an optional input description.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Description *string `json:"description,omitempty"`
+
+ // Type is the input control type.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=TEXT;NUMBER;BOOLEAN;SELECT;MULTI_SELECT;TIME_RANGE
+ Type console.DashboardInputType `json:"type"`
+
+ // Default is the default input value.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Default *string `json:"default,omitempty"`
+
+ // Options are the allowed values for select inputs.
+ // +kubebuilder:validation:Optional
+ Options []string `json:"options,omitempty"`
+
+ // Required defines whether a value is required when rendering.
+ // +kubebuilder:validation:Optional
+ Required *bool `json:"required,omitempty"`
+
+ // Datasource is the tool query used to populate input options, such as metric label search.
+ // +kubebuilder:validation:Optional
+ Datasource *DashboardDatasource `json:"datasource,omitempty"`
+}
+
+func (in *DashboardInput) Attributes() *console.DashboardInputAttributes {
+ return &console.DashboardInputAttributes{
+ Name: in.Name,
+ Label: in.Label,
+ Description: in.Description,
+ Type: in.Type,
+ Default: in.Default,
+ Options: lo.ToSlicePtr(in.Options),
+ Required: in.Required,
+ Datasource: in.Datasource.Attributes(),
+ }
+}
diff --git a/go/controller/api/v1alpha1/monitor_types.go b/go/controller/api/v1alpha1/monitor_types.go
new file mode 100644
index 0000000000..e4c41e00d1
--- /dev/null
+++ b/go/controller/api/v1alpha1/monitor_types.go
@@ -0,0 +1,474 @@
+/*
+Copyright 2023.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1alpha1
+
+import (
+ "fmt"
+ "strconv"
+
+ "github.com/samber/lo"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/meta"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+ console "github.com/pluralsh/console/go/client"
+)
+
+func init() {
+ SchemeBuilder.Register(&Monitor{}, &MonitorList{})
+}
+
+// +kubebuilder:object:root=true
+
+// MonitorList contains a list of Monitor resources.
+type MonitorList struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ListMeta `json:"metadata,omitempty"`
+ Items []Monitor `json:"items"`
+}
+
+// +kubebuilder:object:root=true
+// +kubebuilder:resource:scope=Namespaced
+// +kubebuilder:subresource:status
+// +kubebuilder:printcolumn:name="ID",type="string",JSONPath=".status.id",description="ID of the Monitor in the Console API."
+// +kubebuilder:printcolumn:name="TYPE",type="string",JSONPath=".spec.type",description="Monitor data type."
+// +kubebuilder:printcolumn:name="SEVERITY",type="string",JSONPath=".spec.severity",description="Severity of alerts generated by this Monitor."
+// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type==\"Ready\")].status",description="Whether the Monitor is ready."
+
+// Monitor represents an observability monitor attached to a service deployment. It periodically
+// evaluates a log or metrics query against a threshold and fires alerts when it is crossed.
+// Optionally, it can be attached to a workbench to start an investigation when it fires.
+type Monitor struct {
+ metav1.TypeMeta `json:",inline"`
+ metav1.ObjectMeta `json:"metadata,omitempty"`
+
+ // Spec defines the desired state of the Monitor.
+ // +kubebuilder:validation:Required
+ Spec MonitorSpec `json:"spec"`
+
+ // Status represents the current state of this resource.
+ // +kubebuilder:validation:Optional
+ Status Status `json:"status,omitempty"`
+}
+
+// SetReadOnlyStatus sets the read-only status of the monitor.
+func (in *Monitor) SetReadOnlyStatus(readOnly bool) {
+ in.Status.ReadOnly = readOnly
+}
+
+// ConsoleID implements [PluralResource] interface.
+func (in *Monitor) ConsoleID() *string {
+ return in.Status.ID
+}
+
+// ConsoleName implements [PluralResource] interface.
+func (in *Monitor) ConsoleName() string {
+ if in.Spec.Name != nil && len(*in.Spec.Name) > 0 {
+ return *in.Spec.Name
+ }
+ return in.Name
+}
+
+// Diff compares the current Monitor spec with its last known state.
+func (in *Monitor) Diff(hasher Hasher) (changed bool, sha string, err error) {
+ currentSha, err := hasher(in.Spec)
+ if err != nil {
+ return false, "", err
+ }
+ return !in.Status.IsSHAEqual(currentSha), currentSha, nil
+}
+
+// SetCondition sets a condition on the Monitor status.
+func (in *Monitor) SetCondition(condition metav1.Condition) {
+ meta.SetStatusCondition(&in.Status.Conditions, condition)
+}
+
+// Attributes converts the Monitor spec into Console API attributes.
+// The serviceID (from ServiceRef or Service) and workbenchID have to be resolved from the spec by the caller.
+func (in *Monitor) Attributes(serviceID string, workbenchID *string) (*console.MonitorAttributes, error) {
+ threshold, err := in.Spec.Threshold.Attributes()
+ if err != nil {
+ return nil, err
+ }
+
+ modes, err := in.Spec.Modes.Attributes()
+ if err != nil {
+ return nil, err
+ }
+
+ return &console.MonitorAttributes{
+ ServiceID: serviceID,
+ WorkbenchID: workbenchID,
+ Prompt: in.Spec.Prompt,
+ Modes: modes,
+ Name: in.ConsoleName(),
+ Description: in.Spec.Description,
+ AlertTemplate: in.Spec.AlertTemplate,
+ Severity: in.Spec.Severity,
+ Type: in.Spec.Type,
+ EvaluationCron: in.Spec.EvaluationCron,
+ Query: in.Spec.Query.Attributes(),
+ Threshold: *threshold,
+ }, nil
+}
+
+// MonitorSpec defines the desired state of a Monitor.
+// +kubebuilder:validation:XValidation:rule="has(self.serviceRef) != has(self.service)",message="exactly one of serviceRef or service must be set"
+// +kubebuilder:validation:XValidation:rule="self.type != 'LOG' || has(self.query.log)",message="query.log must be set when type is LOG"
+// +kubebuilder:validation:XValidation:rule="self.type != 'METRICS' || has(self.query.metrics)",message="query.metrics must be set when type is METRICS"
+// +kubebuilder:validation:XValidation:rule="has(self.workbenchRef) || !((has(self.query.log) && has(self.query.log.tool)) || (has(self.query.metrics) && has(self.query.metrics.tool)))",message="workbenchRef is required for tool-backed monitor queries"
+type MonitorSpec struct {
+ // Name is the short name used to identify this monitor in the Console API.
+ // If not set, metadata.name is used.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Name *string `json:"name,omitempty"`
+
+ // ServiceRef references the ServiceDeployment resource this monitor is attached to.
+ // The ServiceDeployment must be in the same namespace as the monitor.
+ // Either ServiceRef or Service must be set.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:XValidation:rule="has(self.name) && size(self.name) > 0",message="name is required"
+ ServiceRef *corev1.LocalObjectReference `json:"serviceRef,omitempty"`
+
+ // Service references an existing service in the Console API this monitor is attached to,
+ // in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
+ // a monitor to a service that is not managed by a ServiceDeployment resource.
+ // Either ServiceRef or Service must be set.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[^/]+/[^/]+$`
+ // +kubebuilder:example:=mgmt/console
+ Service *string `json:"service,omitempty"`
+
+ // WorkbenchRef references the Workbench this monitor is attached to.
+ // When set, the monitor can start a workbench investigation when it fires.
+ // It is required if the query uses a named workbench tool.
+ // The Workbench must be in the same namespace as the monitor.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:XValidation:rule="has(self.name) && size(self.name) > 0",message="name is required"
+ WorkbenchRef *corev1.LocalObjectReference `json:"workbenchRef,omitempty"`
+
+ // Prompt is used when the monitor starts a workbench investigation.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MaxLength=2048
+ Prompt *string `json:"prompt,omitempty"`
+
+ // Modes defines mode-specific options for monitor-triggered workbench jobs.
+ // +kubebuilder:validation:Optional
+ Modes *WorkbenchJobModes `json:"modes,omitempty"`
+
+ // Description is an optional free-form description of what this monitor is checking.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Description *string `json:"description,omitempty"`
+
+ // AlertTemplate is an optional template used when rendering alert messages for this monitor.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ AlertTemplate *string `json:"alertTemplate,omitempty"`
+
+ // Severity is the severity level applied to alerts generated by this monitor.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=LOW;MEDIUM;HIGH;CRITICAL;UNDEFINED
+ Severity console.AlertSeverity `json:"severity"`
+
+ // Type is the monitor data type.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=LOG;METRICS
+ Type console.MonitorType `json:"type"`
+
+ // EvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
+ // It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
+ // or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
+ // @secondly or @reboot shortcuts. Field values are validated by the Console API.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ // +kubebuilder:validation:Pattern=`^(@(?i:yearly|annually|monthly|weekly|daily|midnight|hourly|minutely|secondly|reboot)|[^ ]+( [^ ]+){4,5})$`
+ EvaluationCron string `json:"evaluationCron"`
+
+ // Query is the underlying query configuration used to fetch data for this monitor.
+ // +kubebuilder:validation:Required
+ Query MonitorQuery `json:"query"`
+
+ // Threshold is the configuration that determines when the monitor should fire.
+ // +kubebuilder:validation:Required
+ Threshold MonitorThreshold `json:"threshold"`
+
+ // Reconciliation settings for this resource.
+ // +kubebuilder:validation:Optional
+ Reconciliation *Reconciliation `json:"reconciliation,omitempty"`
+}
+
+// MonitorThreshold is the threshold configuration used to decide when a monitor should fire.
+type MonitorThreshold struct {
+ // Aggregate is the aggregation function applied over the result set.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=MAX;MIN;AVG
+ Aggregate console.MonitorAggregate `json:"aggregate"`
+
+ // Value is the numeric value the aggregated metric must cross to trigger the alert.
+ // It is a string to allow decimal values (e.g. "0.95").
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^-?[0-9]+(\.[0-9]+)?$`
+ Value string `json:"value"`
+}
+
+func (in *MonitorThreshold) Attributes() (*console.MonitorThresholdAttributes, error) {
+ value, err := strconv.ParseFloat(in.Value, 64)
+ if err != nil {
+ return nil, fmt.Errorf("invalid threshold value %q: %w", in.Value, err)
+ }
+
+ return &console.MonitorThresholdAttributes{
+ Aggregate: in.Aggregate,
+ Value: value,
+ }, nil
+}
+
+// MonitorQuery is a wrapper for the underlying query definition for a monitor.
+// Exactly one of log or metrics should be set, matching the monitor type.
+// +kubebuilder:validation:XValidation:rule="!(has(self.log) && has(self.metrics))",message="only one of log or metrics can be set"
+type MonitorQuery struct {
+ // Log query used when the monitor type is LOG.
+ // +kubebuilder:validation:Optional
+ Log *MonitorLogQuery `json:"log,omitempty"`
+
+ // Metrics query used when the monitor type is METRICS.
+ // +kubebuilder:validation:Optional
+ Metrics *MonitorMetricsQuery `json:"metrics,omitempty"`
+}
+
+func (in *MonitorQuery) Attributes() console.MonitorQueryAttributes {
+ return console.MonitorQueryAttributes{
+ Log: in.Log.Attributes(),
+ Metrics: in.Metrics.Attributes(),
+ }
+}
+
+// MonitorLogQuery is the log query configuration for a monitor.
+type MonitorLogQuery struct {
+ // Tool is the named workbench logs tool. When omitted, the native Plural logs provider is used.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Tool *string `json:"tool,omitempty"`
+
+ // Query is the log query string passed through to the underlying log provider.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ Query string `json:"query"`
+
+ // BucketSize is the time bucket size (e.g. 5m) used when aggregating log results.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[0-9]+[dmhs]$`
+ BucketSize string `json:"bucketSize"`
+
+ // Duration is the lookback duration for the log query (e.g. 1h, 10m, 30s).
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[0-9]+[dmhs]$`
+ Duration *string `json:"duration,omitempty"`
+
+ // Operator to use when combining multiple log queries.
+ // Defaults to OR, which is also the Console API default.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Enum=OR;AND
+ // +kubebuilder:default=OR
+ Operator *console.MonitorOperator `json:"operator,omitempty"`
+
+ // Facets are optional key/value facets applied as additional filters on the log query.
+ // +kubebuilder:validation:Optional
+ Facets []MonitorFacet `json:"facets,omitempty"`
+
+ // Options are provider-specific log query options.
+ // +kubebuilder:validation:Optional
+ Options *MonitorLogOptions `json:"options,omitempty"`
+}
+
+func (in *MonitorLogQuery) Attributes() *console.MonitorLogQueryAttributes {
+ if in == nil {
+ return nil
+ }
+
+ return &console.MonitorLogQueryAttributes{
+ Tool: in.Tool,
+ Query: in.Query,
+ BucketSize: in.BucketSize,
+ Duration: in.Duration,
+ Operator: in.Operator,
+ Facets: lo.Map(in.Facets, func(f MonitorFacet, _ int) *console.MonitorFacetAttributes {
+ return &console.MonitorFacetAttributes{Key: f.Key, Value: f.Value}
+ }),
+ Options: in.Options.Attributes(),
+ }
+}
+
+// MonitorFacet is a key/value facet used to further filter log queries.
+type MonitorFacet struct {
+ // Key is the facet key (e.g. kubernetes namespace or pod label name).
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ Key string `json:"key"`
+
+ // Value is the facet value to match for the given key.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ Value string `json:"value"`
+}
+
+// MonitorLogOptions are provider-specific log query options.
+type MonitorLogOptions struct {
+ // Azure log query options.
+ // +kubebuilder:validation:Optional
+ Azure *MonitorLogAzureOptions `json:"azure,omitempty"`
+}
+
+func (in *MonitorLogOptions) Attributes() *console.MonitorLogOptionsAttributes {
+ if in == nil {
+ return nil
+ }
+
+ var azure *console.MonitorLogAzureOptionsAttributes
+ if in.Azure != nil {
+ azure = &console.MonitorLogAzureOptionsAttributes{ResourceID: in.Azure.ResourceID}
+ }
+
+ return &console.MonitorLogOptionsAttributes{Azure: azure}
+}
+
+// MonitorLogAzureOptions are Azure-specific log query options.
+type MonitorLogAzureOptions struct {
+ // ResourceID is the Azure resource ID to query logs for.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ ResourceID *string `json:"resourceId,omitempty"`
+}
+
+// MonitorMetricsQuery is the metrics query configuration for a monitor.
+type MonitorMetricsQuery struct {
+ // Tool is the named workbench metrics tool. When omitted, the native Plural metrics provider is used.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Tool *string `json:"tool,omitempty"`
+
+ // Query is the metrics query string passed through to the underlying metrics provider.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ Query string `json:"query"`
+
+ // Step is the metrics query step (e.g. 5m).
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[0-9]+[dmhs]$`
+ Step *string `json:"step,omitempty"`
+
+ // Duration is the lookback duration for the metrics query (e.g. 1h).
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[0-9]+[dmhs]$`
+ Duration *string `json:"duration,omitempty"`
+
+ // Options are provider-specific metrics query options.
+ // +kubebuilder:validation:Optional
+ Options *MonitorMetricsOptions `json:"options,omitempty"`
+}
+
+func (in *MonitorMetricsQuery) Attributes() *console.MonitorMetricsQueryAttributes {
+ if in == nil {
+ return nil
+ }
+
+ return &console.MonitorMetricsQueryAttributes{
+ Tool: in.Tool,
+ Query: in.Query,
+ Step: in.Step,
+ Duration: in.Duration,
+ Options: in.Options.Attributes(),
+ }
+}
+
+// MonitorMetricsOptions are provider-specific metrics query options.
+type MonitorMetricsOptions struct {
+ // Azure metrics query options.
+ // +kubebuilder:validation:Optional
+ Azure *MonitorMetricsAzureOptions `json:"azure,omitempty"`
+}
+
+func (in *MonitorMetricsOptions) Attributes() *console.MonitorMetricsOptionsAttributes {
+ if in == nil {
+ return nil
+ }
+
+ var azure *console.MonitorMetricsAzureOptionsAttributes
+ if in.Azure != nil {
+ azure = &console.MonitorMetricsAzureOptionsAttributes{
+ ResourceID: in.Azure.ResourceID,
+ MetricsNamespace: in.Azure.MetricsNamespace,
+ Aggregation: in.Azure.Aggregation,
+ Filter: in.Azure.Filter,
+ OrderBy: in.Azure.OrderBy,
+ RollUpBy: in.Azure.RollUpBy,
+ MetricsEndpoint: in.Azure.MetricsEndpoint,
+ }
+ }
+
+ return &console.MonitorMetricsOptionsAttributes{Azure: azure}
+}
+
+// MonitorMetricsAzureOptions are Azure-specific metrics query options.
+type MonitorMetricsAzureOptions struct {
+ // ResourceID is the Azure resource ID to query metrics for.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ ResourceID *string `json:"resourceId,omitempty"`
+
+ // MetricsNamespace is the Azure metrics namespace.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ MetricsNamespace *string `json:"metricsNamespace,omitempty"`
+
+ // Aggregation is the Azure metrics aggregation type.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Aggregation *string `json:"aggregation,omitempty"`
+
+ // Filter is the Azure metrics filter expression.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ Filter *string `json:"filter,omitempty"`
+
+ // OrderBy is the Azure metrics ordering expression.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ OrderBy *string `json:"orderBy,omitempty"`
+
+ // RollUpBy is the Azure metrics dimension to roll up by.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ RollUpBy *string `json:"rollUpBy,omitempty"`
+
+ // MetricsEndpoint is the Azure metrics endpoint override.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ MetricsEndpoint *string `json:"metricsEndpoint,omitempty"`
+}
diff --git a/go/controller/api/v1alpha1/workbenchjobmodes_types.go b/go/controller/api/v1alpha1/workbenchjobmodes_types.go
new file mode 100644
index 0000000000..463e034cae
--- /dev/null
+++ b/go/controller/api/v1alpha1/workbenchjobmodes_types.go
@@ -0,0 +1,186 @@
+/*
+Copyright 2023.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1alpha1
+
+import (
+ "fmt"
+ "strconv"
+
+ "github.com/samber/lo"
+
+ console "github.com/pluralsh/console/go/client"
+)
+
+// WorkbenchJobModes defines mode-specific options for workbench jobs.
+type WorkbenchJobModes struct {
+ // Plan enables planning mode for the job.
+ // +kubebuilder:validation:Optional
+ Plan *bool `json:"plan,omitempty"`
+
+ // Verification enables verification mode for the job.
+ // +kubebuilder:validation:Optional
+ Verification *bool `json:"verification,omitempty"`
+
+ // Model overrides the AI model used for the job.
+ // +kubebuilder:validation:Optional
+ Model *WorkbenchJobModel `json:"model,omitempty"`
+
+ // Coding defines coding mode options for the job.
+ // +kubebuilder:validation:Optional
+ Coding *WorkbenchJobCodingModes `json:"coding,omitempty"`
+
+ // Budget defines budget limits for the job.
+ // +kubebuilder:validation:Optional
+ Budget *WorkbenchJobBudget `json:"budget,omitempty"`
+
+ // Kubernetes defines kubernetes action options for the job.
+ // +kubebuilder:validation:Optional
+ Kubernetes *WorkbenchJobKubernetesModes `json:"kubernetes,omitempty"`
+}
+
+func (in *WorkbenchJobModes) Attributes() (*console.WorkbenchJobModesAttributes, error) {
+ if in == nil {
+ return nil, nil
+ }
+
+ budget, err := in.Budget.Attributes()
+ if err != nil {
+ return nil, err
+ }
+
+ attrs := &console.WorkbenchJobModesAttributes{
+ Plan: in.Plan,
+ Verification: in.Verification,
+ Budget: budget,
+ }
+
+ if in.Model != nil {
+ attrs.Model = &console.WorkbenchJobModelAttributes{
+ Provider: in.Model.Provider,
+ Model: in.Model.Model,
+ }
+ }
+
+ if in.Coding != nil {
+ attrs.Coding = &console.WorkbenchJobCodingModesAttributes{
+ Babysit: in.Coding.Babysit,
+ Approval: in.Coding.Approval,
+ Review: in.Coding.Review,
+ }
+ }
+
+ if in.Kubernetes != nil {
+ attrs.Kubernetes = &console.WorkbenchJobKubernetesModesAttributes{
+ Update: in.Kubernetes.Update,
+ Delete: in.Kubernetes.Delete,
+ Exec: in.Kubernetes.Exec,
+ Drain: in.Kubernetes.Drain,
+ ExcludeNamespaces: lo.ToSlicePtr(in.Kubernetes.ExcludeNamespaces),
+ RequireNamespaces: lo.ToSlicePtr(in.Kubernetes.RequireNamespaces),
+ }
+ }
+
+ return attrs, nil
+}
+
+// WorkbenchJobModel defines the AI model override for a workbench job.
+type WorkbenchJobModel struct {
+ // Provider is the AI provider for the job.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Enum=OPENAI;ANTHROPIC;OLLAMA;AZURE;BEDROCK;VERTEX;OPENAI_COMPATIBLE;XAI
+ Provider console.AiProvider `json:"provider"`
+
+ // Model is the model name for the job.
+ // +kubebuilder:validation:Required
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:MinLength=1
+ Model string `json:"model"`
+}
+
+// WorkbenchJobCodingModes defines coding mode options for a workbench job.
+type WorkbenchJobCodingModes struct {
+ // Babysit enables babysit mode for coding agent runs.
+ // +kubebuilder:validation:Optional
+ Babysit *bool `json:"babysit,omitempty"`
+
+ // Approval requires approval before coding agent runs continue.
+ // +kubebuilder:validation:Optional
+ Approval *bool `json:"approval,omitempty"`
+
+ // Review enables pull request review mode for coding agent runs.
+ // +kubebuilder:validation:Optional
+ Review *bool `json:"review,omitempty"`
+}
+
+// WorkbenchJobBudget defines budget limits for a workbench job.
+type WorkbenchJobBudget struct {
+ // Cost is the maximum cost budget for the job.
+ // It is a string to allow decimal values (e.g. "12.5").
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Type:=string
+ // +kubebuilder:validation:Pattern=`^[0-9]+(\.[0-9]+)?$`
+ Cost *string `json:"cost,omitempty"`
+
+ // Tokens is the maximum token budget for the job.
+ // +kubebuilder:validation:Optional
+ // +kubebuilder:validation:Minimum=0
+ Tokens *int64 `json:"tokens,omitempty"`
+}
+
+func (in *WorkbenchJobBudget) Attributes() (*console.WorkbenchJobBudgetAttributes, error) {
+ if in == nil {
+ return nil, nil
+ }
+
+ attrs := &console.WorkbenchJobBudgetAttributes{Tokens: in.Tokens}
+ if in.Cost != nil {
+ cost, err := strconv.ParseFloat(*in.Cost, 64)
+ if err != nil {
+ return nil, fmt.Errorf("invalid budget cost %q: %w", *in.Cost, err)
+ }
+ attrs.Cost = &cost
+ }
+
+ return attrs, nil
+}
+
+// WorkbenchJobKubernetesModes defines kubernetes action options for a workbench job.
+type WorkbenchJobKubernetesModes struct {
+ // Update enables kubernetes update actions.
+ // +kubebuilder:validation:Optional
+ Update *bool `json:"update,omitempty"`
+
+ // Delete enables kubernetes delete actions.
+ // +kubebuilder:validation:Optional
+ Delete *bool `json:"delete,omitempty"`
+
+ // Exec enables kubernetes exec actions.
+ // +kubebuilder:validation:Optional
+ Exec *bool `json:"exec,omitempty"`
+
+ // Drain enables kubernetes node drain actions.
+ // +kubebuilder:validation:Optional
+ Drain *bool `json:"drain,omitempty"`
+
+ // ExcludeNamespaces are namespaces the agent can never act in.
+ // +kubebuilder:validation:Optional
+ ExcludeNamespaces []string `json:"excludeNamespaces,omitempty"`
+
+ // RequireNamespaces, if set, are the only namespaces the agent is allowed to act in.
+ // +kubebuilder:validation:Optional
+ RequireNamespaces []string `json:"requireNamespaces,omitempty"`
+}
diff --git a/go/controller/api/v1alpha1/zz_generated.deepcopy.go b/go/controller/api/v1alpha1/zz_generated.deepcopy.go
index 39209fc158..d95bfa3d79 100644
--- a/go/controller/api/v1alpha1/zz_generated.deepcopy.go
+++ b/go/controller/api/v1alpha1/zz_generated.deepcopy.go
@@ -2536,6 +2536,232 @@ func (in *CustomStackRunSpec) DeepCopy() *CustomStackRunSpec {
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Dashboard) DeepCopyInto(out *Dashboard) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ in.Status.DeepCopyInto(&out.Status)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Dashboard.
+func (in *Dashboard) DeepCopy() *Dashboard {
+ if in == nil {
+ return nil
+ }
+ out := new(Dashboard)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *Dashboard) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ }
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardDatasource) DeepCopyInto(out *DashboardDatasource) {
+ *out = *in
+ in.Input.DeepCopyInto(&out.Input)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardDatasource.
+func (in *DashboardDatasource) DeepCopy() *DashboardDatasource {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardDatasource)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardGraph) DeepCopyInto(out *DashboardGraph) {
+ *out = *in
+ if in.Title != nil {
+ in, out := &in.Title, &out.Title
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.SectionID != nil {
+ in, out := &in.SectionID, &out.SectionID
+ *out = new(string)
+ **out = **in
+ }
+ if in.Markdown != nil {
+ in, out := &in.Markdown, &out.Markdown
+ *out = new(string)
+ **out = **in
+ }
+ if in.Options != nil {
+ in, out := &in.Options, &out.Options
+ *out = new(runtime.RawExtension)
+ (*in).DeepCopyInto(*out)
+ }
+ out.Layout = in.Layout
+ if in.Datasource != nil {
+ in, out := &in.Datasource, &out.Datasource
+ *out = new(DashboardDatasource)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardGraph.
+func (in *DashboardGraph) DeepCopy() *DashboardGraph {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardGraph)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardGraphLayout) DeepCopyInto(out *DashboardGraphLayout) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardGraphLayout.
+func (in *DashboardGraphLayout) DeepCopy() *DashboardGraphLayout {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardGraphLayout)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardInput) DeepCopyInto(out *DashboardInput) {
+ *out = *in
+ if in.Label != nil {
+ in, out := &in.Label, &out.Label
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.Default != nil {
+ in, out := &in.Default, &out.Default
+ *out = new(string)
+ **out = **in
+ }
+ if in.Options != nil {
+ in, out := &in.Options, &out.Options
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
+ if in.Required != nil {
+ in, out := &in.Required, &out.Required
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Datasource != nil {
+ in, out := &in.Datasource, &out.Datasource
+ *out = new(DashboardDatasource)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardInput.
+func (in *DashboardInput) DeepCopy() *DashboardInput {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardInput)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardList) DeepCopyInto(out *DashboardList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ListMeta.DeepCopyInto(&out.ListMeta)
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]Dashboard, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardList.
+func (in *DashboardList) DeepCopy() *DashboardList {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *DashboardList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ }
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *DashboardSpec) DeepCopyInto(out *DashboardSpec) {
+ *out = *in
+ out.WorkbenchRef = in.WorkbenchRef
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.Graphs != nil {
+ in, out := &in.Graphs, &out.Graphs
+ *out = make([]DashboardGraph, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Inputs != nil {
+ in, out := &in.Inputs, &out.Inputs
+ *out = make([]DashboardInput, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+ if in.Reconciliation != nil {
+ in, out := &in.Reconciliation, &out.Reconciliation
+ *out = new(Reconciliation)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardSpec.
+func (in *DashboardSpec) DeepCopy() *DashboardSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(DashboardSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DeploymentSettings) DeepCopyInto(out *DeploymentSettings) {
*out = *in
@@ -4515,156 +4741,517 @@ func (in *ManagedNamespace) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
- return nil
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ManagedNamespaceList) DeepCopyInto(out *ManagedNamespaceList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ListMeta.DeepCopyInto(&out.ListMeta)
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]ManagedNamespace, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedNamespaceList.
+func (in *ManagedNamespaceList) DeepCopy() *ManagedNamespaceList {
+ if in == nil {
+ return nil
+ }
+ out := new(ManagedNamespaceList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *ManagedNamespaceList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ }
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *ManagedNamespaceSpec) DeepCopyInto(out *ManagedNamespaceSpec) {
+ *out = *in
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
+ **out = **in
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
+ *out = new(string)
+ **out = **in
+ }
+ if in.Cascade != nil {
+ in, out := &in.Cascade, &out.Cascade
+ *out = new(Cascade)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Labels != nil {
+ in, out := &in.Labels, &out.Labels
+ *out = make(map[string]string, len(*in))
+ for key, val := range *in {
+ (*out)[key] = val
+ }
+ }
+ if in.Annotations != nil {
+ in, out := &in.Annotations, &out.Annotations
+ *out = make(map[string]string, len(*in))
+ for key, val := range *in {
+ (*out)[key] = val
+ }
+ }
+ if in.PullSecrets != nil {
+ in, out := &in.PullSecrets, &out.PullSecrets
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
+ if in.Service != nil {
+ in, out := &in.Service, &out.Service
+ *out = new(ServiceTemplate)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Target != nil {
+ in, out := &in.Target, &out.Target
+ *out = new(ClusterTarget)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.ProjectRef != nil {
+ in, out := &in.ProjectRef, &out.ProjectRef
+ *out = new(v1.ObjectReference)
+ **out = **in
+ }
+ if in.Reconciliation != nil {
+ in, out := &in.Reconciliation, &out.Reconciliation
+ *out = new(Reconciliation)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedNamespaceSpec.
+func (in *ManagedNamespaceSpec) DeepCopy() *ManagedNamespaceSpec {
+ if in == nil {
+ return nil
+ }
+ out := new(ManagedNamespaceSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MetadataTemplate) DeepCopyInto(out *MetadataTemplate) {
+ *out = *in
+ if in.Namespace != nil {
+ in, out := &in.Namespace, &out.Namespace
+ *out = new(string)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataTemplate.
+func (in *MetadataTemplate) DeepCopy() *MetadataTemplate {
+ if in == nil {
+ return nil
+ }
+ out := new(MetadataTemplate)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MetricsSettings) DeepCopyInto(out *MetricsSettings) {
+ *out = *in
+ if in.Enabled != nil {
+ in, out := &in.Enabled, &out.Enabled
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Endpoint != nil {
+ in, out := &in.Endpoint, &out.Endpoint
+ *out = new(string)
+ **out = **in
+ }
+ if in.Crontab != nil {
+ in, out := &in.Crontab, &out.Crontab
+ *out = new(string)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSettings.
+func (in *MetricsSettings) DeepCopy() *MetricsSettings {
+ if in == nil {
+ return nil
+ }
+ out := new(MetricsSettings)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Monitor) DeepCopyInto(out *Monitor) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+ in.Spec.DeepCopyInto(&out.Spec)
+ in.Status.DeepCopyInto(&out.Status)
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Monitor.
+func (in *Monitor) DeepCopy() *Monitor {
+ if in == nil {
+ return nil
+ }
+ out := new(Monitor)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *Monitor) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ }
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorFacet) DeepCopyInto(out *MonitorFacet) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorFacet.
+func (in *MonitorFacet) DeepCopy() *MonitorFacet {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorFacet)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorList) DeepCopyInto(out *MonitorList) {
+ *out = *in
+ out.TypeMeta = in.TypeMeta
+ in.ListMeta.DeepCopyInto(&out.ListMeta)
+ if in.Items != nil {
+ in, out := &in.Items, &out.Items
+ *out = make([]Monitor, len(*in))
+ for i := range *in {
+ (*in)[i].DeepCopyInto(&(*out)[i])
+ }
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorList.
+func (in *MonitorList) DeepCopy() *MonitorList {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorList)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *MonitorList) DeepCopyObject() runtime.Object {
+ if c := in.DeepCopy(); c != nil {
+ return c
+ }
+ return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorLogAzureOptions) DeepCopyInto(out *MonitorLogAzureOptions) {
+ *out = *in
+ if in.ResourceID != nil {
+ in, out := &in.ResourceID, &out.ResourceID
+ *out = new(string)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorLogAzureOptions.
+func (in *MonitorLogAzureOptions) DeepCopy() *MonitorLogAzureOptions {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorLogAzureOptions)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorLogOptions) DeepCopyInto(out *MonitorLogOptions) {
+ *out = *in
+ if in.Azure != nil {
+ in, out := &in.Azure, &out.Azure
+ *out = new(MonitorLogAzureOptions)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorLogOptions.
+func (in *MonitorLogOptions) DeepCopy() *MonitorLogOptions {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorLogOptions)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorLogQuery) DeepCopyInto(out *MonitorLogQuery) {
+ *out = *in
+ if in.Tool != nil {
+ in, out := &in.Tool, &out.Tool
+ *out = new(string)
+ **out = **in
+ }
+ if in.Duration != nil {
+ in, out := &in.Duration, &out.Duration
+ *out = new(string)
+ **out = **in
+ }
+ if in.Operator != nil {
+ in, out := &in.Operator, &out.Operator
+ *out = new(client.MonitorOperator)
+ **out = **in
+ }
+ if in.Facets != nil {
+ in, out := &in.Facets, &out.Facets
+ *out = make([]MonitorFacet, len(*in))
+ copy(*out, *in)
+ }
+ if in.Options != nil {
+ in, out := &in.Options, &out.Options
+ *out = new(MonitorLogOptions)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorLogQuery.
+func (in *MonitorLogQuery) DeepCopy() *MonitorLogQuery {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorLogQuery)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorMetricsAzureOptions) DeepCopyInto(out *MonitorMetricsAzureOptions) {
+ *out = *in
+ if in.ResourceID != nil {
+ in, out := &in.ResourceID, &out.ResourceID
+ *out = new(string)
+ **out = **in
+ }
+ if in.MetricsNamespace != nil {
+ in, out := &in.MetricsNamespace, &out.MetricsNamespace
+ *out = new(string)
+ **out = **in
+ }
+ if in.Aggregation != nil {
+ in, out := &in.Aggregation, &out.Aggregation
+ *out = new(string)
+ **out = **in
+ }
+ if in.Filter != nil {
+ in, out := &in.Filter, &out.Filter
+ *out = new(string)
+ **out = **in
+ }
+ if in.OrderBy != nil {
+ in, out := &in.OrderBy, &out.OrderBy
+ *out = new(string)
+ **out = **in
+ }
+ if in.RollUpBy != nil {
+ in, out := &in.RollUpBy, &out.RollUpBy
+ *out = new(string)
+ **out = **in
+ }
+ if in.MetricsEndpoint != nil {
+ in, out := &in.MetricsEndpoint, &out.MetricsEndpoint
+ *out = new(string)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorMetricsAzureOptions.
+func (in *MonitorMetricsAzureOptions) DeepCopy() *MonitorMetricsAzureOptions {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorMetricsAzureOptions)
+ in.DeepCopyInto(out)
+ return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ManagedNamespaceList) DeepCopyInto(out *ManagedNamespaceList) {
+func (in *MonitorMetricsOptions) DeepCopyInto(out *MonitorMetricsOptions) {
*out = *in
- out.TypeMeta = in.TypeMeta
- in.ListMeta.DeepCopyInto(&out.ListMeta)
- if in.Items != nil {
- in, out := &in.Items, &out.Items
- *out = make([]ManagedNamespace, len(*in))
- for i := range *in {
- (*in)[i].DeepCopyInto(&(*out)[i])
- }
+ if in.Azure != nil {
+ in, out := &in.Azure, &out.Azure
+ *out = new(MonitorMetricsAzureOptions)
+ (*in).DeepCopyInto(*out)
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedNamespaceList.
-func (in *ManagedNamespaceList) DeepCopy() *ManagedNamespaceList {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorMetricsOptions.
+func (in *MonitorMetricsOptions) DeepCopy() *MonitorMetricsOptions {
if in == nil {
return nil
}
- out := new(ManagedNamespaceList)
+ out := new(MonitorMetricsOptions)
in.DeepCopyInto(out)
return out
}
-// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
-func (in *ManagedNamespaceList) DeepCopyObject() runtime.Object {
- if c := in.DeepCopy(); c != nil {
- return c
- }
- return nil
-}
-
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ManagedNamespaceSpec) DeepCopyInto(out *ManagedNamespaceSpec) {
+func (in *MonitorMetricsQuery) DeepCopyInto(out *MonitorMetricsQuery) {
*out = *in
- if in.Name != nil {
- in, out := &in.Name, &out.Name
+ if in.Tool != nil {
+ in, out := &in.Tool, &out.Tool
*out = new(string)
**out = **in
}
- if in.Description != nil {
- in, out := &in.Description, &out.Description
+ if in.Step != nil {
+ in, out := &in.Step, &out.Step
*out = new(string)
**out = **in
}
- if in.Cascade != nil {
- in, out := &in.Cascade, &out.Cascade
- *out = new(Cascade)
- (*in).DeepCopyInto(*out)
- }
- if in.Labels != nil {
- in, out := &in.Labels, &out.Labels
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.Annotations != nil {
- in, out := &in.Annotations, &out.Annotations
- *out = make(map[string]string, len(*in))
- for key, val := range *in {
- (*out)[key] = val
- }
- }
- if in.PullSecrets != nil {
- in, out := &in.PullSecrets, &out.PullSecrets
- *out = make([]string, len(*in))
- copy(*out, *in)
- }
- if in.Service != nil {
- in, out := &in.Service, &out.Service
- *out = new(ServiceTemplate)
- (*in).DeepCopyInto(*out)
- }
- if in.Target != nil {
- in, out := &in.Target, &out.Target
- *out = new(ClusterTarget)
- (*in).DeepCopyInto(*out)
- }
- if in.ProjectRef != nil {
- in, out := &in.ProjectRef, &out.ProjectRef
- *out = new(v1.ObjectReference)
+ if in.Duration != nil {
+ in, out := &in.Duration, &out.Duration
+ *out = new(string)
**out = **in
}
- if in.Reconciliation != nil {
- in, out := &in.Reconciliation, &out.Reconciliation
- *out = new(Reconciliation)
+ if in.Options != nil {
+ in, out := &in.Options, &out.Options
+ *out = new(MonitorMetricsOptions)
(*in).DeepCopyInto(*out)
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedNamespaceSpec.
-func (in *ManagedNamespaceSpec) DeepCopy() *ManagedNamespaceSpec {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorMetricsQuery.
+func (in *MonitorMetricsQuery) DeepCopy() *MonitorMetricsQuery {
if in == nil {
return nil
}
- out := new(ManagedNamespaceSpec)
+ out := new(MonitorMetricsQuery)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MetadataTemplate) DeepCopyInto(out *MetadataTemplate) {
+func (in *MonitorQuery) DeepCopyInto(out *MonitorQuery) {
*out = *in
- if in.Namespace != nil {
- in, out := &in.Namespace, &out.Namespace
- *out = new(string)
- **out = **in
+ if in.Log != nil {
+ in, out := &in.Log, &out.Log
+ *out = new(MonitorLogQuery)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Metrics != nil {
+ in, out := &in.Metrics, &out.Metrics
+ *out = new(MonitorMetricsQuery)
+ (*in).DeepCopyInto(*out)
}
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataTemplate.
-func (in *MetadataTemplate) DeepCopy() *MetadataTemplate {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorQuery.
+func (in *MonitorQuery) DeepCopy() *MonitorQuery {
if in == nil {
return nil
}
- out := new(MetadataTemplate)
+ out := new(MonitorQuery)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *MetricsSettings) DeepCopyInto(out *MetricsSettings) {
+func (in *MonitorSpec) DeepCopyInto(out *MonitorSpec) {
*out = *in
- if in.Enabled != nil {
- in, out := &in.Enabled, &out.Enabled
- *out = new(bool)
+ if in.Name != nil {
+ in, out := &in.Name, &out.Name
+ *out = new(string)
**out = **in
}
- if in.Endpoint != nil {
- in, out := &in.Endpoint, &out.Endpoint
+ if in.ServiceRef != nil {
+ in, out := &in.ServiceRef, &out.ServiceRef
+ *out = new(v1.LocalObjectReference)
+ **out = **in
+ }
+ if in.Service != nil {
+ in, out := &in.Service, &out.Service
*out = new(string)
**out = **in
}
- if in.Crontab != nil {
- in, out := &in.Crontab, &out.Crontab
+ if in.WorkbenchRef != nil {
+ in, out := &in.WorkbenchRef, &out.WorkbenchRef
+ *out = new(v1.LocalObjectReference)
+ **out = **in
+ }
+ if in.Prompt != nil {
+ in, out := &in.Prompt, &out.Prompt
+ *out = new(string)
+ **out = **in
+ }
+ if in.Modes != nil {
+ in, out := &in.Modes, &out.Modes
+ *out = new(WorkbenchJobModes)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Description != nil {
+ in, out := &in.Description, &out.Description
*out = new(string)
**out = **in
}
+ if in.AlertTemplate != nil {
+ in, out := &in.AlertTemplate, &out.AlertTemplate
+ *out = new(string)
+ **out = **in
+ }
+ in.Query.DeepCopyInto(&out.Query)
+ out.Threshold = in.Threshold
+ if in.Reconciliation != nil {
+ in, out := &in.Reconciliation, &out.Reconciliation
+ *out = new(Reconciliation)
+ (*in).DeepCopyInto(*out)
+ }
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsSettings.
-func (in *MetricsSettings) DeepCopy() *MetricsSettings {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorSpec.
+func (in *MonitorSpec) DeepCopy() *MonitorSpec {
if in == nil {
return nil
}
- out := new(MetricsSettings)
+ out := new(MonitorSpec)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *MonitorThreshold) DeepCopyInto(out *MonitorThreshold) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorThreshold.
+func (in *MonitorThreshold) DeepCopy() *MonitorThreshold {
+ if in == nil {
+ return nil
+ }
+ out := new(MonitorThreshold)
in.DeepCopyInto(out)
return out
}
@@ -10871,6 +11458,166 @@ func (in *WorkbenchInfrastructureConfig) DeepCopy() *WorkbenchInfrastructureConf
return out
}
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WorkbenchJobBudget) DeepCopyInto(out *WorkbenchJobBudget) {
+ *out = *in
+ if in.Cost != nil {
+ in, out := &in.Cost, &out.Cost
+ *out = new(string)
+ **out = **in
+ }
+ if in.Tokens != nil {
+ in, out := &in.Tokens, &out.Tokens
+ *out = new(int64)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkbenchJobBudget.
+func (in *WorkbenchJobBudget) DeepCopy() *WorkbenchJobBudget {
+ if in == nil {
+ return nil
+ }
+ out := new(WorkbenchJobBudget)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WorkbenchJobCodingModes) DeepCopyInto(out *WorkbenchJobCodingModes) {
+ *out = *in
+ if in.Babysit != nil {
+ in, out := &in.Babysit, &out.Babysit
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Approval != nil {
+ in, out := &in.Approval, &out.Approval
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Review != nil {
+ in, out := &in.Review, &out.Review
+ *out = new(bool)
+ **out = **in
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkbenchJobCodingModes.
+func (in *WorkbenchJobCodingModes) DeepCopy() *WorkbenchJobCodingModes {
+ if in == nil {
+ return nil
+ }
+ out := new(WorkbenchJobCodingModes)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WorkbenchJobKubernetesModes) DeepCopyInto(out *WorkbenchJobKubernetesModes) {
+ *out = *in
+ if in.Update != nil {
+ in, out := &in.Update, &out.Update
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Delete != nil {
+ in, out := &in.Delete, &out.Delete
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Exec != nil {
+ in, out := &in.Exec, &out.Exec
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Drain != nil {
+ in, out := &in.Drain, &out.Drain
+ *out = new(bool)
+ **out = **in
+ }
+ if in.ExcludeNamespaces != nil {
+ in, out := &in.ExcludeNamespaces, &out.ExcludeNamespaces
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
+ if in.RequireNamespaces != nil {
+ in, out := &in.RequireNamespaces, &out.RequireNamespaces
+ *out = make([]string, len(*in))
+ copy(*out, *in)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkbenchJobKubernetesModes.
+func (in *WorkbenchJobKubernetesModes) DeepCopy() *WorkbenchJobKubernetesModes {
+ if in == nil {
+ return nil
+ }
+ out := new(WorkbenchJobKubernetesModes)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WorkbenchJobModel) DeepCopyInto(out *WorkbenchJobModel) {
+ *out = *in
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkbenchJobModel.
+func (in *WorkbenchJobModel) DeepCopy() *WorkbenchJobModel {
+ if in == nil {
+ return nil
+ }
+ out := new(WorkbenchJobModel)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *WorkbenchJobModes) DeepCopyInto(out *WorkbenchJobModes) {
+ *out = *in
+ if in.Plan != nil {
+ in, out := &in.Plan, &out.Plan
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Verification != nil {
+ in, out := &in.Verification, &out.Verification
+ *out = new(bool)
+ **out = **in
+ }
+ if in.Model != nil {
+ in, out := &in.Model, &out.Model
+ *out = new(WorkbenchJobModel)
+ **out = **in
+ }
+ if in.Coding != nil {
+ in, out := &in.Coding, &out.Coding
+ *out = new(WorkbenchJobCodingModes)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Budget != nil {
+ in, out := &in.Budget, &out.Budget
+ *out = new(WorkbenchJobBudget)
+ (*in).DeepCopyInto(*out)
+ }
+ if in.Kubernetes != nil {
+ in, out := &in.Kubernetes, &out.Kubernetes
+ *out = new(WorkbenchJobKubernetesModes)
+ (*in).DeepCopyInto(*out)
+ }
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkbenchJobModes.
+func (in *WorkbenchJobModes) DeepCopy() *WorkbenchJobModes {
+ if in == nil {
+ return nil
+ }
+ out := new(WorkbenchJobModes)
+ in.DeepCopyInto(out)
+ return out
+}
+
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkbenchList) DeepCopyInto(out *WorkbenchList) {
*out = *in
diff --git a/go/controller/cmd/register.go b/go/controller/cmd/register.go
index 4b9f6045bd..a6de2ae958 100644
--- a/go/controller/cmd/register.go
+++ b/go/controller/cmd/register.go
@@ -535,4 +535,24 @@ func init() {
Scheme: mgr.GetScheme(),
}
})
+
+ types.RegisterController(types.MonitorReconciler, func(mgr ctrl.Manager, consoleClient client.ConsoleClient,
+ credentialsCache credentials.NamespaceCredentialsCache) types.Controller {
+ return &controller.MonitorReconciler{
+ Client: mgr.GetClient(),
+ ConsoleClient: consoleClient,
+ Scheme: mgr.GetScheme(),
+ CredentialsCache: credentialsCache,
+ }
+ })
+
+ types.RegisterController(types.DashboardReconciler, func(mgr ctrl.Manager, consoleClient client.ConsoleClient,
+ credentialsCache credentials.NamespaceCredentialsCache) types.Controller {
+ return &controller.DashboardReconciler{
+ Client: mgr.GetClient(),
+ ConsoleClient: consoleClient,
+ Scheme: mgr.GetScheme(),
+ CredentialsCache: credentialsCache,
+ }
+ })
}
diff --git a/go/controller/config/crd/bases/deployments.plural.sh_dashboards.yaml b/go/controller/config/crd/bases/deployments.plural.sh_dashboards.yaml
new file mode 100644
index 0000000000..3ccebf4055
--- /dev/null
+++ b/go/controller/config/crd/bases/deployments.plural.sh_dashboards.yaml
@@ -0,0 +1,389 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.19.0
+ name: dashboards.deployments.plural.sh
+spec:
+ group: deployments.plural.sh
+ names:
+ kind: Dashboard
+ listKind: DashboardList
+ plural: dashboards
+ singular: dashboard
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - description: ID of the Dashboard in the Console API.
+ jsonPath: .status.id
+ name: ID
+ type: string
+ - description: Whether the Dashboard is ready.
+ jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: READY
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs
+ arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec defines the desired state of the Dashboard.
+ properties:
+ description:
+ description: Description is an optional dashboard description.
+ type: string
+ graphs:
+ description: |-
+ Graphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
+ Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
+ Note that overlapping graph layouts are only validated by the Console API.
+ items:
+ description: DashboardGraph is a single graph placed on the dashboard
+ grid.
+ properties:
+ datasource:
+ description: Datasource is the tool call used to fetch external
+ data.
+ properties:
+ input:
+ description: Input is passed to the observability tool.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ tool:
+ description: Tool is the name of the observability tool
+ used to fetch the data.
+ minLength: 1
+ type: string
+ type:
+ description: Type is the kind of data returned by the datasource.
+ enum:
+ - LOGS
+ - METRICS
+ - TRACES
+ - LABELS
+ type: string
+ required:
+ - input
+ - tool
+ - type
+ type: object
+ description:
+ description: Description is an optional graph description.
+ type: string
+ identifier:
+ description: Identifier is a stable identifier unique within
+ the dashboard.
+ maxLength: 128
+ minLength: 1
+ type: string
+ layout:
+ description: Layout is the grid position and size of the graph.
+ properties:
+ h:
+ description: H is the height in grid rows.
+ format: int64
+ minimum: 1
+ type: integer
+ w:
+ description: W is the width in grid columns.
+ format: int64
+ minimum: 1
+ type: integer
+ x:
+ description: X is the zero-based horizontal grid coordinate.
+ format: int64
+ minimum: 0
+ type: integer
+ "y":
+ description: Y is the zero-based vertical grid coordinate.
+ format: int64
+ minimum: 0
+ type: integer
+ required:
+ - h
+ - w
+ - x
+ - "y"
+ type: object
+ markdown:
+ description: Markdown is the content for MARKDOWN graphs.
+ type: string
+ options:
+ description: Options are visualization-specific display options.
+ Sections may set collapsed.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ sectionId:
+ description: SectionID is the identifier of the SECTION graph
+ containing this graph. Sections cannot be nested.
+ maxLength: 128
+ type: string
+ title:
+ description: Title is the graph title.
+ type: string
+ type:
+ description: Type is the graph visualization type.
+ enum:
+ - TIMESERIES
+ - GAUGE
+ - LOGS
+ - MARKDOWN
+ - TABLE
+ - STAT
+ - BAR
+ - PIE
+ - HEATMAP
+ - TRACES
+ - SECTION
+ maxLength: 16
+ type: string
+ required:
+ - identifier
+ - layout
+ - type
+ type: object
+ x-kubernetes-validations:
+ - message: markdown must be set for MARKDOWN graphs
+ rule: self.type != 'MARKDOWN' || has(self.markdown)
+ - message: sections cannot be nested, SECTION graphs cannot set
+ sectionId
+ rule: self.type != 'SECTION' || !has(self.sectionId) || size(self.sectionId)
+ == 0
+ maxItems: 200
+ type: array
+ x-kubernetes-list-map-keys:
+ - identifier
+ x-kubernetes-list-type: map
+ inputs:
+ description: Inputs are user-configurable dashboard variables.
+ items:
+ description: DashboardInput is a user-configurable dashboard variable.
+ properties:
+ datasource:
+ description: Datasource is the tool query used to populate input
+ options, such as metric label search.
+ properties:
+ input:
+ description: Input is passed to the observability tool.
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ tool:
+ description: Tool is the name of the observability tool
+ used to fetch the data.
+ minLength: 1
+ type: string
+ type:
+ description: Type is the kind of data returned by the datasource.
+ enum:
+ - LOGS
+ - METRICS
+ - TRACES
+ - LABELS
+ type: string
+ required:
+ - input
+ - tool
+ - type
+ type: object
+ default:
+ description: Default is the default input value.
+ type: string
+ description:
+ description: Description is an optional input description.
+ type: string
+ label:
+ description: Label is a human-readable input label.
+ type: string
+ name:
+ description: Name is the variable name referenced by graph datasource
+ inputs.
+ minLength: 1
+ type: string
+ options:
+ description: Options are the allowed values for select inputs.
+ items:
+ type: string
+ type: array
+ required:
+ description: Required defines whether a value is required when
+ rendering.
+ type: boolean
+ type:
+ description: Type is the input control type.
+ enum:
+ - TEXT
+ - NUMBER
+ - BOOLEAN
+ - SELECT
+ - MULTI_SELECT
+ - TIME_RANGE
+ type: string
+ required:
+ - name
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - name
+ x-kubernetes-list-type: map
+ name:
+ description: |-
+ Name is the dashboard name, unique within its workbench.
+ If not set, metadata.name is used.
+ type: string
+ reconciliation:
+ description: Reconciliation settings for this resource.
+ properties:
+ driftDetection:
+ default: true
+ description: |-
+ DriftDetection enables drift detection for this resource.
+ It is destined to detect changes made to the related
+ resources that are not referenced with owner ref.
+ Use with Interval to set how often drift detection runs.
+ example: false
+ type: boolean
+ interval:
+ default: 30m
+ description: |-
+ Interval for the drift detection mechanism.
+ It is subject to jitter to avoid the thundering herd problem,
+ it is calculated as a random value between 50% and 150% of the given duration.
+ example: 5m30s
+ type: string
+ type: object
+ workbenchRef:
+ description: |-
+ WorkbenchRef references the Workbench that owns this dashboard.
+ The Workbench must be in the same namespace as the dashboard.
+ It is immutable, a dashboard cannot be moved to a different workbench.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ - message: workbenchRef is immutable
+ rule: self == oldSelf
+ required:
+ - workbenchRef
+ type: object
+ x-kubernetes-validations:
+ - message: sectionId must reference an existing SECTION graph
+ rule: '!has(self.graphs) || self.graphs.all(g, !has(g.sectionId) ||
+ size(g.sectionId) == 0 || self.graphs.exists(s, s.type == ''SECTION''
+ && s.identifier == g.sectionId))'
+ status:
+ description: Status represents the current state of this resource.
+ properties:
+ conditions:
+ description: Represents the observations of a PrAutomation's current
+ state.
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ id:
+ description: ID of the resource in the Console API.
+ type: string
+ readonly:
+ default: false
+ description: ReadOnly indicates whether the resource is read-only.
+ type: boolean
+ sha:
+ description: SHA of last applied configuration.
+ type: string
+ required:
+ - readonly
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/go/controller/config/crd/bases/deployments.plural.sh_monitors.yaml b/go/controller/config/crd/bases/deployments.plural.sh_monitors.yaml
new file mode 100644
index 0000000000..1d99e2c4bf
--- /dev/null
+++ b/go/controller/config/crd/bases/deployments.plural.sh_monitors.yaml
@@ -0,0 +1,526 @@
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.19.0
+ name: monitors.deployments.plural.sh
+spec:
+ group: deployments.plural.sh
+ names:
+ kind: Monitor
+ listKind: MonitorList
+ plural: monitors
+ singular: monitor
+ scope: Namespaced
+ versions:
+ - additionalPrinterColumns:
+ - description: ID of the Monitor in the Console API.
+ jsonPath: .status.id
+ name: ID
+ type: string
+ - description: Monitor data type.
+ jsonPath: .spec.type
+ name: TYPE
+ type: string
+ - description: Severity of alerts generated by this Monitor.
+ jsonPath: .spec.severity
+ name: SEVERITY
+ type: string
+ - description: Whether the Monitor is ready.
+ jsonPath: .status.conditions[?(@.type=="Ready")].status
+ name: READY
+ type: string
+ name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: |-
+ Monitor represents an observability monitor attached to a service deployment. It periodically
+ evaluates a log or metrics query against a threshold and fires alerts when it is crossed.
+ Optionally, it can be attached to a workbench to start an investigation when it fires.
+ properties:
+ apiVersion:
+ description: |-
+ APIVersion defines the versioned schema of this representation of an object.
+ Servers should convert recognized schemas to the latest internal value, and
+ may reject unrecognized values.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+ type: string
+ kind:
+ description: |-
+ Kind is a string value representing the REST resource this object represents.
+ Servers may infer this from the endpoint the client submits requests to.
+ Cannot be updated.
+ In CamelCase.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ metadata:
+ type: object
+ spec:
+ description: Spec defines the desired state of the Monitor.
+ properties:
+ alertTemplate:
+ description: AlertTemplate is an optional template used when rendering
+ alert messages for this monitor.
+ type: string
+ description:
+ description: Description is an optional free-form description of what
+ this monitor is checking.
+ type: string
+ evaluationCron:
+ description: |-
+ EvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
+ It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
+ or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
+ @secondly or @reboot shortcuts. Field values are validated by the Console API.
+ minLength: 1
+ pattern: ^(@(?i:yearly|annually|monthly|weekly|daily|midnight|hourly|minutely|secondly|reboot)|[^
+ ]+( [^ ]+){4,5})$
+ type: string
+ modes:
+ description: Modes defines mode-specific options for monitor-triggered
+ workbench jobs.
+ properties:
+ budget:
+ description: Budget defines budget limits for the job.
+ properties:
+ cost:
+ description: |-
+ Cost is the maximum cost budget for the job.
+ It is a string to allow decimal values (e.g. "12.5").
+ pattern: ^[0-9]+(\.[0-9]+)?$
+ type: string
+ tokens:
+ description: Tokens is the maximum token budget for the job.
+ format: int64
+ minimum: 0
+ type: integer
+ type: object
+ coding:
+ description: Coding defines coding mode options for the job.
+ properties:
+ approval:
+ description: Approval requires approval before coding agent
+ runs continue.
+ type: boolean
+ babysit:
+ description: Babysit enables babysit mode for coding agent
+ runs.
+ type: boolean
+ review:
+ description: Review enables pull request review mode for coding
+ agent runs.
+ type: boolean
+ type: object
+ kubernetes:
+ description: Kubernetes defines kubernetes action options for
+ the job.
+ properties:
+ delete:
+ description: Delete enables kubernetes delete actions.
+ type: boolean
+ drain:
+ description: Drain enables kubernetes node drain actions.
+ type: boolean
+ excludeNamespaces:
+ description: ExcludeNamespaces are namespaces the agent can
+ never act in.
+ items:
+ type: string
+ type: array
+ exec:
+ description: Exec enables kubernetes exec actions.
+ type: boolean
+ requireNamespaces:
+ description: RequireNamespaces, if set, are the only namespaces
+ the agent is allowed to act in.
+ items:
+ type: string
+ type: array
+ update:
+ description: Update enables kubernetes update actions.
+ type: boolean
+ type: object
+ model:
+ description: Model overrides the AI model used for the job.
+ properties:
+ model:
+ description: Model is the model name for the job.
+ minLength: 1
+ type: string
+ provider:
+ description: Provider is the AI provider for the job.
+ enum:
+ - OPENAI
+ - ANTHROPIC
+ - OLLAMA
+ - AZURE
+ - BEDROCK
+ - VERTEX
+ - OPENAI_COMPATIBLE
+ - XAI
+ type: string
+ required:
+ - model
+ - provider
+ type: object
+ plan:
+ description: Plan enables planning mode for the job.
+ type: boolean
+ verification:
+ description: Verification enables verification mode for the job.
+ type: boolean
+ type: object
+ name:
+ description: |-
+ Name is the short name used to identify this monitor in the Console API.
+ If not set, metadata.name is used.
+ type: string
+ prompt:
+ description: Prompt is used when the monitor starts a workbench investigation.
+ maxLength: 2048
+ type: string
+ query:
+ description: Query is the underlying query configuration used to fetch
+ data for this monitor.
+ properties:
+ log:
+ description: Log query used when the monitor type is LOG.
+ properties:
+ bucketSize:
+ description: BucketSize is the time bucket size (e.g. 5m)
+ used when aggregating log results.
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ duration:
+ description: Duration is the lookback duration for the log
+ query (e.g. 1h, 10m, 30s).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ facets:
+ description: Facets are optional key/value facets applied
+ as additional filters on the log query.
+ items:
+ description: MonitorFacet is a key/value facet used to further
+ filter log queries.
+ properties:
+ key:
+ description: Key is the facet key (e.g. kubernetes namespace
+ or pod label name).
+ type: string
+ value:
+ description: Value is the facet value to match for the
+ given key.
+ type: string
+ required:
+ - key
+ - value
+ type: object
+ type: array
+ operator:
+ default: OR
+ description: |-
+ Operator to use when combining multiple log queries.
+ Defaults to OR, which is also the Console API default.
+ enum:
+ - OR
+ - AND
+ type: string
+ options:
+ description: Options are provider-specific log query options.
+ properties:
+ azure:
+ description: Azure log query options.
+ properties:
+ resourceId:
+ description: ResourceID is the Azure resource ID to
+ query logs for.
+ type: string
+ type: object
+ type: object
+ query:
+ description: Query is the log query string passed through
+ to the underlying log provider.
+ minLength: 1
+ type: string
+ tool:
+ description: Tool is the named workbench logs tool. When omitted,
+ the native Plural logs provider is used.
+ type: string
+ required:
+ - bucketSize
+ - query
+ type: object
+ metrics:
+ description: Metrics query used when the monitor type is METRICS.
+ properties:
+ duration:
+ description: Duration is the lookback duration for the metrics
+ query (e.g. 1h).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ options:
+ description: Options are provider-specific metrics query options.
+ properties:
+ azure:
+ description: Azure metrics query options.
+ properties:
+ aggregation:
+ description: Aggregation is the Azure metrics aggregation
+ type.
+ type: string
+ filter:
+ description: Filter is the Azure metrics filter expression.
+ type: string
+ metricsEndpoint:
+ description: MetricsEndpoint is the Azure metrics
+ endpoint override.
+ type: string
+ metricsNamespace:
+ description: MetricsNamespace is the Azure metrics
+ namespace.
+ type: string
+ orderBy:
+ description: OrderBy is the Azure metrics ordering
+ expression.
+ type: string
+ resourceId:
+ description: ResourceID is the Azure resource ID to
+ query metrics for.
+ type: string
+ rollUpBy:
+ description: RollUpBy is the Azure metrics dimension
+ to roll up by.
+ type: string
+ type: object
+ type: object
+ query:
+ description: Query is the metrics query string passed through
+ to the underlying metrics provider.
+ minLength: 1
+ type: string
+ step:
+ description: Step is the metrics query step (e.g. 5m).
+ pattern: ^[0-9]+[dmhs]$
+ type: string
+ tool:
+ description: Tool is the named workbench metrics tool. When
+ omitted, the native Plural metrics provider is used.
+ type: string
+ required:
+ - query
+ type: object
+ type: object
+ x-kubernetes-validations:
+ - message: only one of log or metrics can be set
+ rule: '!(has(self.log) && has(self.metrics))'
+ reconciliation:
+ description: Reconciliation settings for this resource.
+ properties:
+ driftDetection:
+ default: true
+ description: |-
+ DriftDetection enables drift detection for this resource.
+ It is destined to detect changes made to the related
+ resources that are not referenced with owner ref.
+ Use with Interval to set how often drift detection runs.
+ example: false
+ type: boolean
+ interval:
+ default: 30m
+ description: |-
+ Interval for the drift detection mechanism.
+ It is subject to jitter to avoid the thundering herd problem,
+ it is calculated as a random value between 50% and 150% of the given duration.
+ example: 5m30s
+ type: string
+ type: object
+ service:
+ description: |-
+ Service references an existing service in the Console API this monitor is attached to,
+ in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
+ a monitor to a service that is not managed by a ServiceDeployment resource.
+ Either ServiceRef or Service must be set.
+ example: mgmt/console
+ pattern: ^[^/]+/[^/]+$
+ type: string
+ serviceRef:
+ description: |-
+ ServiceRef references the ServiceDeployment resource this monitor is attached to.
+ The ServiceDeployment must be in the same namespace as the monitor.
+ Either ServiceRef or Service must be set.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ severity:
+ description: Severity is the severity level applied to alerts generated
+ by this monitor.
+ enum:
+ - LOW
+ - MEDIUM
+ - HIGH
+ - CRITICAL
+ - UNDEFINED
+ type: string
+ threshold:
+ description: Threshold is the configuration that determines when the
+ monitor should fire.
+ properties:
+ aggregate:
+ description: Aggregate is the aggregation function applied over
+ the result set.
+ enum:
+ - MAX
+ - MIN
+ - AVG
+ type: string
+ value:
+ description: |-
+ Value is the numeric value the aggregated metric must cross to trigger the alert.
+ It is a string to allow decimal values (e.g. "0.95").
+ pattern: ^-?[0-9]+(\.[0-9]+)?$
+ type: string
+ required:
+ - aggregate
+ - value
+ type: object
+ type:
+ description: Type is the monitor data type.
+ enum:
+ - LOG
+ - METRICS
+ type: string
+ workbenchRef:
+ description: |-
+ WorkbenchRef references the Workbench this monitor is attached to.
+ When set, the monitor can start a workbench investigation when it fires.
+ It is required if the query uses a named workbench tool.
+ The Workbench must be in the same namespace as the monitor.
+ properties:
+ name:
+ default: ""
+ description: |-
+ Name of the referent.
+ This field is effectively required, but due to backwards compatibility is
+ allowed to be empty. Instances of this type with an empty value here are
+ almost certainly wrong.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ x-kubernetes-validations:
+ - message: name is required
+ rule: has(self.name) && size(self.name) > 0
+ required:
+ - evaluationCron
+ - query
+ - severity
+ - threshold
+ - type
+ type: object
+ x-kubernetes-validations:
+ - message: exactly one of serviceRef or service must be set
+ rule: has(self.serviceRef) != has(self.service)
+ - message: query.log must be set when type is LOG
+ rule: self.type != 'LOG' || has(self.query.log)
+ - message: query.metrics must be set when type is METRICS
+ rule: self.type != 'METRICS' || has(self.query.metrics)
+ - message: workbenchRef is required for tool-backed monitor queries
+ rule: has(self.workbenchRef) || !((has(self.query.log) && has(self.query.log.tool))
+ || (has(self.query.metrics) && has(self.query.metrics.tool)))
+ status:
+ description: Status represents the current state of this resource.
+ properties:
+ conditions:
+ description: Represents the observations of a PrAutomation's current
+ state.
+ items:
+ description: Condition contains details for one aspect of the current
+ state of this API Resource.
+ properties:
+ lastTransitionTime:
+ description: |-
+ lastTransitionTime is the last time the condition transitioned from one status to another.
+ This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
+ format: date-time
+ type: string
+ message:
+ description: |-
+ message is a human readable message indicating details about the transition.
+ This may be an empty string.
+ maxLength: 32768
+ type: string
+ observedGeneration:
+ description: |-
+ observedGeneration represents the .metadata.generation that the condition was set based upon.
+ For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
+ with respect to the current state of the instance.
+ format: int64
+ minimum: 0
+ type: integer
+ reason:
+ description: |-
+ reason contains a programmatic identifier indicating the reason for the condition's last transition.
+ Producers of specific condition types may define expected values and meanings for this field,
+ and whether the values are considered a guaranteed API.
+ The value should be a CamelCase string.
+ This field may not be empty.
+ maxLength: 1024
+ minLength: 1
+ pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
+ type: string
+ status:
+ description: status of the condition, one of True, False, Unknown.
+ enum:
+ - "True"
+ - "False"
+ - Unknown
+ type: string
+ type:
+ description: type of condition in CamelCase or in foo.example.com/CamelCase.
+ maxLength: 316
+ pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
+ type: string
+ required:
+ - lastTransitionTime
+ - message
+ - reason
+ - status
+ - type
+ type: object
+ type: array
+ x-kubernetes-list-map-keys:
+ - type
+ x-kubernetes-list-type: map
+ id:
+ description: ID of the resource in the Console API.
+ type: string
+ readonly:
+ default: false
+ description: ReadOnly indicates whether the resource is read-only.
+ type: boolean
+ sha:
+ description: SHA of last applied configuration.
+ type: string
+ required:
+ - readonly
+ type: object
+ required:
+ - spec
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
diff --git a/go/controller/config/rbac/role.yaml b/go/controller/config/rbac/role.yaml
index 6d7d5993b1..ae29df1313 100644
--- a/go/controller/config/rbac/role.yaml
+++ b/go/controller/config/rbac/role.yaml
@@ -39,6 +39,7 @@ rules:
- complianceReportGenerators
- customcompatibilitymatrices
- customstackruns
+ - dashboards
- deploymentsettings
- federatedcredentials
- flows
@@ -50,6 +51,7 @@ rules:
- infrastructurestacks
- managednamespaces
- mcpservers
+ - monitors
- namespacecredentialss
- notificationrouters
- notificationsinks
@@ -101,6 +103,7 @@ rules:
- complianceReportGenerators/finalizers
- customcompatibilitymatrices/finalizers
- customstackruns/finalizers
+ - dashboards/finalizers
- deploymentsettings/finalizers
- federatedcredentials/finalizers
- flows/finalizers
@@ -112,6 +115,7 @@ rules:
- infrastructurestacks/finalizers
- managednamespaces/finalizers
- mcpservers/finalizers
+ - monitors/finalizers
- namespacecredentialss/finalizers
- notificationrouters/finalizers
- notificationsinks/finalizers
@@ -157,6 +161,7 @@ rules:
- complianceReportGenerators/status
- customcompatibilitymatrices/status
- customstackruns/status
+ - dashboards/status
- deploymentsettings/status
- federatedcredentials/status
- flows/status
@@ -168,6 +173,7 @@ rules:
- infrastructurestacks/status
- managednamespaces/status
- mcpservers/status
+ - monitors/status
- namespacecredentialss/status
- notificationrouters/status
- notificationsinks/status
diff --git a/go/controller/config/samples/dashboard.yaml b/go/controller/config/samples/dashboard.yaml
new file mode 100644
index 0000000000..9afa98b002
--- /dev/null
+++ b/go/controller/config/samples/dashboard.yaml
@@ -0,0 +1,96 @@
+# Self-contained Dashboard sample showing resource usage of the console running on the `mgmt` cluster.
+# Graphs use the native Plural metrics tools (plrl_metrics, plrl_metric_label_search) that are available
+# when the workbench has metrics observability enabled, so no additional workbench tools are needed.
+# Variables defined in inputs are referenced in datasource inputs with ${name}.
+apiVersion: deployments.plural.sh/v1alpha1
+kind: Workbench
+metadata:
+ labels:
+ app.kubernetes.io/name: workbench
+ app.kubernetes.io/instance: workbench-monitoring-sample
+ app.kubernetes.io/part-of: controller
+ app.kubernetes.io/managed-by: kustomize
+ app.kubernetes.io/created-by: controller
+ name: workbench-monitoring-sample
+ namespace: default
+spec:
+ name: workbench-monitoring-sample
+ description: Sample workbench used by Monitor and Dashboard samples
+ configuration:
+ observability:
+ logs: true
+ metrics: true
+---
+apiVersion: deployments.plural.sh/v1alpha1
+kind: Dashboard
+metadata:
+ labels:
+ app.kubernetes.io/name: dashboard
+ app.kubernetes.io/instance: dashboard-sample
+ app.kubernetes.io/part-of: controller
+ app.kubernetes.io/managed-by: kustomize
+ app.kubernetes.io/created-by: controller
+ name: dashboard-sample
+ namespace: default
+spec:
+ workbenchRef:
+ name: workbench-monitoring-sample
+ name: console-overview
+ description: Resource usage of the console on the mgmt cluster
+ inputs:
+ - name: namespace
+ label: Namespace
+ description: Namespace the console is running in
+ type: TEXT
+ default: plrl-console
+ required: true
+ - name: pod
+ label: Pod
+ description: Filter graphs by console pod
+ type: SELECT
+ default: ".*"
+ required: false
+ datasource:
+ type: LABELS
+ tool: plrl_metric_label_search
+ input:
+ metric: container_cpu_usage_seconds_total
+ label: pod
+ query: console
+ graphs:
+ - identifier: overview
+ title: Overview
+ type: SECTION
+ layout: { x: 0, "y": 0, w: 12, h: 1 }
+ options:
+ collapsed: false
+ - identifier: notes
+ title: About
+ description: Dashboard description
+ type: MARKDOWN
+ sectionId: overview
+ markdown: |
+ ## Console overview
+ CPU and memory usage of the console pods in the `${namespace}` namespace.
+ layout: { x: 0, "y": 1, w: 4, h: 4 }
+ - identifier: cpu
+ title: CPU usage
+ description: CPU cores used by console pods
+ type: TIMESERIES
+ sectionId: overview
+ layout: { x: 4, "y": 1, w: 8, h: 4 }
+ datasource:
+ type: METRICS
+ tool: plrl_metrics
+ input:
+ query: sum by (pod) (rate(container_cpu_usage_seconds_total{namespace="${namespace}", pod=~"${pod}", container!=""}[5m]))
+ - identifier: memory
+ title: Memory usage
+ description: Working set memory of console pods
+ type: TIMESERIES
+ layout: { x: 0, "y": 5, w: 12, h: 4 }
+ datasource:
+ type: METRICS
+ tool: plrl_metrics
+ input:
+ query: sum by (pod) (container_memory_working_set_bytes{namespace="${namespace}", pod=~"${pod}", container!=""})
diff --git a/go/controller/config/samples/monitor.yaml b/go/controller/config/samples/monitor.yaml
new file mode 100644
index 0000000000..7640bce2a5
--- /dev/null
+++ b/go/controller/config/samples/monitor.yaml
@@ -0,0 +1,98 @@
+# Self-contained Monitor samples targeting the existing `console` service on the `mgmt` cluster.
+# Only resources defined in this file are created, the console service itself is referenced by its
+# "cluster-handle/service-name" and is not managed by the operator.
+apiVersion: deployments.plural.sh/v1alpha1
+kind: Workbench
+metadata:
+ labels:
+ app.kubernetes.io/name: workbench
+ app.kubernetes.io/instance: workbench-monitoring-sample
+ app.kubernetes.io/part-of: controller
+ app.kubernetes.io/managed-by: kustomize
+ app.kubernetes.io/created-by: controller
+ name: workbench-monitoring-sample
+ namespace: default
+spec:
+ name: workbench-monitoring-sample
+ description: Sample workbench used by Monitor and Dashboard samples
+ configuration:
+ observability:
+ logs: true
+ metrics: true
+---
+# Log monitor using the native Plural logs provider. When it fires, it starts an investigation in the workbench.
+apiVersion: deployments.plural.sh/v1alpha1
+kind: Monitor
+metadata:
+ labels:
+ app.kubernetes.io/name: monitor
+ app.kubernetes.io/instance: monitor-log-sample
+ app.kubernetes.io/part-of: controller
+ app.kubernetes.io/managed-by: kustomize
+ app.kubernetes.io/created-by: controller
+ name: monitor-log-sample
+ namespace: default
+spec:
+ name: console-error-logs
+ service: mgmt/console
+ workbenchRef:
+ name: workbench-monitoring-sample
+ description: Fires when the console logs contain too many errors
+ alertTemplate: "Monitor {{ monitor.name }} fired for service {{ monitor.service.name }} on cluster {{ monitor.service.cluster.handle }}"
+ severity: HIGH
+ type: LOG
+ evaluationCron: "*/5 * * * *"
+ prompt: Investigate the spike in console error logs and suggest a fix
+ modes:
+ plan: true
+ verification: false
+ budget:
+ cost: "5.0"
+ tokens: 200000
+ kubernetes:
+ update: false
+ delete: false
+ exec: false
+ drain: false
+ excludeNamespaces:
+ - kube-system
+ query:
+ log:
+ query: error
+ bucketSize: 5m
+ duration: 30m
+ operator: OR
+ threshold:
+ aggregate: MAX
+ value: "100"
+---
+# Metrics monitor using the native Plural metrics provider. When it fires, it starts an investigation in the workbench.
+apiVersion: deployments.plural.sh/v1alpha1
+kind: Monitor
+metadata:
+ labels:
+ app.kubernetes.io/name: monitor
+ app.kubernetes.io/instance: monitor-metrics-sample
+ app.kubernetes.io/part-of: controller
+ app.kubernetes.io/managed-by: kustomize
+ app.kubernetes.io/created-by: controller
+ name: monitor-metrics-sample
+ namespace: default
+spec:
+ name: console-cpu-usage
+ service: mgmt/console
+ workbenchRef:
+ name: workbench-monitoring-sample
+ description: Fires when console CPU usage is above 2 cores on average
+ severity: MEDIUM
+ type: METRICS
+ evaluationCron: "*/10 * * * *"
+ prompt: Investigate the high console CPU usage and suggest a fix
+ query:
+ metrics:
+ query: sum(rate(container_cpu_usage_seconds_total{namespace="plrl-console", container!=""}[5m]))
+ step: 1m
+ duration: 1h
+ threshold:
+ aggregate: AVG
+ value: "2"
diff --git a/go/controller/docs/api.md b/go/controller/docs/api.md
index b2943e89d7..32e40604a7 100644
--- a/go/controller/docs/api.md
+++ b/go/controller/docs/api.md
@@ -21,6 +21,7 @@ Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 AP
- [ComplianceReportGenerator](#compliancereportgenerator)
- [CustomCompatibilityMatrix](#customcompatibilitymatrix)
- [CustomStackRun](#customstackrun)
+- [Dashboard](#dashboard)
- [DeploymentSettings](#deploymentsettings)
- [FederatedCredential](#federatedcredential)
- [Flow](#flow)
@@ -32,6 +33,7 @@ Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 AP
- [InfrastructureStack](#infrastructurestack)
- [MCPServer](#mcpserver)
- [ManagedNamespace](#managednamespace)
+- [Monitor](#monitor)
- [NamespaceCredentials](#namespacecredentials)
- [NotificationRouter](#notificationrouter)
- [NotificationSink](#notificationsink)
@@ -1455,6 +1457,131 @@ _Appears in:_
| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource.
Controls drift detection and reconciliation intervals. | | Optional: \{\}
|
+#### Dashboard
+
+
+
+Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs
+arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.
+
+
+
+
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `apiVersion` _string_ | `deployments.plural.sh/v1alpha1` | | |
+| `kind` _string_ | `Dashboard` | | |
+| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
+| `spec` _[DashboardSpec](#dashboardspec)_ | Spec defines the desired state of the Dashboard. | | Required: \{\}
|
+
+
+#### DashboardDatasource
+
+
+
+DashboardDatasource defines an observability tool call used to fetch dashboard data.
+
+
+
+_Appears in:_
+- [DashboardGraph](#dashboardgraph)
+- [DashboardInput](#dashboardinput)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `type` _[DashboardDatasourceType](#dashboarddatasourcetype)_ | Type is the kind of data returned by the datasource. | | Enum: [LOGS METRICS TRACES LABELS]
Required: \{\}
|
+| `tool` _string_ | Tool is the name of the observability tool used to fetch the data. | | MinLength: 1
Required: \{\}
Type: string
|
+| `input` _[RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#rawextension-runtime-pkg)_ | Input is passed to the observability tool. | | Required: \{\}
|
+
+
+#### DashboardGraph
+
+
+
+DashboardGraph is a single graph placed on the dashboard grid.
+
+
+
+_Appears in:_
+- [DashboardSpec](#dashboardspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `identifier` _string_ | Identifier is a stable identifier unique within the dashboard. | | MaxLength: 128
MinLength: 1
Required: \{\}
Type: string
|
+| `title` _string_ | Title is the graph title. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional graph description. | | Optional: \{\}
Type: string
|
+| `type` _[DashboardGraphType](#dashboardgraphtype)_ | Type is the graph visualization type. | | Enum: [TIMESERIES GAUGE LOGS MARKDOWN TABLE STAT BAR PIE HEATMAP TRACES SECTION]
MaxLength: 16
Required: \{\}
Type: string
|
+| `sectionId` _string_ | SectionID is the identifier of the SECTION graph containing this graph. Sections cannot be nested. | | MaxLength: 128
Optional: \{\}
Type: string
|
+| `markdown` _string_ | Markdown is the content for MARKDOWN graphs. | | Optional: \{\}
Type: string
|
+| `options` _[RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#rawextension-runtime-pkg)_ | Options are visualization-specific display options. Sections may set collapsed. | | Optional: \{\}
|
+| `layout` _[DashboardGraphLayout](#dashboardgraphlayout)_ | Layout is the grid position and size of the graph. | | Required: \{\}
|
+| `datasource` _[DashboardDatasource](#dashboarddatasource)_ | Datasource is the tool call used to fetch external data. | | Optional: \{\}
|
+
+
+#### DashboardGraphLayout
+
+
+
+DashboardGraphLayout defines the grid position and size of a graph.
+
+
+
+_Appears in:_
+- [DashboardGraph](#dashboardgraph)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `x` _integer_ | X is the zero-based horizontal grid coordinate. | | Minimum: 0
Required: \{\}
|
+| `y` _integer_ | Y is the zero-based vertical grid coordinate. | | Minimum: 0
Required: \{\}
|
+| `w` _integer_ | W is the width in grid columns. | | Minimum: 1
Required: \{\}
|
+| `h` _integer_ | H is the height in grid rows. | | Minimum: 1
Required: \{\}
|
+
+
+#### DashboardInput
+
+
+
+DashboardInput is a user-configurable dashboard variable.
+
+
+
+_Appears in:_
+- [DashboardSpec](#dashboardspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `name` _string_ | Name is the variable name referenced by graph datasource inputs. | | MinLength: 1
Required: \{\}
Type: string
|
+| `label` _string_ | Label is a human-readable input label. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional input description. | | Optional: \{\}
Type: string
|
+| `type` _[DashboardInputType](#dashboardinputtype)_ | Type is the input control type. | | Enum: [TEXT NUMBER BOOLEAN SELECT MULTI_SELECT TIME_RANGE]
Required: \{\}
|
+| `default` _string_ | Default is the default input value. | | Optional: \{\}
Type: string
|
+| `options` _string array_ | Options are the allowed values for select inputs. | | Optional: \{\}
|
+| `required` _boolean_ | Required defines whether a value is required when rendering. | | Optional: \{\}
|
+| `datasource` _[DashboardDatasource](#dashboarddatasource)_ | Datasource is the tool query used to populate input options, such as metric label search. | | Optional: \{\}
|
+
+
+#### DashboardSpec
+
+
+
+DashboardSpec defines the desired state of a Dashboard.
+
+
+
+_Appears in:_
+- [Dashboard](#dashboard)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `workbenchRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | WorkbenchRef references the Workbench that owns this dashboard.
The Workbench must be in the same namespace as the dashboard.
It is immutable, a dashboard cannot be moved to a different workbench. | | Required: \{\}
|
+| `name` _string_ | Name is the dashboard name, unique within its workbench.
If not set, metadata.name is used. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional dashboard description. | | Optional: \{\}
Type: string
|
+| `graphs` _[DashboardGraph](#dashboardgraph) array_ | Graphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
Note that overlapping graph layouts are only validated by the Console API. | | MaxItems: 200
Optional: \{\}
|
+| `inputs` _[DashboardInput](#dashboardinput) array_ | Inputs are user-configurable dashboard variables. | | Optional: \{\}
|
+| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource. | | Optional: \{\}
|
+
+
#### DeploymentSettings
@@ -2545,6 +2672,219 @@ _Appears in:_
| `crontab` _string_ | Crontab is the cron expression for how often to export metrics.
Example: "*/5 * * * *" for every 5 minutes. | | Optional: \{\}
|
+#### Monitor
+
+
+
+Monitor represents an observability monitor attached to a service deployment. It periodically
+evaluates a log or metrics query against a threshold and fires alerts when it is crossed.
+Optionally, it can be attached to a workbench to start an investigation when it fires.
+
+
+
+
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `apiVersion` _string_ | `deployments.plural.sh/v1alpha1` | | |
+| `kind` _string_ | `Monitor` | | |
+| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
+| `spec` _[MonitorSpec](#monitorspec)_ | Spec defines the desired state of the Monitor. | | Required: \{\}
|
+
+
+#### MonitorFacet
+
+
+
+MonitorFacet is a key/value facet used to further filter log queries.
+
+
+
+_Appears in:_
+- [MonitorLogQuery](#monitorlogquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `key` _string_ | Key is the facet key (e.g. kubernetes namespace or pod label name). | | Required: \{\}
Type: string
|
+| `value` _string_ | Value is the facet value to match for the given key. | | Required: \{\}
Type: string
|
+
+
+#### MonitorLogAzureOptions
+
+
+
+MonitorLogAzureOptions are Azure-specific log query options.
+
+
+
+_Appears in:_
+- [MonitorLogOptions](#monitorlogoptions)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `resourceId` _string_ | ResourceID is the Azure resource ID to query logs for. | | Optional: \{\}
Type: string
|
+
+
+#### MonitorLogOptions
+
+
+
+MonitorLogOptions are provider-specific log query options.
+
+
+
+_Appears in:_
+- [MonitorLogQuery](#monitorlogquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `azure` _[MonitorLogAzureOptions](#monitorlogazureoptions)_ | Azure log query options. | | Optional: \{\}
|
+
+
+#### MonitorLogQuery
+
+
+
+MonitorLogQuery is the log query configuration for a monitor.
+
+
+
+_Appears in:_
+- [MonitorQuery](#monitorquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `tool` _string_ | Tool is the named workbench logs tool. When omitted, the native Plural logs provider is used. | | Optional: \{\}
Type: string
|
+| `query` _string_ | Query is the log query string passed through to the underlying log provider. | | MinLength: 1
Required: \{\}
Type: string
|
+| `bucketSize` _string_ | BucketSize is the time bucket size (e.g. 5m) used when aggregating log results. | | Pattern: `^[0-9]+[dmhs]$`
Required: \{\}
Type: string
|
+| `duration` _string_ | Duration is the lookback duration for the log query (e.g. 1h, 10m, 30s). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `operator` _[MonitorOperator](#monitoroperator)_ | Operator to use when combining multiple log queries.
Defaults to OR, which is also the Console API default. | OR | Enum: [OR AND]
Optional: \{\}
|
+| `facets` _[MonitorFacet](#monitorfacet) array_ | Facets are optional key/value facets applied as additional filters on the log query. | | Optional: \{\}
|
+| `options` _[MonitorLogOptions](#monitorlogoptions)_ | Options are provider-specific log query options. | | Optional: \{\}
|
+
+
+#### MonitorMetricsAzureOptions
+
+
+
+MonitorMetricsAzureOptions are Azure-specific metrics query options.
+
+
+
+_Appears in:_
+- [MonitorMetricsOptions](#monitormetricsoptions)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `resourceId` _string_ | ResourceID is the Azure resource ID to query metrics for. | | Optional: \{\}
Type: string
|
+| `metricsNamespace` _string_ | MetricsNamespace is the Azure metrics namespace. | | Optional: \{\}
Type: string
|
+| `aggregation` _string_ | Aggregation is the Azure metrics aggregation type. | | Optional: \{\}
Type: string
|
+| `filter` _string_ | Filter is the Azure metrics filter expression. | | Optional: \{\}
Type: string
|
+| `orderBy` _string_ | OrderBy is the Azure metrics ordering expression. | | Optional: \{\}
Type: string
|
+| `rollUpBy` _string_ | RollUpBy is the Azure metrics dimension to roll up by. | | Optional: \{\}
Type: string
|
+| `metricsEndpoint` _string_ | MetricsEndpoint is the Azure metrics endpoint override. | | Optional: \{\}
Type: string
|
+
+
+#### MonitorMetricsOptions
+
+
+
+MonitorMetricsOptions are provider-specific metrics query options.
+
+
+
+_Appears in:_
+- [MonitorMetricsQuery](#monitormetricsquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `azure` _[MonitorMetricsAzureOptions](#monitormetricsazureoptions)_ | Azure metrics query options. | | Optional: \{\}
|
+
+
+#### MonitorMetricsQuery
+
+
+
+MonitorMetricsQuery is the metrics query configuration for a monitor.
+
+
+
+_Appears in:_
+- [MonitorQuery](#monitorquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `tool` _string_ | Tool is the named workbench metrics tool. When omitted, the native Plural metrics provider is used. | | Optional: \{\}
Type: string
|
+| `query` _string_ | Query is the metrics query string passed through to the underlying metrics provider. | | MinLength: 1
Required: \{\}
Type: string
|
+| `step` _string_ | Step is the metrics query step (e.g. 5m). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `duration` _string_ | Duration is the lookback duration for the metrics query (e.g. 1h). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `options` _[MonitorMetricsOptions](#monitormetricsoptions)_ | Options are provider-specific metrics query options. | | Optional: \{\}
|
+
+
+#### MonitorQuery
+
+
+
+MonitorQuery is a wrapper for the underlying query definition for a monitor.
+Exactly one of log or metrics should be set, matching the monitor type.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `log` _[MonitorLogQuery](#monitorlogquery)_ | Log query used when the monitor type is LOG. | | Optional: \{\}
|
+| `metrics` _[MonitorMetricsQuery](#monitormetricsquery)_ | Metrics query used when the monitor type is METRICS. | | Optional: \{\}
|
+
+
+#### MonitorSpec
+
+
+
+MonitorSpec defines the desired state of a Monitor.
+
+
+
+_Appears in:_
+- [Monitor](#monitor)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `name` _string_ | Name is the short name used to identify this monitor in the Console API.
If not set, metadata.name is used. | | Optional: \{\}
Type: string
|
+| `serviceRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | ServiceRef references the ServiceDeployment resource this monitor is attached to.
The ServiceDeployment must be in the same namespace as the monitor.
Either ServiceRef or Service must be set. | | Optional: \{\}
|
+| `service` _string_ | Service references an existing service in the Console API this monitor is attached to,
in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
a monitor to a service that is not managed by a ServiceDeployment resource.
Either ServiceRef or Service must be set. | | Optional: \{\}
Pattern: `^[^/]+/[^/]+$`
Type: string
|
+| `workbenchRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | WorkbenchRef references the Workbench this monitor is attached to.
When set, the monitor can start a workbench investigation when it fires.
It is required if the query uses a named workbench tool.
The Workbench must be in the same namespace as the monitor. | | Optional: \{\}
|
+| `prompt` _string_ | Prompt is used when the monitor starts a workbench investigation. | | MaxLength: 2048
Optional: \{\}
Type: string
|
+| `modes` _[WorkbenchJobModes](#workbenchjobmodes)_ | Modes defines mode-specific options for monitor-triggered workbench jobs. | | Optional: \{\}
|
+| `description` _string_ | Description is an optional free-form description of what this monitor is checking. | | Optional: \{\}
Type: string
|
+| `alertTemplate` _string_ | AlertTemplate is an optional template used when rendering alert messages for this monitor. | | Optional: \{\}
Type: string
|
+| `severity` _[AlertSeverity](#alertseverity)_ | Severity is the severity level applied to alerts generated by this monitor. | | Enum: [LOW MEDIUM HIGH CRITICAL UNDEFINED]
Required: \{\}
|
+| `type` _[MonitorType](#monitortype)_ | Type is the monitor data type. | | Enum: [LOG METRICS]
Required: \{\}
|
+| `evaluationCron` _string_ | EvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
@secondly or @reboot shortcuts. Field values are validated by the Console API. | | MinLength: 1
Pattern: `^(@(?i:yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\|minutely\|secondly\|reboot)\|[^ ]+( [^ ]+)\{4,5\})$`
Required: \{\}
Type: string
|
+| `query` _[MonitorQuery](#monitorquery)_ | Query is the underlying query configuration used to fetch data for this monitor. | | Required: \{\}
|
+| `threshold` _[MonitorThreshold](#monitorthreshold)_ | Threshold is the configuration that determines when the monitor should fire. | | Required: \{\}
|
+| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource. | | Optional: \{\}
|
+
+
+#### MonitorThreshold
+
+
+
+MonitorThreshold is the threshold configuration used to decide when a monitor should fire.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `aggregate` _[MonitorAggregate](#monitoraggregate)_ | Aggregate is the aggregation function applied over the result set. | | Enum: [MAX MIN AVG]
Required: \{\}
|
+| `value` _string_ | Value is the numeric value the aggregated metric must cross to trigger the alert.
It is a string to allow decimal values (e.g. "0.95"). | | Pattern: `^-?[0-9]+(\.[0-9]+)?$`
Required: \{\}
Type: string
|
+
+
#### NamespaceCredentials
@@ -4421,6 +4761,7 @@ _Appears in:_
- [ComplianceReportGeneratorSpec](#compliancereportgeneratorspec)
- [CustomCompatibilityMatrixSpec](#customcompatibilitymatrixspec)
- [CustomStackRunSpec](#customstackrunspec)
+- [DashboardSpec](#dashboardspec)
- [DeploymentSettingsSpec](#deploymentsettingsspec)
- [FederatedCredentialSpec](#federatedcredentialspec)
- [FlowSpec](#flowspec)
@@ -4432,6 +4773,7 @@ _Appears in:_
- [InfrastructureStackSpec](#infrastructurestackspec)
- [MCPServerSpec](#mcpserverspec)
- [ManagedNamespaceSpec](#managednamespacespec)
+- [MonitorSpec](#monitorspec)
- [NamespaceCredentialsSpec](#namespacecredentialsspec)
- [NotificationRouterSpec](#notificationrouterspec)
- [NotificationSinkSpec](#notificationsinkspec)
@@ -5859,6 +6201,100 @@ _Appears in:_
| `kubernetes` _boolean_ | Kubernetes enables the Kubernetes capability. | | Optional: \{\}
|
+#### WorkbenchJobBudget
+
+
+
+WorkbenchJobBudget defines budget limits for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `cost` _string_ | Cost is the maximum cost budget for the job.
It is a string to allow decimal values (e.g. "12.5"). | | Optional: \{\}
Pattern: `^[0-9]+(\.[0-9]+)?$`
Type: string
|
+| `tokens` _integer_ | Tokens is the maximum token budget for the job. | | Minimum: 0
Optional: \{\}
|
+
+
+#### WorkbenchJobCodingModes
+
+
+
+WorkbenchJobCodingModes defines coding mode options for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `babysit` _boolean_ | Babysit enables babysit mode for coding agent runs. | | Optional: \{\}
|
+| `approval` _boolean_ | Approval requires approval before coding agent runs continue. | | Optional: \{\}
|
+| `review` _boolean_ | Review enables pull request review mode for coding agent runs. | | Optional: \{\}
|
+
+
+#### WorkbenchJobKubernetesModes
+
+
+
+WorkbenchJobKubernetesModes defines kubernetes action options for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `update` _boolean_ | Update enables kubernetes update actions. | | Optional: \{\}
|
+| `delete` _boolean_ | Delete enables kubernetes delete actions. | | Optional: \{\}
|
+| `exec` _boolean_ | Exec enables kubernetes exec actions. | | Optional: \{\}
|
+| `drain` _boolean_ | Drain enables kubernetes node drain actions. | | Optional: \{\}
|
+| `excludeNamespaces` _string array_ | ExcludeNamespaces are namespaces the agent can never act in. | | Optional: \{\}
|
+| `requireNamespaces` _string array_ | RequireNamespaces, if set, are the only namespaces the agent is allowed to act in. | | Optional: \{\}
|
+
+
+#### WorkbenchJobModel
+
+
+
+WorkbenchJobModel defines the AI model override for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `provider` _[AiProvider](#aiprovider)_ | Provider is the AI provider for the job. | | Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX OPENAI_COMPATIBLE XAI]
Required: \{\}
|
+| `model` _string_ | Model is the model name for the job. | | MinLength: 1
Required: \{\}
Type: string
|
+
+
+#### WorkbenchJobModes
+
+
+
+WorkbenchJobModes defines mode-specific options for workbench jobs.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `plan` _boolean_ | Plan enables planning mode for the job. | | Optional: \{\}
|
+| `verification` _boolean_ | Verification enables verification mode for the job. | | Optional: \{\}
|
+| `model` _[WorkbenchJobModel](#workbenchjobmodel)_ | Model overrides the AI model used for the job. | | Optional: \{\}
|
+| `coding` _[WorkbenchJobCodingModes](#workbenchjobcodingmodes)_ | Coding defines coding mode options for the job. | | Optional: \{\}
|
+| `budget` _[WorkbenchJobBudget](#workbenchjobbudget)_ | Budget defines budget limits for the job. | | Optional: \{\}
|
+| `kubernetes` _[WorkbenchJobKubernetesModes](#workbenchjobkubernetesmodes)_ | Kubernetes defines kubernetes action options for the job. | | Optional: \{\}
|
+
+
#### WorkbenchObservabilityConfig
diff --git a/go/controller/internal/client/console.go b/go/controller/internal/client/console.go
index c5f9ffce25..359be1ae12 100644
--- a/go/controller/internal/client/console.go
+++ b/go/controller/internal/client/console.go
@@ -20,6 +20,7 @@ type ConsoleClient interface {
GetServices() ([]*console.ServiceDeploymentBaseFragment, error)
GetService(clusterID, serviceName string) (*console.ServiceDeploymentExtended, error)
GetServiceById(id string) (*console.ServiceDeploymentExtended, error)
+ GetServiceTinyByHandle(clusterHandle, serviceName string) (*console.GetServiceDeploymentTinyByHandle_ServiceDeployment, error)
CreateRepository(url string, privateKey, passphrase, username, password *string) (*console.CreateGitRepository, error)
CreateGitRepository(attrs console.GitAttributes) (*console.CreateGitRepository, error)
ListRepositories() (*console.ListGitRepositories, error)
@@ -237,6 +238,16 @@ type ConsoleClient interface {
GetIssueWebhookByName(ctx context.Context, name string) (*console.IssueWebhookFragment, error)
GetSentinelRun(ctx context.Context, id string) (*console.SentinelRunFragment, error)
RunSentinel(ctx context.Context, id string, overrides *console.SentinelRunOverrides) (*string, error)
+ CreateMonitor(ctx context.Context, attributes console.MonitorAttributes) (*console.MonitorFragment, error)
+ UpdateMonitor(ctx context.Context, id string, attributes console.MonitorAttributes) (*console.MonitorFragment, error)
+ GetMonitor(ctx context.Context, id string) (*console.MonitorFragment, error)
+ DeleteMonitor(ctx context.Context, id string) error
+ IsMonitorExists(ctx context.Context, id string) (bool, error)
+ CreateDashboard(ctx context.Context, attributes console.DashboardAttributes) (*console.WorkbenchDashboardFragment, error)
+ UpdateDashboard(ctx context.Context, id string, attributes console.DashboardAttributes) (*console.WorkbenchDashboardFragment, error)
+ GetDashboard(ctx context.Context, id string) (*console.WorkbenchDashboardFragment, error)
+ DeleteDashboard(ctx context.Context, id string) error
+ IsDashboardExists(ctx context.Context, id string) (bool, error)
}
func New(url, token string, datadogEnabled, insecureSkipTLSVerify bool) ConsoleClient {
diff --git a/go/controller/internal/client/dashboard.go b/go/controller/internal/client/dashboard.go
new file mode 100644
index 0000000000..143cd0093a
--- /dev/null
+++ b/go/controller/internal/client/dashboard.go
@@ -0,0 +1,68 @@
+package client
+
+import (
+ "context"
+ "fmt"
+
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+
+ console "github.com/pluralsh/console/go/client"
+ internalerror "github.com/pluralsh/console/go/controller/internal/errors"
+)
+
+func (c *client) CreateDashboard(ctx context.Context, attributes console.DashboardAttributes) (*console.WorkbenchDashboardFragment, error) {
+ response, err := c.consoleClient.CreateDashboard(ctx, attributes)
+ if err != nil {
+ return nil, err
+ }
+ return response.CreateDashboard, nil
+}
+
+func (c *client) UpdateDashboard(ctx context.Context, id string, attributes console.DashboardAttributes) (*console.WorkbenchDashboardFragment, error) {
+ if id == "" {
+ return nil, fmt.Errorf("no id specified")
+ }
+
+ response, err := c.consoleClient.UpdateDashboard(ctx, id, attributes)
+ if err != nil {
+ return nil, err
+ }
+ return response.UpdateDashboard, nil
+}
+
+func (c *client) GetDashboard(ctx context.Context, id string) (*console.WorkbenchDashboardFragment, error) {
+ if id == "" {
+ return nil, fmt.Errorf("no id specified")
+ }
+ response, err := c.consoleClient.GetWorkbenchDashboard(ctx, id)
+ if internalerror.IsNotFound(err) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, id)
+ }
+ if err == nil && (response == nil || response.WorkbenchDashboard == nil) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, id)
+ }
+ if response == nil {
+ return nil, err
+ }
+ return response.WorkbenchDashboard, err
+}
+
+func (c *client) DeleteDashboard(ctx context.Context, id string) error {
+ _, err := c.consoleClient.DeleteDashboard(ctx, id)
+ return err
+}
+
+func (c *client) IsDashboardExists(ctx context.Context, id string) (bool, error) {
+ if id == "" {
+ return false, fmt.Errorf("no id specified")
+ }
+ dashboard, err := c.GetDashboard(ctx, id)
+ if errors.IsNotFound(err) {
+ return false, nil
+ }
+ if err != nil {
+ return false, err
+ }
+ return dashboard != nil, nil
+}
diff --git a/go/controller/internal/client/monitor.go b/go/controller/internal/client/monitor.go
new file mode 100644
index 0000000000..372f4dccca
--- /dev/null
+++ b/go/controller/internal/client/monitor.go
@@ -0,0 +1,68 @@
+package client
+
+import (
+ "context"
+ "fmt"
+
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+
+ console "github.com/pluralsh/console/go/client"
+ internalerror "github.com/pluralsh/console/go/controller/internal/errors"
+)
+
+func (c *client) CreateMonitor(ctx context.Context, attributes console.MonitorAttributes) (*console.MonitorFragment, error) {
+ response, err := c.consoleClient.CreateMonitor(ctx, attributes)
+ if err != nil {
+ return nil, err
+ }
+ return response.CreateMonitor, nil
+}
+
+func (c *client) UpdateMonitor(ctx context.Context, id string, attributes console.MonitorAttributes) (*console.MonitorFragment, error) {
+ if id == "" {
+ return nil, fmt.Errorf("no id specified")
+ }
+
+ response, err := c.consoleClient.UpdateMonitor(ctx, id, attributes)
+ if err != nil {
+ return nil, err
+ }
+ return response.UpdateMonitor, nil
+}
+
+func (c *client) GetMonitor(ctx context.Context, id string) (*console.MonitorFragment, error) {
+ if id == "" {
+ return nil, fmt.Errorf("no id specified")
+ }
+ response, err := c.consoleClient.GetMonitor(ctx, id)
+ if internalerror.IsNotFound(err) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, id)
+ }
+ if err == nil && (response == nil || response.Monitor == nil) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, id)
+ }
+ if response == nil {
+ return nil, err
+ }
+ return response.Monitor, err
+}
+
+func (c *client) DeleteMonitor(ctx context.Context, id string) error {
+ _, err := c.consoleClient.DeleteMonitor(ctx, id)
+ return err
+}
+
+func (c *client) IsMonitorExists(ctx context.Context, id string) (bool, error) {
+ if id == "" {
+ return false, fmt.Errorf("no id specified")
+ }
+ monitor, err := c.GetMonitor(ctx, id)
+ if errors.IsNotFound(err) {
+ return false, nil
+ }
+ if err != nil {
+ return false, err
+ }
+ return monitor != nil, nil
+}
diff --git a/go/controller/internal/client/service.go b/go/controller/internal/client/service.go
index 6b0c8b8daf..e898f4f3a4 100644
--- a/go/controller/internal/client/service.go
+++ b/go/controller/internal/client/service.go
@@ -27,6 +27,26 @@ func (c *client) GetService(clusterID, serviceName string) (*console.ServiceDepl
return resp.ServiceDeployment, nil
}
+// GetServiceTinyByHandle is a lightweight GetService that returns only the service ID and name.
+func (c *client) GetServiceTinyByHandle(clusterHandle, serviceName string) (*console.GetServiceDeploymentTinyByHandle_ServiceDeployment, error) {
+ if clusterHandle == "" || serviceName == "" {
+ return nil, errors.NewNotFound(schema.GroupResource{}, fmt.Sprintf("%s/%s", clusterHandle, serviceName))
+ }
+
+ response, err := c.consoleClient.GetServiceDeploymentTinyByHandle(c.ctx, clusterHandle, serviceName)
+ if internalerror.IsNotFound(err) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, fmt.Sprintf("%s/%s", clusterHandle, serviceName))
+ }
+ if err == nil && (response == nil || response.ServiceDeployment == nil) {
+ return nil, errors.NewNotFound(schema.GroupResource{}, fmt.Sprintf("%s/%s", clusterHandle, serviceName))
+ }
+ if response == nil {
+ return nil, err
+ }
+
+ return response.ServiceDeployment, err
+}
+
func (c *client) GetServiceById(id string) (*console.ServiceDeploymentExtended, error) {
if id == "" {
return nil, errors.NewNotFound(schema.GroupResource{}, "")
diff --git a/go/controller/internal/common/workbench.go b/go/controller/internal/common/workbench.go
index 62fa1cb5e6..6251fc7a83 100644
--- a/go/controller/internal/common/workbench.go
+++ b/go/controller/internal/common/workbench.go
@@ -19,22 +19,41 @@ import (
// so that Kubernetes GC cascades deletion from parent to child.
func HandleWorkbenchRef(ctx context.Context, c runtimeclient.Client, scheme *runtime.Scheme,
child runtimeclient.Object, ref corev1.ObjectReference, namespace string) (string, *ctrl.Result, error) {
+ workbench, res, err := getReadyWorkbench(ctx, c, ref, namespace)
+ if res != nil || err != nil {
+ return "", res, err
+ }
+
+ if err := controllerutil.SetOwnerReference(workbench, child, scheme); err != nil {
+ return "", nil, fmt.Errorf("failed to set owner reference: %w", err)
+ }
+
+ return workbench.Status.GetID(), nil, nil
+}
+
+// WorkbenchID is HandleWorkbenchRef without setting the workbench as the owner.
+func WorkbenchID(ctx context.Context, c runtimeclient.Client, ref corev1.ObjectReference, namespace string) (string, *ctrl.Result, error) {
+ workbench, res, err := getReadyWorkbench(ctx, c, ref, namespace)
+ if res != nil || err != nil {
+ return "", res, err
+ }
+
+ return workbench.Status.GetID(), nil, nil
+}
+
+func getReadyWorkbench(ctx context.Context, c runtimeclient.Client, ref corev1.ObjectReference, namespace string) (*v1alpha1.Workbench, *ctrl.Result, error) {
workbench := &v1alpha1.Workbench{}
ns := lo.Ternary(ref.Namespace == "", namespace, ref.Namespace)
if err := c.Get(ctx, runtimeclient.ObjectKey{Name: ref.Name, Namespace: ns}, workbench); err != nil {
if errors.IsNotFound(err) {
- return "", lo.ToPtr(Wait()), fmt.Errorf("workbench not found: %s", err.Error())
+ return nil, lo.ToPtr(Wait()), fmt.Errorf("workbench not found: %s", err.Error())
}
- return "", nil, fmt.Errorf("failed to get workbench: %s", err.Error())
+ return nil, nil, fmt.Errorf("failed to get workbench: %s", err.Error())
}
if !workbench.Status.HasID() {
- return "", lo.ToPtr(Wait()), fmt.Errorf("workbench is not ready")
+ return nil, lo.ToPtr(Wait()), fmt.Errorf("workbench is not ready")
}
- if err := controllerutil.SetOwnerReference(workbench, child, scheme); err != nil {
- return "", nil, fmt.Errorf("failed to set owner reference: %w", err)
- }
-
- return workbench.Status.GetID(), nil, nil
+ return workbench, nil, nil
}
diff --git a/go/controller/internal/controller/dashboard_controller.go b/go/controller/internal/controller/dashboard_controller.go
new file mode 100644
index 0000000000..951d0d4e04
--- /dev/null
+++ b/go/controller/internal/controller/dashboard_controller.go
@@ -0,0 +1,193 @@
+package controller
+
+import (
+ "context"
+ "fmt"
+
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ ctrl "sigs.k8s.io/controller-runtime"
+ "sigs.k8s.io/controller-runtime/pkg/builder"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/controller"
+ "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
+ "sigs.k8s.io/controller-runtime/pkg/log"
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
+
+ console "github.com/pluralsh/console/go/client"
+ "github.com/pluralsh/console/go/controller/api/v1alpha1"
+ consoleclient "github.com/pluralsh/console/go/controller/internal/client"
+ "github.com/pluralsh/console/go/controller/internal/common"
+ "github.com/pluralsh/console/go/controller/internal/credentials"
+ "github.com/pluralsh/console/go/controller/internal/utils"
+)
+
+// DashboardReconciler reconciles a v1alpha1.Dashboard object.
+// Implements reconcile.Reconciler and types.Controller.
+type DashboardReconciler struct {
+ client.Client
+ ConsoleClient consoleclient.ConsoleClient
+ Scheme *runtime.Scheme
+ CredentialsCache credentials.NamespaceCredentialsCache
+}
+
+const (
+ // DashboardFinalizer defines the name for the main finalizer that synchronizes
+ // resource deletion from the Console API prior to removing the CRD.
+ DashboardFinalizer = "deployments.plural.sh/dashboard-protection"
+)
+
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=dashboards,verbs=get;list;watch;create;update;patch;delete
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=dashboards/status,verbs=get;update;patch
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=dashboards/finalizers,verbs=update
+
+// Reconcile is part of the main kubernetes reconciliation loop which aims to
+// move the current state of the v1alpha1.Dashboard closer to the desired state
+// and syncs it with the Console API state.
+func (in *DashboardReconciler) Reconcile(ctx context.Context, req reconcile.Request) (_ reconcile.Result, reterr error) {
+ logger := log.FromContext(ctx)
+
+ dashboard := new(v1alpha1.Dashboard)
+ if err := in.Get(ctx, req.NamespacedName, dashboard); err != nil {
+ return ctrl.Result{}, client.IgnoreNotFound(err)
+ }
+
+ scope, err := common.NewDefaultScope(ctx, in.Client, dashboard)
+ if err != nil {
+ logger.Error(err, "failed to create scope")
+ return ctrl.Result{}, err
+ }
+ defer func() {
+ if err := scope.PatchObject(); err != nil && reterr == nil {
+ reterr = err
+ }
+ }()
+
+ // Switch to namespace credentials if configured. This has to be done before sending any request to the console.
+ nc, err := in.ConsoleClient.UseCredentials(req.Namespace, in.CredentialsCache)
+ credentials.SyncCredentialsInfo(dashboard, dashboard.SetCondition, nc, err)
+ if err != nil {
+ logger.Error(err, "failed to use namespace credentials", "namespaceCredentials", nc, "namespacedName", req.NamespacedName)
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionFalse, v1alpha1.SynchronizedConditionReasonError, fmt.Sprintf("failed to use %s namespace credentials: %s", nc, err.Error()))
+ return ctrl.Result{}, err
+ }
+
+ // Mark the resource as not ready. This will be overridden in the end.
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.ReadyConditionType, v1.ConditionFalse, v1alpha1.ReadyConditionReason, "")
+
+ // Handle proper resource deletion via finalizer
+ if result, err := in.addOrRemoveFinalizer(ctx, dashboard); result != nil || err != nil {
+ return common.HandleRequeue(result, err, dashboard.SetCondition)
+ }
+
+ // Mark resource as managed by this operator.
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.ReadonlyConditionType, v1.ConditionFalse, v1alpha1.ReadonlyConditionReason, "")
+
+ // Get Dashboard SHA that can be saved back in the status to check for changes
+ changed, sha, err := dashboard.Diff(utils.HashObject)
+ if err != nil {
+ logger.Error(err, "unable to calculate dashboard SHA")
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionFalse, v1alpha1.SynchronizedConditionReasonError, err.Error())
+ return ctrl.Result{}, err
+ }
+
+ // Get the workbench that owns this dashboard.
+ workbenchID, res, err := common.HandleWorkbenchRef(ctx, in.Client, in.Scheme, dashboard, corev1.ObjectReference{Name: dashboard.Spec.WorkbenchRef.Name}, dashboard.Namespace)
+ if res != nil || err != nil {
+ return common.HandleRequeue(res, err, dashboard.SetCondition)
+ }
+
+ // Sync Dashboard CRD with the Console API
+ apiDashboard, err := in.sync(ctx, dashboard, workbenchID, changed)
+ if err != nil {
+ return common.HandleRequeue(nil, err, dashboard.SetCondition)
+ }
+
+ dashboard.Status.ID = &apiDashboard.ID
+ dashboard.Status.SHA = &sha
+
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.ReadyConditionType, v1.ConditionTrue, v1alpha1.ReadyConditionReason, "")
+ utils.MarkCondition(dashboard.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionTrue, v1alpha1.SynchronizedConditionReason, "")
+
+ return dashboard.Spec.Reconciliation.Requeue(), nil
+}
+
+// addOrRemoveFinalizer adds the finalizer or, during deletion, removes the resource from Console first.
+// Console errors are returned, not requeued via Spec.Reconciliation, which never requeues without drift detection.
+func (in *DashboardReconciler) addOrRemoveFinalizer(ctx context.Context, dashboard *v1alpha1.Dashboard) (*ctrl.Result, error) {
+ if dashboard.DeletionTimestamp.IsZero() && !controllerutil.ContainsFinalizer(dashboard, DashboardFinalizer) {
+ controllerutil.AddFinalizer(dashboard, DashboardFinalizer)
+ }
+
+ // If the dashboard is being deleted, cleanup and remove the finalizer.
+ if !dashboard.DeletionTimestamp.IsZero() {
+ // If the dashboard does not have an ID, the finalizer can be removed.
+ if !dashboard.Status.HasID() {
+ controllerutil.RemoveFinalizer(dashboard, DashboardFinalizer)
+ return &ctrl.Result{}, nil
+ }
+
+ exists, err := in.ConsoleClient.IsDashboardExists(ctx, dashboard.Status.GetID())
+ if err != nil {
+ return nil, err
+ }
+
+ // Remove the dashboard from Console API if it exists.
+ if exists {
+ if err = in.ConsoleClient.DeleteDashboard(ctx, dashboard.Status.GetID()); err != nil {
+ // If it fails to delete the external dependency here, return with the error
+ // so that it can be retried.
+ return nil, err
+ }
+ }
+
+ // If our finalizer is present, remove it.
+ controllerutil.RemoveFinalizer(dashboard, DashboardFinalizer)
+
+ // Stop reconciliation as the item does no longer exist.
+ return &ctrl.Result{}, nil
+ }
+
+ return nil, nil
+}
+
+func (in *DashboardReconciler) sync(ctx context.Context, dashboard *v1alpha1.Dashboard, workbenchID string, changed bool) (*console.WorkbenchDashboardFragment, error) {
+ logger := log.FromContext(ctx)
+
+ // If we already have an ID, try to get the existing resource.
+ if dashboard.Status.HasID() {
+ existingDashboard, err := in.ConsoleClient.GetDashboard(ctx, dashboard.Status.GetID())
+ if err != nil {
+ if !errors.IsNotFound(err) {
+ return nil, err
+ }
+ // Not found by ID, create a new one.
+ logger.Info(fmt.Sprintf("dashboard %s not found by ID, creating it", dashboard.Name))
+ return in.ConsoleClient.CreateDashboard(ctx, dashboard.Attributes(workbenchID))
+ }
+
+ if changed {
+ logger.Info(fmt.Sprintf("updating dashboard %s", dashboard.Name))
+ return in.ConsoleClient.UpdateDashboard(ctx, existingDashboard.ID, dashboard.Attributes(workbenchID))
+ }
+
+ return existingDashboard, nil
+ }
+
+ // No ID yet, create a new dashboard.
+ logger.Info(fmt.Sprintf("creating dashboard %s", dashboard.Name))
+ return in.ConsoleClient.CreateDashboard(ctx, dashboard.Attributes(workbenchID))
+}
+
+// SetupWithManager is responsible for initializing a new reconciler within the provided ctrl.Manager.
+func (in *DashboardReconciler) SetupWithManager(mgr ctrl.Manager) error {
+ mgr.GetLogger().Info("Starting reconciler", "reconciler", "dashboard_reconciler")
+ return ctrl.NewControllerManagedBy(mgr).
+ WithOptions(controller.Options{MaxConcurrentReconciles: 1}).
+ Watches(&v1alpha1.NamespaceCredentials{}, credentials.OnCredentialsChange(in.Client, new(v1alpha1.DashboardList))).
+ For(&v1alpha1.Dashboard{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
+ Complete(in)
+}
diff --git a/go/controller/internal/controller/dashboard_controller_test.go b/go/controller/internal/controller/dashboard_controller_test.go
new file mode 100644
index 0000000000..a04596c158
--- /dev/null
+++ b/go/controller/internal/controller/dashboard_controller_test.go
@@ -0,0 +1,433 @@
+package controller_test
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "reflect"
+
+ . "github.com/onsi/ginkgo/v2"
+ . "github.com/onsi/gomega"
+ "github.com/samber/lo"
+ "github.com/stretchr/testify/mock"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/api/meta"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/apimachinery/pkg/types"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
+
+ gqlclient "github.com/pluralsh/console/go/client"
+ "github.com/pluralsh/console/go/controller/api/v1alpha1"
+ "github.com/pluralsh/console/go/controller/internal/controller"
+ common "github.com/pluralsh/console/go/controller/internal/test/common"
+ "github.com/pluralsh/console/go/controller/internal/test/mocks"
+)
+
+// jsonEqual checks if a JSON string is semantically equal to the expected value.
+func jsonEqual(actual *string, expected map[string]any) bool {
+ if actual == nil {
+ return false
+ }
+
+ var got map[string]any
+ if err := json.Unmarshal([]byte(*actual), &got); err != nil {
+ return false
+ }
+
+ return reflect.DeepEqual(got, expected)
+}
+
+var _ = Describe("Dashboard Controller", Ordered, func() {
+ const namespace = "default"
+ ctx := context.Background()
+
+ newReconciler := func(consoleClient *mocks.ConsoleClientMock) *controller.DashboardReconciler {
+ return &controller.DashboardReconciler{
+ Client: k8sClient,
+ Scheme: k8sClient.Scheme(),
+ ConsoleClient: consoleClient,
+ CredentialsCache: nil,
+ }
+ }
+
+ Context("When reconciling a resource", func() {
+ const (
+ dashboardName = "test-dashboard"
+ workbenchName = "test-workbench-for-dashboard"
+ id = "dashboard-123"
+ workbenchID = "workbench-456"
+ )
+
+ typeNamespacedName := types.NamespacedName{Name: dashboardName, Namespace: namespace}
+ workbenchNamespacedName := types.NamespacedName{Name: workbenchName, Namespace: namespace}
+
+ BeforeAll(func() {
+ By("creating the parent Workbench resource without an ID")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Workbench{
+ ObjectMeta: metav1.ObjectMeta{Name: workbenchName, Namespace: namespace},
+ Spec: v1alpha1.WorkbenchSpec{Name: lo.ToPtr(workbenchName)},
+ }, nil)).To(Succeed())
+
+ By("creating the Dashboard resource")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: dashboardName, Namespace: namespace},
+ Spec: v1alpha1.DashboardSpec{
+ WorkbenchRef: corev1.LocalObjectReference{Name: workbenchName},
+ Description: lo.ToPtr("Console overview"),
+ Inputs: []v1alpha1.DashboardInput{
+ {
+ Name: "namespace",
+ Label: lo.ToPtr("Namespace"),
+ Type: gqlclient.DashboardInputTypeText,
+ Default: lo.ToPtr("plrl-console"),
+ Required: lo.ToPtr(true),
+ },
+ {
+ Name: "pod",
+ Type: gqlclient.DashboardInputTypeSelect,
+ Options: []string{"a", "b"},
+ Datasource: &v1alpha1.DashboardDatasource{
+ Type: gqlclient.DashboardDatasourceTypeLabels,
+ Tool: "plrl_metric_label_search",
+ Input: runtime.RawExtension{Raw: []byte(`{"metric":"up","label":"pod"}`)},
+ },
+ },
+ },
+ Graphs: []v1alpha1.DashboardGraph{
+ {
+ Identifier: "overview",
+ Title: lo.ToPtr("Overview"),
+ Type: gqlclient.DashboardGraphTypeSection,
+ Options: &runtime.RawExtension{Raw: []byte(`{"collapsed":true}`)},
+ Layout: v1alpha1.DashboardGraphLayout{X: 0, Y: 0, W: 12, H: 1},
+ },
+ {
+ Identifier: "notes",
+ Type: gqlclient.DashboardGraphTypeMarkdown,
+ SectionID: lo.ToPtr("overview"),
+ Markdown: lo.ToPtr("## Notes"),
+ Layout: v1alpha1.DashboardGraphLayout{X: 0, Y: 1, W: 4, H: 4},
+ },
+ {
+ Identifier: "cpu",
+ Title: lo.ToPtr("CPU"),
+ Description: lo.ToPtr("CPU usage"),
+ Type: gqlclient.DashboardGraphTypeTimeseries,
+ SectionID: lo.ToPtr("overview"),
+ Layout: v1alpha1.DashboardGraphLayout{X: 4, Y: 1, W: 8, H: 4},
+ Datasource: &v1alpha1.DashboardDatasource{
+ Type: gqlclient.DashboardDatasourceTypeMetrics,
+ Tool: "plrl_metrics",
+ Input: runtime.RawExtension{Raw: []byte(`{"query":"sum(rate(cpu[5m]))"}`)},
+ },
+ },
+ },
+ },
+ }, nil)).To(Succeed())
+ })
+
+ AfterAll(func() {
+ dashboard := &v1alpha1.Dashboard{}
+ if err := k8sClient.Get(ctx, typeNamespacedName, dashboard); err == nil {
+ By("Cleanup the Dashboard resource")
+ dashboard.Finalizers = nil
+ Expect(k8sClient.Update(ctx, dashboard)).To(Succeed())
+ Expect(client.IgnoreNotFound(k8sClient.Delete(ctx, dashboard))).To(Succeed())
+ }
+ workbench := &v1alpha1.Workbench{}
+ if err := k8sClient.Get(ctx, workbenchNamespacedName, workbench); err == nil {
+ By("Cleanup the parent Workbench resource")
+ Expect(k8sClient.Delete(ctx, workbench)).To(Succeed())
+ }
+ })
+
+ It("should wait for the workbench to be ready", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+
+ result, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ Expect(result.RequeueAfter).NotTo(BeZero())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "CreateDashboard", mock.Anything, mock.Anything)
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(dashboard.Status.ID).To(BeNil())
+ condition := meta.FindStatusCondition(dashboard.Status.Conditions, v1alpha1.SynchronizedConditionType.String())
+ Expect(condition).NotTo(BeNil())
+ Expect(condition.Status).To(Equal(metav1.ConditionFalse))
+ Expect(condition.Message).To(ContainSubstring("workbench is not ready"))
+ })
+
+ It("should successfully create the dashboard", func() {
+ Expect(common.MaybePatch(k8sClient, &v1alpha1.Workbench{
+ ObjectMeta: metav1.ObjectMeta{Name: workbenchName, Namespace: namespace},
+ }, func(p *v1alpha1.Workbench) {
+ p.Status.ID = lo.ToPtr(workbenchID)
+ })).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("CreateDashboard", mock.Anything, mock.MatchedBy(func(attrs gqlclient.DashboardAttributes) bool {
+ if lo.FromPtr(attrs.WorkbenchID) != workbenchID ||
+ lo.FromPtr(attrs.Name) != dashboardName ||
+ lo.FromPtr(attrs.Description) != "Console overview" ||
+ len(attrs.Graphs) != 3 || len(attrs.Inputs) != 2 {
+ return false
+ }
+
+ section, notes, cpu := attrs.Graphs[0], attrs.Graphs[1], attrs.Graphs[2]
+ namespaceInput, podInput := attrs.Inputs[0], attrs.Inputs[1]
+ return section.Identifier == "overview" &&
+ section.Type == gqlclient.DashboardGraphTypeSection &&
+ jsonEqual(section.Options, map[string]any{"collapsed": true}) &&
+ section.Layout == gqlclient.DashboardGraphLayoutAttributes{X: 0, Y: 0, W: 12, H: 1} &&
+ section.Datasource == nil &&
+ notes.Type == gqlclient.DashboardGraphTypeMarkdown &&
+ lo.FromPtr(notes.Markdown) == "## Notes" &&
+ lo.FromPtr(notes.SectionID) == "overview" &&
+ notes.Options == nil &&
+ cpu.Identifier == "cpu" &&
+ lo.FromPtr(cpu.Title) == "CPU" &&
+ lo.FromPtr(cpu.Description) == "CPU usage" &&
+ cpu.Datasource != nil &&
+ cpu.Datasource.Type == gqlclient.DashboardDatasourceTypeMetrics &&
+ cpu.Datasource.Tool == "plrl_metrics" &&
+ jsonEqual(&cpu.Datasource.Input, map[string]any{"query": "sum(rate(cpu[5m]))"}) &&
+ namespaceInput.Name == "namespace" &&
+ lo.FromPtr(namespaceInput.Label) == "Namespace" &&
+ namespaceInput.Type == gqlclient.DashboardInputTypeText &&
+ lo.FromPtr(namespaceInput.Default) == "plrl-console" &&
+ lo.FromPtr(namespaceInput.Required) &&
+ namespaceInput.Datasource == nil &&
+ podInput.Type == gqlclient.DashboardInputTypeSelect &&
+ len(podInput.Options) == 2 && lo.FromPtr(podInput.Options[1]) == "b" &&
+ podInput.Datasource != nil &&
+ podInput.Datasource.Type == gqlclient.DashboardDatasourceTypeLabels &&
+ jsonEqual(&podInput.Datasource.Input, map[string]any{"metric": "up", "label": "pod"})
+ })).Return(&gqlclient.WorkbenchDashboardFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(dashboard.Status.SHA).NotTo(BeNil())
+ expectedStatus := readyStatus(id)
+ expectedStatus.SHA = dashboard.Status.SHA
+ Expect(common.SanitizeStatusConditions(dashboard.Status)).To(Equal(common.SanitizeStatusConditions(expectedStatus)))
+ Expect(dashboard.Finalizers).To(ContainElement(controller.DashboardFinalizer))
+
+ By("checking that the workbench is set as the owner")
+ Expect(dashboard.OwnerReferences).To(HaveLen(1))
+ Expect(dashboard.OwnerReferences[0].Kind).To(Equal("Workbench"))
+ Expect(dashboard.OwnerReferences[0].Name).To(Equal(workbenchName))
+ })
+
+ It("should not update the dashboard when spec did not change", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetDashboard", mock.Anything, id).Return(&gqlclient.WorkbenchDashboardFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "UpdateDashboard", mock.Anything, mock.Anything, mock.Anything)
+ })
+
+ It("should successfully update the dashboard when spec changed", func() {
+ Expect(common.MaybePatchObject(k8sClient, &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: dashboardName, Namespace: namespace},
+ }, func(p *v1alpha1.Dashboard) {
+ p.Spec.Name = lo.ToPtr("renamed-dashboard")
+ p.Spec.Graphs = p.Spec.Graphs[:2]
+ })).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetDashboard", mock.Anything, id).Return(&gqlclient.WorkbenchDashboardFragment{ID: id}, nil)
+ fakeConsoleClient.On("UpdateDashboard", mock.Anything, id, mock.MatchedBy(func(attrs gqlclient.DashboardAttributes) bool {
+ return lo.FromPtr(attrs.Name) == "renamed-dashboard" && len(attrs.Graphs) == 2
+ })).Return(&gqlclient.WorkbenchDashboardFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(meta.IsStatusConditionTrue(dashboard.Status.Conditions, v1alpha1.ReadyConditionType.String())).To(BeTrue())
+ })
+
+ It("should recreate the dashboard when it no longer exists in the Console API", func() {
+ const newID = "dashboard-789"
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetDashboard", mock.Anything, id).Return(nil, errors.NewNotFound(schema.GroupResource{}, id))
+ fakeConsoleClient.On("CreateDashboard", mock.Anything, mock.Anything).Return(&gqlclient.WorkbenchDashboardFragment{ID: newID}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(dashboard.Status.ID).To(Equal(lo.ToPtr(newID)))
+
+ // Restore the original ID for the deletion test.
+ Expect(common.MaybePatch(k8sClient, &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: dashboardName, Namespace: namespace},
+ }, func(p *v1alpha1.Dashboard) {
+ p.Status.ID = lo.ToPtr(id)
+ })).To(Succeed())
+ })
+
+ It("should reject changing the workbench reference", func() {
+ err := common.MaybePatchObject(k8sClient, &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: dashboardName, Namespace: namespace},
+ }, func(p *v1alpha1.Dashboard) {
+ p.Spec.WorkbenchRef = corev1.LocalObjectReference{Name: "another-workbench"}
+ })
+ Expect(err).To(HaveOccurred())
+ Expect(err.Error()).To(ContainSubstring("workbenchRef is immutable"))
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(dashboard.Spec.WorkbenchRef.Name).To(Equal(workbenchName))
+ })
+
+ It("should return the error and keep the finalizer when the Console API fails during deletion", func() {
+ By("disabling drift detection, so that no requeue is scheduled from the reconciliation settings")
+ Expect(common.MaybePatchObject(k8sClient, &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: dashboardName, Namespace: namespace},
+ }, func(p *v1alpha1.Dashboard) {
+ p.Spec.Reconciliation = &v1alpha1.Reconciliation{DriftDetection: lo.ToPtr(false)}
+ })).To(Succeed())
+
+ resource := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, resource)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
+
+ By("failing to check if the dashboard exists")
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsDashboardExists", mock.Anything, id).Return(false, fmt.Errorf("console unavailable"))
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).To(MatchError(ContainSubstring("console unavailable")))
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ By("failing to delete the dashboard")
+ fakeConsoleClient = mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsDashboardExists", mock.Anything, id).Return(true, nil)
+ fakeConsoleClient.On("DeleteDashboard", mock.Anything, id).Return(fmt.Errorf("delete failed"))
+
+ _, err = newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).To(MatchError(ContainSubstring("delete failed")))
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ dashboard := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, dashboard)).To(Succeed())
+ Expect(dashboard.DeletionTimestamp).NotTo(BeNil())
+ Expect(dashboard.Finalizers).To(ContainElement(controller.DashboardFinalizer))
+ condition := meta.FindStatusCondition(dashboard.Status.Conditions, v1alpha1.SynchronizedConditionType.String())
+ Expect(condition).NotTo(BeNil())
+ Expect(condition.Status).To(Equal(metav1.ConditionFalse))
+ Expect(condition.Message).To(ContainSubstring("delete failed"))
+ })
+
+ It("should successfully delete the dashboard", func() {
+ resource := &v1alpha1.Dashboard{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, resource)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsDashboardExists", mock.Anything, id).Return(true, nil)
+ fakeConsoleClient.On("DeleteDashboard", mock.Anything, id).Return(nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ dashboard := &v1alpha1.Dashboard{}
+ err = k8sClient.Get(ctx, typeNamespacedName, dashboard)
+ Expect(errors.IsNotFound(err)).To(BeTrue())
+ })
+ })
+
+ Context("When validating Dashboard resources", func() {
+ newDashboard := func(name string, mutate func(spec *v1alpha1.DashboardSpec)) *v1alpha1.Dashboard {
+ d := &v1alpha1.Dashboard{
+ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
+ Spec: v1alpha1.DashboardSpec{
+ WorkbenchRef: corev1.LocalObjectReference{Name: "workbench"},
+ Graphs: []v1alpha1.DashboardGraph{{
+ Identifier: "notes",
+ Type: gqlclient.DashboardGraphTypeMarkdown,
+ Markdown: lo.ToPtr("notes"),
+ Layout: v1alpha1.DashboardGraphLayout{X: 0, Y: 0, W: 1, H: 1},
+ }},
+ },
+ }
+ mutate(&d.Spec)
+ return d
+ }
+
+ DescribeTable("should reject invalid resources",
+ func(name string, mutate func(spec *v1alpha1.DashboardSpec), message string) {
+ err := k8sClient.Create(ctx, newDashboard(name, mutate))
+ Expect(err).To(HaveOccurred())
+ Expect(err.Error()).To(ContainSubstring(message))
+ },
+ Entry("empty workbench reference name", "invalid-dashboard-empty-ref", func(spec *v1alpha1.DashboardSpec) {
+ spec.WorkbenchRef = corev1.LocalObjectReference{}
+ }, "name is required"),
+ Entry("markdown graph without markdown", "invalid-dashboard-markdown", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs[0].Markdown = nil
+ }, "markdown must be set for MARKDOWN graphs"),
+ Entry("duplicate graph identifiers", "invalid-dashboard-duplicate", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs = append(spec.Graphs, spec.Graphs[0])
+ }, "Duplicate value"),
+ Entry("empty graph size", "invalid-dashboard-layout", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs[0].Layout.W = 0
+ }, "spec.graphs[0].layout.w"),
+ Entry("invalid graph type", "invalid-dashboard-type", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs[0].Type = "LINE"
+ }, "spec.graphs[0].type"),
+ Entry("graph referencing unknown section", "invalid-dashboard-unknown-section", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs[0].SectionID = lo.ToPtr("missing")
+ }, "sectionId must reference an existing SECTION graph"),
+ Entry("graph referencing a non-section graph", "invalid-dashboard-non-section", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs = append(spec.Graphs, v1alpha1.DashboardGraph{
+ Identifier: "child",
+ Type: gqlclient.DashboardGraphTypeStat,
+ SectionID: lo.ToPtr("notes"),
+ Layout: v1alpha1.DashboardGraphLayout{X: 1, Y: 0, W: 1, H: 1},
+ })
+ }, "sectionId must reference an existing SECTION graph"),
+ Entry("nested sections", "invalid-dashboard-nested-sections", func(spec *v1alpha1.DashboardSpec) {
+ spec.Graphs = append(spec.Graphs,
+ v1alpha1.DashboardGraph{
+ Identifier: "outer",
+ Type: gqlclient.DashboardGraphTypeSection,
+ Layout: v1alpha1.DashboardGraphLayout{X: 0, Y: 1, W: 1, H: 1},
+ },
+ v1alpha1.DashboardGraph{
+ Identifier: "inner",
+ Type: gqlclient.DashboardGraphTypeSection,
+ SectionID: lo.ToPtr("outer"),
+ Layout: v1alpha1.DashboardGraphLayout{X: 0, Y: 2, W: 1, H: 1},
+ },
+ )
+ }, "sections cannot be nested"),
+ )
+ })
+})
diff --git a/go/controller/internal/controller/helpers_test.go b/go/controller/internal/controller/helpers_test.go
new file mode 100644
index 0000000000..4ae8139508
--- /dev/null
+++ b/go/controller/internal/controller/helpers_test.go
@@ -0,0 +1,40 @@
+package controller_test
+
+import (
+ "github.com/samber/lo"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+ "github.com/pluralsh/console/go/controller/api/v1alpha1"
+)
+
+// readyStatus returns the expected status of a successfully synchronized resource with the given ID.
+func readyStatus(id string) v1alpha1.Status {
+ return v1alpha1.Status{
+ ID: lo.ToPtr(id),
+ Conditions: []metav1.Condition{
+ {
+ Type: v1alpha1.NamespacedCredentialsConditionType.String(),
+ Status: metav1.ConditionFalse,
+ Reason: v1alpha1.NamespacedCredentialsReasonDefault.String(),
+ Message: v1alpha1.NamespacedCredentialsConditionMessage.String(),
+ },
+ {
+ Type: v1alpha1.ReadonlyConditionType.String(),
+ Status: metav1.ConditionFalse,
+ Reason: v1alpha1.ReadonlyConditionReason.String(),
+ Message: "",
+ },
+ {
+ Type: v1alpha1.ReadyConditionType.String(),
+ Status: metav1.ConditionTrue,
+ Reason: v1alpha1.ReadyConditionReason.String(),
+ Message: "",
+ },
+ {
+ Type: v1alpha1.SynchronizedConditionType.String(),
+ Status: metav1.ConditionTrue,
+ Reason: v1alpha1.SynchronizedConditionReason.String(),
+ },
+ },
+ }
+}
diff --git a/go/controller/internal/controller/monitor_controller.go b/go/controller/internal/controller/monitor_controller.go
new file mode 100644
index 0000000000..99a16f4d17
--- /dev/null
+++ b/go/controller/internal/controller/monitor_controller.go
@@ -0,0 +1,279 @@
+package controller
+
+import (
+ "context"
+ "fmt"
+ "strings"
+
+ "github.com/samber/lo"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/types"
+ ctrl "sigs.k8s.io/controller-runtime"
+ "sigs.k8s.io/controller-runtime/pkg/builder"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/controller"
+ "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
+ "sigs.k8s.io/controller-runtime/pkg/log"
+ "sigs.k8s.io/controller-runtime/pkg/predicate"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
+
+ console "github.com/pluralsh/console/go/client"
+ "github.com/pluralsh/console/go/controller/api/v1alpha1"
+ consoleclient "github.com/pluralsh/console/go/controller/internal/client"
+ "github.com/pluralsh/console/go/controller/internal/common"
+ "github.com/pluralsh/console/go/controller/internal/credentials"
+ "github.com/pluralsh/console/go/controller/internal/utils"
+)
+
+// MonitorReconciler reconciles a v1alpha1.Monitor object.
+// Implements reconcile.Reconciler and types.Controller.
+type MonitorReconciler struct {
+ client.Client
+ ConsoleClient consoleclient.ConsoleClient
+ Scheme *runtime.Scheme
+ CredentialsCache credentials.NamespaceCredentialsCache
+}
+
+const (
+ // MonitorFinalizer defines the name for the main finalizer that synchronizes
+ // resource deletion from the Console API prior to removing the CRD.
+ MonitorFinalizer = "deployments.plural.sh/monitor-protection"
+)
+
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=monitors,verbs=get;list;watch;create;update;patch;delete
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=monitors/status,verbs=get;update;patch
+// +kubebuilder:rbac:groups=deployments.plural.sh,resources=monitors/finalizers,verbs=update
+
+// Reconcile is part of the main kubernetes reconciliation loop which aims to
+// move the current state of the v1alpha1.Monitor closer to the desired state
+// and syncs it with the Console API state.
+func (in *MonitorReconciler) Reconcile(ctx context.Context, req reconcile.Request) (_ reconcile.Result, reterr error) {
+ logger := log.FromContext(ctx)
+
+ monitor := new(v1alpha1.Monitor)
+ if err := in.Get(ctx, req.NamespacedName, monitor); err != nil {
+ return ctrl.Result{}, client.IgnoreNotFound(err)
+ }
+
+ scope, err := common.NewDefaultScope(ctx, in.Client, monitor)
+ if err != nil {
+ logger.Error(err, "failed to create scope")
+ return ctrl.Result{}, err
+ }
+ defer func() {
+ if err := scope.PatchObject(); err != nil && reterr == nil {
+ reterr = err
+ }
+ }()
+
+ // Switch to namespace credentials if configured. This has to be done before sending any request to the console.
+ nc, err := in.ConsoleClient.UseCredentials(req.Namespace, in.CredentialsCache)
+ credentials.SyncCredentialsInfo(monitor, monitor.SetCondition, nc, err)
+ if err != nil {
+ logger.Error(err, "failed to use namespace credentials", "namespaceCredentials", nc, "namespacedName", req.NamespacedName)
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionFalse, v1alpha1.SynchronizedConditionReasonError, fmt.Sprintf("failed to use %s namespace credentials: %s", nc, err.Error()))
+ return ctrl.Result{}, err
+ }
+
+ // Mark the resource as not ready. This will be overridden in the end.
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.ReadyConditionType, v1.ConditionFalse, v1alpha1.ReadyConditionReason, "")
+
+ // Handle proper resource deletion via finalizer
+ if result, err := in.addOrRemoveFinalizer(ctx, monitor); result != nil || err != nil {
+ return common.HandleRequeue(result, err, monitor.SetCondition)
+ }
+
+ // Mark resource as managed by this operator.
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.ReadonlyConditionType, v1.ConditionFalse, v1alpha1.ReadonlyConditionReason, "")
+
+ // Get Monitor SHA that can be saved back in the status to check for changes
+ changed, sha, err := monitor.Diff(utils.HashObject)
+ if err != nil {
+ logger.Error(err, "unable to calculate monitor SHA")
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionFalse, v1alpha1.SynchronizedConditionReasonError, err.Error())
+ return ctrl.Result{}, err
+ }
+
+ // Get the service this monitor is attached to.
+ serviceID, res, err := in.handleService(ctx, monitor)
+ if res != nil || err != nil {
+ return common.HandleRequeue(res, err, monitor.SetCondition)
+ }
+
+ // Get the optional workbench this monitor is attached to.
+ workbenchID, res, err := in.handleWorkbenchRef(ctx, monitor)
+ if res != nil || err != nil {
+ return common.HandleRequeue(res, err, monitor.SetCondition)
+ }
+
+ attributes, err := monitor.Attributes(serviceID, workbenchID)
+ if err != nil {
+ return common.HandleRequeue(nil, err, monitor.SetCondition)
+ }
+
+ // Sync Monitor CRD with the Console API
+ apiMonitor, err := in.sync(ctx, monitor, *attributes, changed)
+ if err != nil {
+ return common.HandleRequeue(nil, err, monitor.SetCondition)
+ }
+
+ monitor.Status.ID = &apiMonitor.ID
+ monitor.Status.SHA = &sha
+
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.ReadyConditionType, v1.ConditionTrue, v1alpha1.ReadyConditionReason, "")
+ utils.MarkCondition(monitor.SetCondition, v1alpha1.SynchronizedConditionType, v1.ConditionTrue, v1alpha1.SynchronizedConditionReason, "")
+
+ return monitor.Spec.Reconciliation.Requeue(), nil
+}
+
+// addOrRemoveFinalizer adds the finalizer or, during deletion, removes the resource from Console first.
+// Console errors are returned, not requeued via Spec.Reconciliation, which never requeues without drift detection.
+func (in *MonitorReconciler) addOrRemoveFinalizer(ctx context.Context, monitor *v1alpha1.Monitor) (*ctrl.Result, error) {
+ if monitor.DeletionTimestamp.IsZero() && !controllerutil.ContainsFinalizer(monitor, MonitorFinalizer) {
+ controllerutil.AddFinalizer(monitor, MonitorFinalizer)
+ }
+
+ // If the monitor is being deleted, cleanup and remove the finalizer.
+ if !monitor.DeletionTimestamp.IsZero() {
+ // If the monitor does not have an ID, the finalizer can be removed.
+ if !monitor.Status.HasID() {
+ controllerutil.RemoveFinalizer(monitor, MonitorFinalizer)
+ return &ctrl.Result{}, nil
+ }
+
+ exists, err := in.ConsoleClient.IsMonitorExists(ctx, monitor.Status.GetID())
+ if err != nil {
+ return nil, err
+ }
+
+ // Remove the monitor from Console API if it exists.
+ if exists {
+ if err = in.ConsoleClient.DeleteMonitor(ctx, monitor.Status.GetID()); err != nil {
+ // If it fails to delete the external dependency here, return with the error
+ // so that it can be retried.
+ return nil, err
+ }
+ }
+
+ // If our finalizer is present, remove it.
+ controllerutil.RemoveFinalizer(monitor, MonitorFinalizer)
+
+ // Stop reconciliation as the item does no longer exist.
+ return &ctrl.Result{}, nil
+ }
+
+ return nil, nil
+}
+
+// handleService resolves the service ID either from the ServiceDeployment referenced by spec.serviceRef
+// or from the existing Console API service referenced by spec.service ("cluster-handle/service-name").
+func (in *MonitorReconciler) handleService(ctx context.Context, monitor *v1alpha1.Monitor) (string, *ctrl.Result, error) {
+ if monitor.Spec.ServiceRef != nil {
+ service := &v1alpha1.ServiceDeployment{}
+ if err := in.Get(ctx, client.ObjectKey{Name: monitor.Spec.ServiceRef.Name, Namespace: monitor.Namespace}, service); err != nil {
+ if errors.IsNotFound(err) {
+ return "", lo.ToPtr(common.Wait()), fmt.Errorf("service not found: %s", err.Error())
+ }
+ return "", nil, fmt.Errorf("failed to get service: %s", err.Error())
+ }
+
+ if !service.Status.HasID() {
+ return "", lo.ToPtr(common.Wait()), fmt.Errorf("service is not ready")
+ }
+
+ // Make the current service the only ServiceDeployment owner.
+ removeServiceOwnerReferences(monitor, service.GetUID())
+ if err := controllerutil.SetOwnerReference(service, monitor, in.Scheme); err != nil {
+ return "", nil, fmt.Errorf("failed to set owner reference: %w", err)
+ }
+
+ return service.Status.GetID(), nil, nil
+ }
+
+ // Drop owners left by a previous serviceRef, so that deleting that service does not delete this monitor.
+ removeServiceOwnerReferences(monitor, "")
+
+ if monitor.Spec.Service != nil {
+ ref := lo.FromPtr(monitor.Spec.Service)
+ split := strings.Split(ref, "/")
+ if len(split) != 2 || split[0] == "" || split[1] == "" {
+ return "", nil, fmt.Errorf("invalid service reference %q, expected format cluster-handle/service-name", ref)
+ }
+
+ clusterHandle, serviceName := split[0], split[1]
+ service, err := in.ConsoleClient.GetServiceTinyByHandle(clusterHandle, serviceName)
+ if errors.IsNotFound(err) {
+ return "", lo.ToPtr(common.Wait()), fmt.Errorf("service %s not found", ref)
+ }
+ if err != nil {
+ return "", nil, fmt.Errorf("failed to get service %s: %s", ref, err.Error())
+ }
+
+ return service.ID, nil, nil
+ }
+
+ return "", nil, fmt.Errorf("either spec.serviceRef or spec.service must be set")
+}
+
+// removeServiceOwnerReferences removes ServiceDeployment owners except the one with the given UID (empty removes all).
+func removeServiceOwnerReferences(monitor *v1alpha1.Monitor, keep types.UID) {
+ serviceGroup := v1alpha1.GroupVersion.Group
+ monitor.SetOwnerReferences(lo.Reject(monitor.GetOwnerReferences(), func(ref v1.OwnerReference, _ int) bool {
+ group, _, _ := strings.Cut(ref.APIVersion, "/")
+ return group == serviceGroup && ref.Kind == "ServiceDeployment" && (keep == "" || ref.UID != keep)
+ }))
+}
+
+func (in *MonitorReconciler) handleWorkbenchRef(ctx context.Context, monitor *v1alpha1.Monitor) (*string, *ctrl.Result, error) {
+ if monitor.Spec.WorkbenchRef == nil {
+ return nil, nil, nil
+ }
+
+ workbenchID, res, err := common.WorkbenchID(ctx, in.Client, corev1.ObjectReference{Name: monitor.Spec.WorkbenchRef.Name}, monitor.Namespace)
+ if res != nil || err != nil {
+ return nil, res, err
+ }
+
+ return &workbenchID, nil, nil
+}
+
+func (in *MonitorReconciler) sync(ctx context.Context, monitor *v1alpha1.Monitor, attributes console.MonitorAttributes, changed bool) (*console.MonitorFragment, error) {
+ logger := log.FromContext(ctx)
+
+ // If we already have an ID, try to get the existing resource.
+ if monitor.Status.HasID() {
+ existingMonitor, err := in.ConsoleClient.GetMonitor(ctx, monitor.Status.GetID())
+ if err != nil {
+ if !errors.IsNotFound(err) {
+ return nil, err
+ }
+ // Not found by ID, create a new one.
+ logger.Info(fmt.Sprintf("monitor %s not found by ID, creating it", monitor.Name))
+ return in.ConsoleClient.CreateMonitor(ctx, attributes)
+ }
+
+ if changed {
+ logger.Info(fmt.Sprintf("updating monitor %s", monitor.Name))
+ return in.ConsoleClient.UpdateMonitor(ctx, existingMonitor.ID, attributes)
+ }
+
+ return existingMonitor, nil
+ }
+
+ // No ID yet, create a new monitor.
+ logger.Info(fmt.Sprintf("creating monitor %s", monitor.Name))
+ return in.ConsoleClient.CreateMonitor(ctx, attributes)
+}
+
+// SetupWithManager is responsible for initializing a new reconciler within the provided ctrl.Manager.
+func (in *MonitorReconciler) SetupWithManager(mgr ctrl.Manager) error {
+ mgr.GetLogger().Info("Starting reconciler", "reconciler", "monitor_reconciler")
+ return ctrl.NewControllerManagedBy(mgr).
+ WithOptions(controller.Options{MaxConcurrentReconciles: 1}).
+ Watches(&v1alpha1.NamespaceCredentials{}, credentials.OnCredentialsChange(in.Client, new(v1alpha1.MonitorList))).
+ For(&v1alpha1.Monitor{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})).
+ Complete(in)
+}
diff --git a/go/controller/internal/controller/monitor_controller_test.go b/go/controller/internal/controller/monitor_controller_test.go
new file mode 100644
index 0000000000..9487e03489
--- /dev/null
+++ b/go/controller/internal/controller/monitor_controller_test.go
@@ -0,0 +1,660 @@
+package controller_test
+
+import (
+ "context"
+ "fmt"
+
+ . "github.com/onsi/ginkgo/v2"
+ . "github.com/onsi/gomega"
+ "github.com/samber/lo"
+ "github.com/stretchr/testify/mock"
+ corev1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/api/meta"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/apimachinery/pkg/types"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
+
+ gqlclient "github.com/pluralsh/console/go/client"
+ "github.com/pluralsh/console/go/controller/api/v1alpha1"
+ "github.com/pluralsh/console/go/controller/internal/controller"
+ common "github.com/pluralsh/console/go/controller/internal/test/common"
+ "github.com/pluralsh/console/go/controller/internal/test/mocks"
+)
+
+var _ = Describe("Monitor Controller", Ordered, func() {
+ const namespace = "default"
+ ctx := context.Background()
+
+ newReconciler := func(consoleClient *mocks.ConsoleClientMock) *controller.MonitorReconciler {
+ return &controller.MonitorReconciler{
+ Client: k8sClient,
+ Scheme: k8sClient.Scheme(),
+ ConsoleClient: consoleClient,
+ CredentialsCache: nil,
+ }
+ }
+
+ Context("When reconciling a log monitor referencing an existing service by handle", func() {
+ const (
+ monitorName = "test-monitor-handle"
+ workbenchName = "test-workbench-for-monitor"
+ id = "monitor-123"
+ serviceID = "service-123"
+ workbenchID = "workbench-123"
+ )
+
+ typeNamespacedName := types.NamespacedName{Name: monitorName, Namespace: namespace}
+ workbenchNamespacedName := types.NamespacedName{Name: workbenchName, Namespace: namespace}
+
+ BeforeAll(func() {
+ By("creating the Workbench resource")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Workbench{
+ ObjectMeta: metav1.ObjectMeta{Name: workbenchName, Namespace: namespace},
+ Spec: v1alpha1.WorkbenchSpec{Name: lo.ToPtr(workbenchName)},
+ }, func(p *v1alpha1.Workbench) {
+ p.Status.ID = lo.ToPtr(workbenchID)
+ })).To(Succeed())
+
+ By("creating the Monitor resource")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ Spec: v1alpha1.MonitorSpec{
+ Name: lo.ToPtr("console-error-logs"),
+ Service: lo.ToPtr("mgmt/console"),
+ WorkbenchRef: &corev1.LocalObjectReference{Name: workbenchName},
+ Prompt: lo.ToPtr("Investigate the errors"),
+ Modes: &v1alpha1.WorkbenchJobModes{
+ Plan: lo.ToPtr(true),
+ Budget: &v1alpha1.WorkbenchJobBudget{Cost: lo.ToPtr("5.5"), Tokens: lo.ToPtr(int64(1000))},
+ Kubernetes: &v1alpha1.WorkbenchJobKubernetesModes{
+ Delete: lo.ToPtr(false),
+ ExcludeNamespaces: []string{"kube-system"},
+ },
+ },
+ Description: lo.ToPtr("Fires on too many error logs"),
+ Severity: gqlclient.AlertSeverityHigh,
+ Type: gqlclient.MonitorTypeLog,
+ EvaluationCron: "*/5 * * * *",
+ Query: v1alpha1.MonitorQuery{
+ Log: &v1alpha1.MonitorLogQuery{
+ Query: "error",
+ BucketSize: "5m",
+ Duration: lo.ToPtr("30m"),
+ Operator: lo.ToPtr(gqlclient.MonitorOperatorOr),
+ Facets: []v1alpha1.MonitorFacet{{Key: "namespace", Value: "plrl-console"}},
+ },
+ },
+ Threshold: v1alpha1.MonitorThreshold{Aggregate: gqlclient.MonitorAggregateMax, Value: "100.5"},
+ },
+ }, nil)).To(Succeed())
+ })
+
+ AfterAll(func() {
+ monitor := &v1alpha1.Monitor{}
+ if err := k8sClient.Get(ctx, typeNamespacedName, monitor); err == nil {
+ By("Cleanup the Monitor resource")
+ monitor.Finalizers = nil
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+ Expect(client.IgnoreNotFound(k8sClient.Delete(ctx, monitor))).To(Succeed())
+ }
+ workbench := &v1alpha1.Workbench{}
+ if err := k8sClient.Get(ctx, workbenchNamespacedName, workbench); err == nil {
+ By("Cleanup the Workbench resource")
+ Expect(k8sClient.Delete(ctx, workbench)).To(Succeed())
+ }
+ })
+
+ It("should successfully create the monitor", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("CreateMonitor", mock.Anything, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ return attrs.ServiceID == serviceID &&
+ lo.FromPtr(attrs.WorkbenchID) == workbenchID &&
+ attrs.Name == "console-error-logs" &&
+ lo.FromPtr(attrs.Prompt) == "Investigate the errors" &&
+ attrs.Severity == gqlclient.AlertSeverityHigh &&
+ attrs.Type == gqlclient.MonitorTypeLog &&
+ attrs.EvaluationCron == "*/5 * * * *" &&
+ attrs.Query.Metrics == nil &&
+ attrs.Query.Log != nil &&
+ attrs.Query.Log.Query == "error" &&
+ attrs.Query.Log.BucketSize == "5m" &&
+ lo.FromPtr(attrs.Query.Log.Duration) == "30m" &&
+ lo.FromPtr(attrs.Query.Log.Operator) == gqlclient.MonitorOperatorOr &&
+ len(attrs.Query.Log.Facets) == 1 &&
+ attrs.Query.Log.Facets[0].Key == "namespace" &&
+ attrs.Query.Log.Facets[0].Value == "plrl-console" &&
+ attrs.Threshold.Aggregate == gqlclient.MonitorAggregateMax &&
+ attrs.Threshold.Value == 100.5 &&
+ attrs.Modes != nil &&
+ lo.FromPtr(attrs.Modes.Plan) &&
+ attrs.Modes.Budget != nil &&
+ lo.FromPtr(attrs.Modes.Budget.Cost) == 5.5 &&
+ lo.FromPtr(attrs.Modes.Budget.Tokens) == 1000 &&
+ attrs.Modes.Kubernetes != nil &&
+ !lo.FromPtr(attrs.Modes.Kubernetes.Delete) &&
+ len(attrs.Modes.Kubernetes.ExcludeNamespaces) == 1 &&
+ lo.FromPtr(attrs.Modes.Kubernetes.ExcludeNamespaces[0]) == "kube-system"
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.Status.SHA).NotTo(BeNil())
+ expectedStatus := readyStatus(id)
+ expectedStatus.SHA = monitor.Status.SHA
+ Expect(common.SanitizeStatusConditions(monitor.Status)).To(Equal(common.SanitizeStatusConditions(expectedStatus)))
+ Expect(monitor.Finalizers).To(ContainElement(controller.MonitorFinalizer))
+ Expect(monitor.OwnerReferences).To(BeEmpty())
+ })
+
+ It("should not update the monitor when spec did not change", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "UpdateMonitor", mock.Anything, mock.Anything, mock.Anything)
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "CreateMonitor", mock.Anything, mock.Anything)
+ })
+
+ It("should successfully update the monitor when spec changed", func() {
+ Expect(common.MaybePatchObject(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ }, func(p *v1alpha1.Monitor) {
+ p.Spec.Severity = gqlclient.AlertSeverityCritical
+ p.Spec.Threshold.Value = "200"
+ })).To(Succeed())
+
+ previous := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, previous)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+ fakeConsoleClient.On("UpdateMonitor", mock.Anything, id, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ return attrs.ServiceID == serviceID &&
+ attrs.Severity == gqlclient.AlertSeverityCritical &&
+ attrs.Threshold.Value == 200
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.Status.ID).To(Equal(lo.ToPtr(id)))
+ Expect(monitor.Status.SHA).NotTo(Equal(previous.Status.SHA))
+ Expect(meta.IsStatusConditionTrue(monitor.Status.Conditions, v1alpha1.ReadyConditionType.String())).To(BeTrue())
+ })
+
+ It("should send the full query when switching the monitor type", func() {
+ // Full update, as common.MaybePatchObject cannot remove fields.
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ monitor.Spec.Type = gqlclient.MonitorTypeMetrics
+ monitor.Spec.Query = v1alpha1.MonitorQuery{Metrics: &v1alpha1.MonitorMetricsQuery{Query: "up"}}
+ monitor.Spec.Description = nil
+ monitor.Spec.Modes = nil
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+
+ updated := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, updated)).To(Succeed())
+ Expect(updated.Spec.Query.Log).To(BeNil())
+ Expect(updated.Spec.Description).To(BeNil())
+ Expect(updated.Spec.Modes).To(BeNil())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+ fakeConsoleClient.On("UpdateMonitor", mock.Anything, id, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ // Removed fields must be nil so that Console clears them.
+ return attrs.Type == gqlclient.MonitorTypeMetrics &&
+ attrs.Query.Log == nil &&
+ attrs.Query.Metrics != nil &&
+ attrs.Query.Metrics.Query == "up" &&
+ attrs.Description == nil &&
+ attrs.Modes == nil
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+ })
+
+ It("should recreate the monitor when it no longer exists in the Console API", func() {
+ const newID = "monitor-456"
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(nil, errors.NewNotFound(schema.GroupResource{}, id))
+ fakeConsoleClient.On("CreateMonitor", mock.Anything, mock.Anything).Return(&gqlclient.MonitorFragment{ID: newID}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.Status.ID).To(Equal(lo.ToPtr(newID)))
+
+ // Restore the original ID for the deletion test.
+ Expect(common.MaybePatch(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ }, func(p *v1alpha1.Monitor) {
+ p.Status.ID = lo.ToPtr(id)
+ })).To(Succeed())
+ })
+
+ It("should return the error and keep the finalizer when the Console API fails during deletion", func() {
+ By("disabling drift detection, so that no requeue is scheduled from the reconciliation settings")
+ Expect(common.MaybePatchObject(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ }, func(p *v1alpha1.Monitor) {
+ p.Spec.Reconciliation = &v1alpha1.Reconciliation{DriftDetection: lo.ToPtr(false)}
+ })).To(Succeed())
+
+ resource := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, resource)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
+
+ By("failing to check if the monitor exists")
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsMonitorExists", mock.Anything, id).Return(false, fmt.Errorf("console unavailable"))
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).To(MatchError(ContainSubstring("console unavailable")))
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ By("failing to delete the monitor")
+ fakeConsoleClient = mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsMonitorExists", mock.Anything, id).Return(true, nil)
+ fakeConsoleClient.On("DeleteMonitor", mock.Anything, id).Return(fmt.Errorf("delete failed"))
+
+ _, err = newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).To(MatchError(ContainSubstring("delete failed")))
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.DeletionTimestamp).NotTo(BeNil())
+ Expect(monitor.Finalizers).To(ContainElement(controller.MonitorFinalizer))
+ condition := meta.FindStatusCondition(monitor.Status.Conditions, v1alpha1.SynchronizedConditionType.String())
+ Expect(condition).NotTo(BeNil())
+ Expect(condition.Status).To(Equal(metav1.ConditionFalse))
+ Expect(condition.Message).To(ContainSubstring("delete failed"))
+ })
+
+ It("should successfully delete the monitor", func() {
+ resource := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, resource)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsMonitorExists", mock.Anything, id).Return(true, nil)
+ fakeConsoleClient.On("DeleteMonitor", mock.Anything, id).Return(nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ err = k8sClient.Get(ctx, typeNamespacedName, monitor)
+ Expect(errors.IsNotFound(err)).To(BeTrue())
+ })
+ })
+
+ Context("When reconciling a metrics monitor referencing a ServiceDeployment", func() {
+ const (
+ monitorName = "test-monitor-service-ref"
+ serviceName = "test-service-for-monitor"
+ otherName = "test-other-service-for-monitor"
+ otherID = "service-other-789"
+ clusterName = "test-cluster-for-monitor"
+ id = "monitor-789"
+ serviceID = "service-789"
+ )
+
+ typeNamespacedName := types.NamespacedName{Name: monitorName, Namespace: namespace}
+ serviceNamespacedName := types.NamespacedName{Name: serviceName, Namespace: namespace}
+ otherNamespacedName := types.NamespacedName{Name: otherName, Namespace: namespace}
+
+ BeforeAll(func() {
+ By("creating the Monitor resource before the service exists")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ Spec: v1alpha1.MonitorSpec{
+ ServiceRef: &corev1.LocalObjectReference{Name: serviceName},
+ Severity: gqlclient.AlertSeverityMedium,
+ Type: gqlclient.MonitorTypeMetrics,
+ EvaluationCron: "*/10 * * * *",
+ Query: v1alpha1.MonitorQuery{
+ Metrics: &v1alpha1.MonitorMetricsQuery{
+ Query: "sum(rate(container_cpu_usage_seconds_total[5m]))",
+ Step: lo.ToPtr("1m"),
+ Duration: lo.ToPtr("1h"),
+ Options: &v1alpha1.MonitorMetricsOptions{
+ Azure: &v1alpha1.MonitorMetricsAzureOptions{ResourceID: lo.ToPtr("resource-id")},
+ },
+ },
+ },
+ Threshold: v1alpha1.MonitorThreshold{Aggregate: gqlclient.MonitorAggregateAvg, Value: "0.8"},
+ },
+ }, nil)).To(Succeed())
+ })
+
+ AfterAll(func() {
+ monitor := &v1alpha1.Monitor{}
+ if err := k8sClient.Get(ctx, typeNamespacedName, monitor); err == nil {
+ By("Cleanup the Monitor resource")
+ monitor.Finalizers = nil
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+ Expect(client.IgnoreNotFound(k8sClient.Delete(ctx, monitor))).To(Succeed())
+ }
+ for _, name := range []types.NamespacedName{serviceNamespacedName, otherNamespacedName} {
+ service := &v1alpha1.ServiceDeployment{}
+ if err := k8sClient.Get(ctx, name, service); err == nil {
+ By("Cleanup the ServiceDeployment resource " + name.Name)
+ service.Finalizers = nil
+ Expect(k8sClient.Update(ctx, service)).To(Succeed())
+ Expect(client.IgnoreNotFound(k8sClient.Delete(ctx, service))).To(Succeed())
+ }
+ }
+ })
+
+ It("should wait for the referenced service", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+
+ result, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ Expect(result.RequeueAfter).NotTo(BeZero())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "CreateMonitor", mock.Anything, mock.Anything)
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.Status.ID).To(BeNil())
+ Expect(meta.IsStatusConditionFalse(monitor.Status.Conditions, v1alpha1.ReadyConditionType.String())).To(BeTrue())
+ Expect(meta.IsStatusConditionFalse(monitor.Status.Conditions, v1alpha1.SynchronizedConditionType.String())).To(BeTrue())
+ })
+
+ It("should wait for the referenced service to be ready", func() {
+ By("creating the ServiceDeployment resource without an ID")
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.ServiceDeployment{
+ ObjectMeta: metav1.ObjectMeta{Name: serviceName, Namespace: namespace},
+ Spec: v1alpha1.ServiceSpec{
+ Version: lo.ToPtr("1.0"),
+ ClusterRef: corev1.ObjectReference{Name: clusterName, Namespace: namespace},
+ },
+ }, nil)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+
+ result, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ Expect(result.RequeueAfter).NotTo(BeZero())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "CreateMonitor", mock.Anything, mock.Anything)
+ })
+
+ It("should successfully create the monitor once the service is ready", func() {
+ Expect(common.MaybePatch(k8sClient, &v1alpha1.ServiceDeployment{
+ ObjectMeta: metav1.ObjectMeta{Name: serviceName, Namespace: namespace},
+ }, func(p *v1alpha1.ServiceDeployment) {
+ p.Status.ID = lo.ToPtr(serviceID)
+ })).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("CreateMonitor", mock.Anything, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ return attrs.ServiceID == serviceID &&
+ attrs.WorkbenchID == nil &&
+ attrs.Modes == nil &&
+ attrs.Name == monitorName &&
+ attrs.Type == gqlclient.MonitorTypeMetrics &&
+ attrs.Query.Log == nil &&
+ attrs.Query.Metrics != nil &&
+ attrs.Query.Metrics.Query == "sum(rate(container_cpu_usage_seconds_total[5m]))" &&
+ lo.FromPtr(attrs.Query.Metrics.Step) == "1m" &&
+ lo.FromPtr(attrs.Query.Metrics.Duration) == "1h" &&
+ attrs.Query.Metrics.Options != nil &&
+ attrs.Query.Metrics.Options.Azure != nil &&
+ lo.FromPtr(attrs.Query.Metrics.Options.Azure.ResourceID) == "resource-id" &&
+ attrs.Threshold.Aggregate == gqlclient.MonitorAggregateAvg &&
+ attrs.Threshold.Value == 0.8
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ expectedStatus := readyStatus(id)
+ expectedStatus.SHA = monitor.Status.SHA
+ Expect(common.SanitizeStatusConditions(monitor.Status)).To(Equal(common.SanitizeStatusConditions(expectedStatus)))
+
+ By("checking that the service is set as the owner")
+ Expect(monitor.OwnerReferences).To(HaveLen(1))
+ Expect(monitor.OwnerReferences[0].Kind).To(Equal("ServiceDeployment"))
+ Expect(monitor.OwnerReferences[0].Name).To(Equal(serviceName))
+ })
+
+ It("should replace the owner reference when switching to another ServiceDeployment", func() {
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.ServiceDeployment{
+ ObjectMeta: metav1.ObjectMeta{Name: otherName, Namespace: namespace},
+ Spec: v1alpha1.ServiceSpec{
+ Version: lo.ToPtr("1.0"),
+ ClusterRef: corev1.ObjectReference{Name: clusterName, Namespace: namespace},
+ },
+ }, func(p *v1alpha1.ServiceDeployment) {
+ p.Status.ID = lo.ToPtr(otherID)
+ })).To(Succeed())
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ monitor.Spec.ServiceRef = &corev1.LocalObjectReference{Name: otherName}
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+ fakeConsoleClient.On("UpdateMonitor", mock.Anything, id, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ return attrs.ServiceID == otherID
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.OwnerReferences).To(HaveLen(1))
+ Expect(monitor.OwnerReferences[0].Kind).To(Equal("ServiceDeployment"))
+ Expect(monitor.OwnerReferences[0].Name).To(Equal(otherName))
+ })
+
+ It("should remove the owner reference when switching to a Console service handle", func() {
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.OwnerReferences).To(HaveLen(1))
+ monitor.Spec.ServiceRef = nil
+ monitor.Spec.Service = lo.ToPtr("mgmt/console")
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "console").Return(&gqlclient.GetServiceDeploymentTinyByHandle_ServiceDeployment{ID: serviceID, Name: "console"}, nil)
+ fakeConsoleClient.On("GetMonitor", mock.Anything, id).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+ fakeConsoleClient.On("UpdateMonitor", mock.Anything, id, mock.MatchedBy(func(attrs gqlclient.MonitorAttributes) bool {
+ return attrs.ServiceID == serviceID
+ })).Return(&gqlclient.MonitorFragment{ID: id}, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.OwnerReferences).To(BeEmpty())
+ })
+
+ It("should remove the finalizer when the monitor no longer exists in the Console API", func() {
+ resource := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, resource)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, resource)).To(Succeed())
+
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("IsMonitorExists", mock.Anything, id).Return(false, nil)
+
+ _, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "DeleteMonitor", mock.Anything, mock.Anything)
+
+ monitor := &v1alpha1.Monitor{}
+ err = k8sClient.Get(ctx, typeNamespacedName, monitor)
+ Expect(errors.IsNotFound(err)).To(BeTrue())
+ })
+ })
+
+ Context("When reconciling a monitor referencing a missing service by handle", func() {
+ const monitorName = "test-monitor-missing-service"
+ typeNamespacedName := types.NamespacedName{Name: monitorName, Namespace: namespace}
+
+ BeforeAll(func() {
+ Expect(common.MaybeCreate(k8sClient, &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: monitorName, Namespace: namespace},
+ Spec: v1alpha1.MonitorSpec{
+ Service: lo.ToPtr("mgmt/missing"),
+ Severity: gqlclient.AlertSeverityLow,
+ Type: gqlclient.MonitorTypeLog,
+ EvaluationCron: "*/5 * * * *",
+ Query: v1alpha1.MonitorQuery{Log: &v1alpha1.MonitorLogQuery{Query: "error", BucketSize: "5m"}},
+ Threshold: v1alpha1.MonitorThreshold{Aggregate: gqlclient.MonitorAggregateMax, Value: "1"},
+ },
+ }, nil)).To(Succeed())
+ })
+
+ AfterAll(func() {
+ monitor := &v1alpha1.Monitor{}
+ if err := k8sClient.Get(ctx, typeNamespacedName, monitor); err == nil {
+ monitor.Finalizers = nil
+ Expect(k8sClient.Update(ctx, monitor)).To(Succeed())
+ Expect(client.IgnoreNotFound(k8sClient.Delete(ctx, monitor))).To(Succeed())
+ }
+ })
+
+ It("should wait until the service exists", func() {
+ fakeConsoleClient := mocks.NewConsoleClientMock(mocks.TestingT)
+ fakeConsoleClient.On("UseCredentials", mock.Anything, mock.Anything).Return("", nil)
+ fakeConsoleClient.On("GetServiceTinyByHandle", "mgmt", "missing").Return(nil, errors.NewNotFound(schema.GroupResource{}, "missing"))
+
+ result, err := newReconciler(fakeConsoleClient).Reconcile(ctx, reconcile.Request{NamespacedName: typeNamespacedName})
+ Expect(err).NotTo(HaveOccurred())
+ Expect(result.RequeueAfter).NotTo(BeZero())
+ fakeConsoleClient.AssertExpectations(GinkgoT())
+ fakeConsoleClient.AssertNotCalled(GinkgoT(), "CreateMonitor", mock.Anything, mock.Anything)
+
+ monitor := &v1alpha1.Monitor{}
+ Expect(k8sClient.Get(ctx, typeNamespacedName, monitor)).To(Succeed())
+ Expect(monitor.Status.ID).To(BeNil())
+ condition := meta.FindStatusCondition(monitor.Status.Conditions, v1alpha1.SynchronizedConditionType.String())
+ Expect(condition).NotTo(BeNil())
+ Expect(condition.Status).To(Equal(metav1.ConditionFalse))
+ Expect(condition.Message).To(ContainSubstring("mgmt/missing not found"))
+ })
+ })
+
+ Context("When validating Monitor resources", func() {
+ newMonitor := func(name string, mutate func(spec *v1alpha1.MonitorSpec)) *v1alpha1.Monitor {
+ m := &v1alpha1.Monitor{
+ ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: namespace},
+ Spec: v1alpha1.MonitorSpec{
+ Service: lo.ToPtr("mgmt/console"),
+ Severity: gqlclient.AlertSeverityLow,
+ Type: gqlclient.MonitorTypeLog,
+ EvaluationCron: "*/5 * * * *",
+ Query: v1alpha1.MonitorQuery{Log: &v1alpha1.MonitorLogQuery{Query: "error", BucketSize: "5m"}},
+ Threshold: v1alpha1.MonitorThreshold{Aggregate: gqlclient.MonitorAggregateMax, Value: "1"},
+ },
+ }
+ mutate(&m.Spec)
+ return m
+ }
+
+ DescribeTable("should accept valid evaluation cron expressions",
+ func(name, cron string) {
+ monitor := newMonitor(name, func(spec *v1alpha1.MonitorSpec) {
+ spec.EvaluationCron = cron
+ })
+ Expect(k8sClient.Create(ctx, monitor)).To(Succeed())
+ Expect(k8sClient.Delete(ctx, monitor)).To(Succeed())
+ },
+ Entry("5 fields", "valid-monitor-cron-5", "*/5 * * * *"),
+ Entry("6 fields with year", "valid-monitor-cron-6", "0 0 1 1 * 2027"),
+ Entry("shortcut", "valid-monitor-cron-shortcut", "@hourly"),
+ )
+
+ DescribeTable("should reject invalid resources",
+ func(name string, mutate func(spec *v1alpha1.MonitorSpec), message string) {
+ err := k8sClient.Create(ctx, newMonitor(name, mutate))
+ Expect(err).To(HaveOccurred())
+ Expect(err.Error()).To(ContainSubstring(message))
+ },
+ Entry("both service references", "invalid-monitor-both-refs", func(spec *v1alpha1.MonitorSpec) {
+ spec.ServiceRef = &corev1.LocalObjectReference{Name: "service"}
+ }, "exactly one of serviceRef or service must be set"),
+ Entry("empty service reference name", "invalid-monitor-empty-ref", func(spec *v1alpha1.MonitorSpec) {
+ spec.Service = nil
+ spec.ServiceRef = &corev1.LocalObjectReference{}
+ }, "name is required"),
+ Entry("no service reference", "invalid-monitor-no-refs", func(spec *v1alpha1.MonitorSpec) {
+ spec.Service = nil
+ }, "exactly one of serviceRef or service must be set"),
+ Entry("malformed service handle", "invalid-monitor-bad-handle", func(spec *v1alpha1.MonitorSpec) {
+ spec.Service = lo.ToPtr("console")
+ }, "spec.service"),
+ Entry("log type without log query", "invalid-monitor-no-log", func(spec *v1alpha1.MonitorSpec) {
+ spec.Query = v1alpha1.MonitorQuery{Metrics: &v1alpha1.MonitorMetricsQuery{Query: "up"}}
+ }, "query.log must be set when type is LOG"),
+ Entry("both queries set", "invalid-monitor-both-queries", func(spec *v1alpha1.MonitorSpec) {
+ spec.Query.Metrics = &v1alpha1.MonitorMetricsQuery{Query: "up"}
+ }, "only one of log or metrics can be set"),
+ Entry("tool query without workbench", "invalid-monitor-tool", func(spec *v1alpha1.MonitorSpec) {
+ spec.Query.Log.Tool = lo.ToPtr("elastic")
+ }, "workbenchRef is required for tool-backed monitor queries"),
+ Entry("invalid threshold value", "invalid-monitor-threshold", func(spec *v1alpha1.MonitorSpec) {
+ spec.Threshold.Value = "high"
+ }, "spec.threshold.value"),
+ Entry("invalid bucket size", "invalid-monitor-bucket", func(spec *v1alpha1.MonitorSpec) {
+ spec.Query.Log.BucketSize = "5 minutes"
+ }, "spec.query.log.bucketSize"),
+ Entry("invalid severity", "invalid-monitor-severity", func(spec *v1alpha1.MonitorSpec) {
+ spec.Severity = "SEVERE"
+ }, "spec.severity"),
+ Entry("invalid evaluation cron", "invalid-monitor-cron", func(spec *v1alpha1.MonitorSpec) {
+ spec.EvaluationCron = "5m"
+ }, "spec.evaluationCron"),
+ Entry("evaluation cron with too few fields", "invalid-monitor-cron-fields", func(spec *v1alpha1.MonitorSpec) {
+ spec.EvaluationCron = "*/5 * * *"
+ }, "spec.evaluationCron"),
+ )
+ })
+})
diff --git a/go/controller/internal/test/mocks/ConsoleClient_mock.go b/go/controller/internal/test/mocks/ConsoleClient_mock.go
index 6ede3b1530..84476e514b 100644
--- a/go/controller/internal/test/mocks/ConsoleClient_mock.go
+++ b/go/controller/internal/test/mocks/ConsoleClient_mock.go
@@ -319,6 +319,65 @@ func (_c *ConsoleClientMock_CreateCustomStackRun_Call) RunAndReturn(run func(con
return _c
}
+// CreateDashboard provides a mock function with given fields: ctx, attributes
+func (_m *ConsoleClientMock) CreateDashboard(ctx context.Context, attributes client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error) {
+ ret := _m.Called(ctx, attributes)
+
+ if len(ret) == 0 {
+ panic("no return value specified for CreateDashboard")
+ }
+
+ var r0 *client.WorkbenchDashboardFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error)); ok {
+ return rf(ctx, attributes)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, client.DashboardAttributes) *client.WorkbenchDashboardFragment); ok {
+ r0 = rf(ctx, attributes)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.WorkbenchDashboardFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, client.DashboardAttributes) error); ok {
+ r1 = rf(ctx, attributes)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_CreateDashboard_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateDashboard'
+type ConsoleClientMock_CreateDashboard_Call struct {
+ *mock.Call
+}
+
+// CreateDashboard is a helper method to define mock.On call
+// - ctx context.Context
+// - attributes client.DashboardAttributes
+func (_e *ConsoleClientMock_Expecter) CreateDashboard(ctx interface{}, attributes interface{}) *ConsoleClientMock_CreateDashboard_Call {
+ return &ConsoleClientMock_CreateDashboard_Call{Call: _e.mock.On("CreateDashboard", ctx, attributes)}
+}
+
+func (_c *ConsoleClientMock_CreateDashboard_Call) Run(run func(ctx context.Context, attributes client.DashboardAttributes)) *ConsoleClientMock_CreateDashboard_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(client.DashboardAttributes))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_CreateDashboard_Call) Return(_a0 *client.WorkbenchDashboardFragment, _a1 error) *ConsoleClientMock_CreateDashboard_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_CreateDashboard_Call) RunAndReturn(run func(context.Context, client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error)) *ConsoleClientMock_CreateDashboard_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// CreateFederatedCredential provides a mock function with given fields: ctx, attributes
func (_m *ConsoleClientMock) CreateFederatedCredential(ctx context.Context, attributes client.FederatedCredentialAttributes) (*client.FederatedCredentialFragment, error) {
ret := _m.Called(ctx, attributes)
@@ -612,6 +671,65 @@ func (_c *ConsoleClientMock_CreateGroup_Call) RunAndReturn(run func(context.Cont
return _c
}
+// CreateMonitor provides a mock function with given fields: ctx, attributes
+func (_m *ConsoleClientMock) CreateMonitor(ctx context.Context, attributes client.MonitorAttributes) (*client.MonitorFragment, error) {
+ ret := _m.Called(ctx, attributes)
+
+ if len(ret) == 0 {
+ panic("no return value specified for CreateMonitor")
+ }
+
+ var r0 *client.MonitorFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, client.MonitorAttributes) (*client.MonitorFragment, error)); ok {
+ return rf(ctx, attributes)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, client.MonitorAttributes) *client.MonitorFragment); ok {
+ r0 = rf(ctx, attributes)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.MonitorFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, client.MonitorAttributes) error); ok {
+ r1 = rf(ctx, attributes)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_CreateMonitor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateMonitor'
+type ConsoleClientMock_CreateMonitor_Call struct {
+ *mock.Call
+}
+
+// CreateMonitor is a helper method to define mock.On call
+// - ctx context.Context
+// - attributes client.MonitorAttributes
+func (_e *ConsoleClientMock_Expecter) CreateMonitor(ctx interface{}, attributes interface{}) *ConsoleClientMock_CreateMonitor_Call {
+ return &ConsoleClientMock_CreateMonitor_Call{Call: _e.mock.On("CreateMonitor", ctx, attributes)}
+}
+
+func (_c *ConsoleClientMock_CreateMonitor_Call) Run(run func(ctx context.Context, attributes client.MonitorAttributes)) *ConsoleClientMock_CreateMonitor_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(client.MonitorAttributes))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_CreateMonitor_Call) Return(_a0 *client.MonitorFragment, _a1 error) *ConsoleClientMock_CreateMonitor_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_CreateMonitor_Call) RunAndReturn(run func(context.Context, client.MonitorAttributes) (*client.MonitorFragment, error)) *ConsoleClientMock_CreateMonitor_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// CreateNamespace provides a mock function with given fields: ctx, attributes
func (_m *ConsoleClientMock) CreateNamespace(ctx context.Context, attributes client.ManagedNamespaceAttributes) (*client.ManagedNamespaceFragment, error) {
ret := _m.Called(ctx, attributes)
@@ -2251,6 +2369,53 @@ func (_c *ConsoleClientMock_DeleteCustomStackRun_Call) RunAndReturn(run func(con
return _c
}
+// DeleteDashboard provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) DeleteDashboard(ctx context.Context, id string) error {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for DeleteDashboard")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) error); ok {
+ r0 = rf(ctx, id)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// ConsoleClientMock_DeleteDashboard_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteDashboard'
+type ConsoleClientMock_DeleteDashboard_Call struct {
+ *mock.Call
+}
+
+// DeleteDashboard is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) DeleteDashboard(ctx interface{}, id interface{}) *ConsoleClientMock_DeleteDashboard_Call {
+ return &ConsoleClientMock_DeleteDashboard_Call{Call: _e.mock.On("DeleteDashboard", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_DeleteDashboard_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_DeleteDashboard_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_DeleteDashboard_Call) Return(_a0 error) *ConsoleClientMock_DeleteDashboard_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *ConsoleClientMock_DeleteDashboard_Call) RunAndReturn(run func(context.Context, string) error) *ConsoleClientMock_DeleteDashboard_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// DeleteFederatedCredential provides a mock function with given fields: ctx, id
func (_m *ConsoleClientMock) DeleteFederatedCredential(ctx context.Context, id string) (*client.DeleteFederatedCredential_DeleteFederatedCredential, error) {
ret := _m.Called(ctx, id)
@@ -2497,6 +2662,53 @@ func (_c *ConsoleClientMock_DeleteMCPServer_Call) RunAndReturn(run func(context.
return _c
}
+// DeleteMonitor provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) DeleteMonitor(ctx context.Context, id string) error {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for DeleteMonitor")
+ }
+
+ var r0 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) error); ok {
+ r0 = rf(ctx, id)
+ } else {
+ r0 = ret.Error(0)
+ }
+
+ return r0
+}
+
+// ConsoleClientMock_DeleteMonitor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DeleteMonitor'
+type ConsoleClientMock_DeleteMonitor_Call struct {
+ *mock.Call
+}
+
+// DeleteMonitor is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) DeleteMonitor(ctx interface{}, id interface{}) *ConsoleClientMock_DeleteMonitor_Call {
+ return &ConsoleClientMock_DeleteMonitor_Call{Call: _e.mock.On("DeleteMonitor", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_DeleteMonitor_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_DeleteMonitor_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_DeleteMonitor_Call) Return(_a0 error) *ConsoleClientMock_DeleteMonitor_Call {
+ _c.Call.Return(_a0)
+ return _c
+}
+
+func (_c *ConsoleClientMock_DeleteMonitor_Call) RunAndReturn(run func(context.Context, string) error) *ConsoleClientMock_DeleteMonitor_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// DeleteNamespace provides a mock function with given fields: ctx, id
func (_m *ConsoleClientMock) DeleteNamespace(ctx context.Context, id string) error {
ret := _m.Called(ctx, id)
@@ -4576,6 +4788,65 @@ func (_c *ConsoleClientMock_GetCustomStackRun_Call) RunAndReturn(run func(contex
return _c
}
+// GetDashboard provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) GetDashboard(ctx context.Context, id string) (*client.WorkbenchDashboardFragment, error) {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for GetDashboard")
+ }
+
+ var r0 *client.WorkbenchDashboardFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) (*client.WorkbenchDashboardFragment, error)); ok {
+ return rf(ctx, id)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string) *client.WorkbenchDashboardFragment); ok {
+ r0 = rf(ctx, id)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.WorkbenchDashboardFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
+ r1 = rf(ctx, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_GetDashboard_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetDashboard'
+type ConsoleClientMock_GetDashboard_Call struct {
+ *mock.Call
+}
+
+// GetDashboard is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) GetDashboard(ctx interface{}, id interface{}) *ConsoleClientMock_GetDashboard_Call {
+ return &ConsoleClientMock_GetDashboard_Call{Call: _e.mock.On("GetDashboard", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_GetDashboard_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_GetDashboard_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetDashboard_Call) Return(_a0 *client.WorkbenchDashboardFragment, _a1 error) *ConsoleClientMock_GetDashboard_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetDashboard_Call) RunAndReturn(run func(context.Context, string) (*client.WorkbenchDashboardFragment, error)) *ConsoleClientMock_GetDashboard_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// GetDeploymentSettings provides a mock function with given fields: ctx
func (_m *ConsoleClientMock) GetDeploymentSettings(ctx context.Context) (*client.DeploymentSettingsFragment, error) {
ret := _m.Called(ctx)
@@ -5276,6 +5547,65 @@ func (_c *ConsoleClientMock_GetMCPServer_Call) RunAndReturn(run func(context.Con
return _c
}
+// GetMonitor provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) GetMonitor(ctx context.Context, id string) (*client.MonitorFragment, error) {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for GetMonitor")
+ }
+
+ var r0 *client.MonitorFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) (*client.MonitorFragment, error)); ok {
+ return rf(ctx, id)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string) *client.MonitorFragment); ok {
+ r0 = rf(ctx, id)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.MonitorFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
+ r1 = rf(ctx, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_GetMonitor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetMonitor'
+type ConsoleClientMock_GetMonitor_Call struct {
+ *mock.Call
+}
+
+// GetMonitor is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) GetMonitor(ctx interface{}, id interface{}) *ConsoleClientMock_GetMonitor_Call {
+ return &ConsoleClientMock_GetMonitor_Call{Call: _e.mock.On("GetMonitor", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_GetMonitor_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_GetMonitor_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetMonitor_Call) Return(_a0 *client.MonitorFragment, _a1 error) *ConsoleClientMock_GetMonitor_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetMonitor_Call) RunAndReturn(run func(context.Context, string) (*client.MonitorFragment, error)) *ConsoleClientMock_GetMonitor_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// GetNamespace provides a mock function with given fields: ctx, id
func (_m *ConsoleClientMock) GetNamespace(ctx context.Context, id string) (*client.ManagedNamespaceFragment, error) {
ret := _m.Called(ctx, id)
@@ -6987,6 +7317,65 @@ func (_c *ConsoleClientMock_GetServiceContext_Call) RunAndReturn(run func(string
return _c
}
+// GetServiceTinyByHandle provides a mock function with given fields: clusterHandle, serviceName
+func (_m *ConsoleClientMock) GetServiceTinyByHandle(clusterHandle string, serviceName string) (*client.GetServiceDeploymentTinyByHandle_ServiceDeployment, error) {
+ ret := _m.Called(clusterHandle, serviceName)
+
+ if len(ret) == 0 {
+ panic("no return value specified for GetServiceTinyByHandle")
+ }
+
+ var r0 *client.GetServiceDeploymentTinyByHandle_ServiceDeployment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(string, string) (*client.GetServiceDeploymentTinyByHandle_ServiceDeployment, error)); ok {
+ return rf(clusterHandle, serviceName)
+ }
+ if rf, ok := ret.Get(0).(func(string, string) *client.GetServiceDeploymentTinyByHandle_ServiceDeployment); ok {
+ r0 = rf(clusterHandle, serviceName)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.GetServiceDeploymentTinyByHandle_ServiceDeployment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(string, string) error); ok {
+ r1 = rf(clusterHandle, serviceName)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_GetServiceTinyByHandle_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetServiceTinyByHandle'
+type ConsoleClientMock_GetServiceTinyByHandle_Call struct {
+ *mock.Call
+}
+
+// GetServiceTinyByHandle is a helper method to define mock.On call
+// - clusterHandle string
+// - serviceName string
+func (_e *ConsoleClientMock_Expecter) GetServiceTinyByHandle(clusterHandle interface{}, serviceName interface{}) *ConsoleClientMock_GetServiceTinyByHandle_Call {
+ return &ConsoleClientMock_GetServiceTinyByHandle_Call{Call: _e.mock.On("GetServiceTinyByHandle", clusterHandle, serviceName)}
+}
+
+func (_c *ConsoleClientMock_GetServiceTinyByHandle_Call) Run(run func(clusterHandle string, serviceName string)) *ConsoleClientMock_GetServiceTinyByHandle_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(string), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetServiceTinyByHandle_Call) Return(_a0 *client.GetServiceDeploymentTinyByHandle_ServiceDeployment, _a1 error) *ConsoleClientMock_GetServiceTinyByHandle_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_GetServiceTinyByHandle_Call) RunAndReturn(run func(string, string) (*client.GetServiceDeploymentTinyByHandle_ServiceDeployment, error)) *ConsoleClientMock_GetServiceTinyByHandle_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// GetServices provides a mock function with no fields
func (_m *ConsoleClientMock) GetServices() ([]*client.ServiceDeploymentBaseFragment, error) {
ret := _m.Called()
@@ -8200,6 +8589,63 @@ func (_c *ConsoleClientMock_IsClusterRestoreExisting_Call) RunAndReturn(run func
return _c
}
+// IsDashboardExists provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) IsDashboardExists(ctx context.Context, id string) (bool, error) {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for IsDashboardExists")
+ }
+
+ var r0 bool
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) (bool, error)); ok {
+ return rf(ctx, id)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok {
+ r0 = rf(ctx, id)
+ } else {
+ r0 = ret.Get(0).(bool)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
+ r1 = rf(ctx, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_IsDashboardExists_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsDashboardExists'
+type ConsoleClientMock_IsDashboardExists_Call struct {
+ *mock.Call
+}
+
+// IsDashboardExists is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) IsDashboardExists(ctx interface{}, id interface{}) *ConsoleClientMock_IsDashboardExists_Call {
+ return &ConsoleClientMock_IsDashboardExists_Call{Call: _e.mock.On("IsDashboardExists", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_IsDashboardExists_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_IsDashboardExists_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_IsDashboardExists_Call) Return(_a0 bool, _a1 error) *ConsoleClientMock_IsDashboardExists_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_IsDashboardExists_Call) RunAndReturn(run func(context.Context, string) (bool, error)) *ConsoleClientMock_IsDashboardExists_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// IsFederatedCredentialExists provides a mock function with given fields: ctx, id
func (_m *ConsoleClientMock) IsFederatedCredentialExists(ctx context.Context, id string) (bool, error) {
ret := _m.Called(ctx, id)
@@ -8370,6 +8816,63 @@ func (_c *ConsoleClientMock_IsHelmRepositoryExists_Call) RunAndReturn(run func(c
return _c
}
+// IsMonitorExists provides a mock function with given fields: ctx, id
+func (_m *ConsoleClientMock) IsMonitorExists(ctx context.Context, id string) (bool, error) {
+ ret := _m.Called(ctx, id)
+
+ if len(ret) == 0 {
+ panic("no return value specified for IsMonitorExists")
+ }
+
+ var r0 bool
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string) (bool, error)); ok {
+ return rf(ctx, id)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string) bool); ok {
+ r0 = rf(ctx, id)
+ } else {
+ r0 = ret.Get(0).(bool)
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string) error); ok {
+ r1 = rf(ctx, id)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_IsMonitorExists_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsMonitorExists'
+type ConsoleClientMock_IsMonitorExists_Call struct {
+ *mock.Call
+}
+
+// IsMonitorExists is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+func (_e *ConsoleClientMock_Expecter) IsMonitorExists(ctx interface{}, id interface{}) *ConsoleClientMock_IsMonitorExists_Call {
+ return &ConsoleClientMock_IsMonitorExists_Call{Call: _e.mock.On("IsMonitorExists", ctx, id)}
+}
+
+func (_c *ConsoleClientMock_IsMonitorExists_Call) Run(run func(ctx context.Context, id string)) *ConsoleClientMock_IsMonitorExists_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_IsMonitorExists_Call) Return(_a0 bool, _a1 error) *ConsoleClientMock_IsMonitorExists_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_IsMonitorExists_Call) RunAndReturn(run func(context.Context, string) (bool, error)) *ConsoleClientMock_IsMonitorExists_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// IsObservabilityProviderExists provides a mock function with given fields: ctx, name
func (_m *ConsoleClientMock) IsObservabilityProviderExists(ctx context.Context, name string) (bool, error) {
ret := _m.Called(ctx, name)
@@ -10209,6 +10712,66 @@ func (_c *ConsoleClientMock_UpdateCustomStackRun_Call) RunAndReturn(run func(con
return _c
}
+// UpdateDashboard provides a mock function with given fields: ctx, id, attributes
+func (_m *ConsoleClientMock) UpdateDashboard(ctx context.Context, id string, attributes client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error) {
+ ret := _m.Called(ctx, id, attributes)
+
+ if len(ret) == 0 {
+ panic("no return value specified for UpdateDashboard")
+ }
+
+ var r0 *client.WorkbenchDashboardFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string, client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error)); ok {
+ return rf(ctx, id, attributes)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string, client.DashboardAttributes) *client.WorkbenchDashboardFragment); ok {
+ r0 = rf(ctx, id, attributes)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.WorkbenchDashboardFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string, client.DashboardAttributes) error); ok {
+ r1 = rf(ctx, id, attributes)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_UpdateDashboard_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateDashboard'
+type ConsoleClientMock_UpdateDashboard_Call struct {
+ *mock.Call
+}
+
+// UpdateDashboard is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+// - attributes client.DashboardAttributes
+func (_e *ConsoleClientMock_Expecter) UpdateDashboard(ctx interface{}, id interface{}, attributes interface{}) *ConsoleClientMock_UpdateDashboard_Call {
+ return &ConsoleClientMock_UpdateDashboard_Call{Call: _e.mock.On("UpdateDashboard", ctx, id, attributes)}
+}
+
+func (_c *ConsoleClientMock_UpdateDashboard_Call) Run(run func(ctx context.Context, id string, attributes client.DashboardAttributes)) *ConsoleClientMock_UpdateDashboard_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string), args[2].(client.DashboardAttributes))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_UpdateDashboard_Call) Return(_a0 *client.WorkbenchDashboardFragment, _a1 error) *ConsoleClientMock_UpdateDashboard_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_UpdateDashboard_Call) RunAndReturn(run func(context.Context, string, client.DashboardAttributes) (*client.WorkbenchDashboardFragment, error)) *ConsoleClientMock_UpdateDashboard_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// UpdateDeploymentSettings provides a mock function with given fields: ctx, attr
func (_m *ConsoleClientMock) UpdateDeploymentSettings(ctx context.Context, attr client.DeploymentSettingsAttributes) (*client.UpdateDeploymentSettings, error) {
ret := _m.Called(ctx, attr)
@@ -10447,6 +11010,66 @@ func (_c *ConsoleClientMock_UpdateGroup_Call) RunAndReturn(run func(context.Cont
return _c
}
+// UpdateMonitor provides a mock function with given fields: ctx, id, attributes
+func (_m *ConsoleClientMock) UpdateMonitor(ctx context.Context, id string, attributes client.MonitorAttributes) (*client.MonitorFragment, error) {
+ ret := _m.Called(ctx, id, attributes)
+
+ if len(ret) == 0 {
+ panic("no return value specified for UpdateMonitor")
+ }
+
+ var r0 *client.MonitorFragment
+ var r1 error
+ if rf, ok := ret.Get(0).(func(context.Context, string, client.MonitorAttributes) (*client.MonitorFragment, error)); ok {
+ return rf(ctx, id, attributes)
+ }
+ if rf, ok := ret.Get(0).(func(context.Context, string, client.MonitorAttributes) *client.MonitorFragment); ok {
+ r0 = rf(ctx, id, attributes)
+ } else {
+ if ret.Get(0) != nil {
+ r0 = ret.Get(0).(*client.MonitorFragment)
+ }
+ }
+
+ if rf, ok := ret.Get(1).(func(context.Context, string, client.MonitorAttributes) error); ok {
+ r1 = rf(ctx, id, attributes)
+ } else {
+ r1 = ret.Error(1)
+ }
+
+ return r0, r1
+}
+
+// ConsoleClientMock_UpdateMonitor_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'UpdateMonitor'
+type ConsoleClientMock_UpdateMonitor_Call struct {
+ *mock.Call
+}
+
+// UpdateMonitor is a helper method to define mock.On call
+// - ctx context.Context
+// - id string
+// - attributes client.MonitorAttributes
+func (_e *ConsoleClientMock_Expecter) UpdateMonitor(ctx interface{}, id interface{}, attributes interface{}) *ConsoleClientMock_UpdateMonitor_Call {
+ return &ConsoleClientMock_UpdateMonitor_Call{Call: _e.mock.On("UpdateMonitor", ctx, id, attributes)}
+}
+
+func (_c *ConsoleClientMock_UpdateMonitor_Call) Run(run func(ctx context.Context, id string, attributes client.MonitorAttributes)) *ConsoleClientMock_UpdateMonitor_Call {
+ _c.Call.Run(func(args mock.Arguments) {
+ run(args[0].(context.Context), args[1].(string), args[2].(client.MonitorAttributes))
+ })
+ return _c
+}
+
+func (_c *ConsoleClientMock_UpdateMonitor_Call) Return(_a0 *client.MonitorFragment, _a1 error) *ConsoleClientMock_UpdateMonitor_Call {
+ _c.Call.Return(_a0, _a1)
+ return _c
+}
+
+func (_c *ConsoleClientMock_UpdateMonitor_Call) RunAndReturn(run func(context.Context, string, client.MonitorAttributes) (*client.MonitorFragment, error)) *ConsoleClientMock_UpdateMonitor_Call {
+ _c.Call.Return(run)
+ return _c
+}
+
// UpdateNamespace provides a mock function with given fields: ctx, id, attributes
func (_m *ConsoleClientMock) UpdateNamespace(ctx context.Context, id string, attributes client.ManagedNamespaceAttributes) (*client.ManagedNamespaceFragment, error) {
ret := _m.Called(ctx, id, attributes)
diff --git a/go/controller/internal/types/reconciler.go b/go/controller/internal/types/reconciler.go
index 40bd20e254..091e882f06 100644
--- a/go/controller/internal/types/reconciler.go
+++ b/go/controller/internal/types/reconciler.go
@@ -71,6 +71,8 @@ const (
WorkbenchToolReconciler Reconciler = "workbenchtool"
WorkbenchWebhookReconciler Reconciler = "workbenchwebhook"
SentinelTriggerReconciler Reconciler = "sentineltrigger"
+ MonitorReconciler Reconciler = "monitor"
+ DashboardReconciler Reconciler = "dashboard"
)
// ToController maps a Reconciler to its corresponding Controller.
diff --git a/js/documentation/pages/api-reference/kubernetes/management-api-reference.md b/js/documentation/pages/api-reference/kubernetes/management-api-reference.md
index b2943e89d7..32e40604a7 100644
--- a/js/documentation/pages/api-reference/kubernetes/management-api-reference.md
+++ b/js/documentation/pages/api-reference/kubernetes/management-api-reference.md
@@ -21,6 +21,7 @@ Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 AP
- [ComplianceReportGenerator](#compliancereportgenerator)
- [CustomCompatibilityMatrix](#customcompatibilitymatrix)
- [CustomStackRun](#customstackrun)
+- [Dashboard](#dashboard)
- [DeploymentSettings](#deploymentsettings)
- [FederatedCredential](#federatedcredential)
- [Flow](#flow)
@@ -32,6 +33,7 @@ Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 AP
- [InfrastructureStack](#infrastructurestack)
- [MCPServer](#mcpserver)
- [ManagedNamespace](#managednamespace)
+- [Monitor](#monitor)
- [NamespaceCredentials](#namespacecredentials)
- [NotificationRouter](#notificationrouter)
- [NotificationSink](#notificationsink)
@@ -1455,6 +1457,131 @@ _Appears in:_
| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource.
Controls drift detection and reconciliation intervals. | | Optional: \{\}
|
+#### Dashboard
+
+
+
+Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs
+arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.
+
+
+
+
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `apiVersion` _string_ | `deployments.plural.sh/v1alpha1` | | |
+| `kind` _string_ | `Dashboard` | | |
+| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
+| `spec` _[DashboardSpec](#dashboardspec)_ | Spec defines the desired state of the Dashboard. | | Required: \{\}
|
+
+
+#### DashboardDatasource
+
+
+
+DashboardDatasource defines an observability tool call used to fetch dashboard data.
+
+
+
+_Appears in:_
+- [DashboardGraph](#dashboardgraph)
+- [DashboardInput](#dashboardinput)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `type` _[DashboardDatasourceType](#dashboarddatasourcetype)_ | Type is the kind of data returned by the datasource. | | Enum: [LOGS METRICS TRACES LABELS]
Required: \{\}
|
+| `tool` _string_ | Tool is the name of the observability tool used to fetch the data. | | MinLength: 1
Required: \{\}
Type: string
|
+| `input` _[RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#rawextension-runtime-pkg)_ | Input is passed to the observability tool. | | Required: \{\}
|
+
+
+#### DashboardGraph
+
+
+
+DashboardGraph is a single graph placed on the dashboard grid.
+
+
+
+_Appears in:_
+- [DashboardSpec](#dashboardspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `identifier` _string_ | Identifier is a stable identifier unique within the dashboard. | | MaxLength: 128
MinLength: 1
Required: \{\}
Type: string
|
+| `title` _string_ | Title is the graph title. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional graph description. | | Optional: \{\}
Type: string
|
+| `type` _[DashboardGraphType](#dashboardgraphtype)_ | Type is the graph visualization type. | | Enum: [TIMESERIES GAUGE LOGS MARKDOWN TABLE STAT BAR PIE HEATMAP TRACES SECTION]
MaxLength: 16
Required: \{\}
Type: string
|
+| `sectionId` _string_ | SectionID is the identifier of the SECTION graph containing this graph. Sections cannot be nested. | | MaxLength: 128
Optional: \{\}
Type: string
|
+| `markdown` _string_ | Markdown is the content for MARKDOWN graphs. | | Optional: \{\}
Type: string
|
+| `options` _[RawExtension](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#rawextension-runtime-pkg)_ | Options are visualization-specific display options. Sections may set collapsed. | | Optional: \{\}
|
+| `layout` _[DashboardGraphLayout](#dashboardgraphlayout)_ | Layout is the grid position and size of the graph. | | Required: \{\}
|
+| `datasource` _[DashboardDatasource](#dashboarddatasource)_ | Datasource is the tool call used to fetch external data. | | Optional: \{\}
|
+
+
+#### DashboardGraphLayout
+
+
+
+DashboardGraphLayout defines the grid position and size of a graph.
+
+
+
+_Appears in:_
+- [DashboardGraph](#dashboardgraph)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `x` _integer_ | X is the zero-based horizontal grid coordinate. | | Minimum: 0
Required: \{\}
|
+| `y` _integer_ | Y is the zero-based vertical grid coordinate. | | Minimum: 0
Required: \{\}
|
+| `w` _integer_ | W is the width in grid columns. | | Minimum: 1
Required: \{\}
|
+| `h` _integer_ | H is the height in grid rows. | | Minimum: 1
Required: \{\}
|
+
+
+#### DashboardInput
+
+
+
+DashboardInput is a user-configurable dashboard variable.
+
+
+
+_Appears in:_
+- [DashboardSpec](#dashboardspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `name` _string_ | Name is the variable name referenced by graph datasource inputs. | | MinLength: 1
Required: \{\}
Type: string
|
+| `label` _string_ | Label is a human-readable input label. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional input description. | | Optional: \{\}
Type: string
|
+| `type` _[DashboardInputType](#dashboardinputtype)_ | Type is the input control type. | | Enum: [TEXT NUMBER BOOLEAN SELECT MULTI_SELECT TIME_RANGE]
Required: \{\}
|
+| `default` _string_ | Default is the default input value. | | Optional: \{\}
Type: string
|
+| `options` _string array_ | Options are the allowed values for select inputs. | | Optional: \{\}
|
+| `required` _boolean_ | Required defines whether a value is required when rendering. | | Optional: \{\}
|
+| `datasource` _[DashboardDatasource](#dashboarddatasource)_ | Datasource is the tool query used to populate input options, such as metric label search. | | Optional: \{\}
|
+
+
+#### DashboardSpec
+
+
+
+DashboardSpec defines the desired state of a Dashboard.
+
+
+
+_Appears in:_
+- [Dashboard](#dashboard)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `workbenchRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | WorkbenchRef references the Workbench that owns this dashboard.
The Workbench must be in the same namespace as the dashboard.
It is immutable, a dashboard cannot be moved to a different workbench. | | Required: \{\}
|
+| `name` _string_ | Name is the dashboard name, unique within its workbench.
If not set, metadata.name is used. | | Optional: \{\}
Type: string
|
+| `description` _string_ | Description is an optional dashboard description. | | Optional: \{\}
Type: string
|
+| `graphs` _[DashboardGraph](#dashboardgraph) array_ | Graphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
Note that overlapping graph layouts are only validated by the Console API. | | MaxItems: 200
Optional: \{\}
|
+| `inputs` _[DashboardInput](#dashboardinput) array_ | Inputs are user-configurable dashboard variables. | | Optional: \{\}
|
+| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource. | | Optional: \{\}
|
+
+
#### DeploymentSettings
@@ -2545,6 +2672,219 @@ _Appears in:_
| `crontab` _string_ | Crontab is the cron expression for how often to export metrics.
Example: "*/5 * * * *" for every 5 minutes. | | Optional: \{\}
|
+#### Monitor
+
+
+
+Monitor represents an observability monitor attached to a service deployment. It periodically
+evaluates a log or metrics query against a threshold and fires alerts when it is crossed.
+Optionally, it can be attached to a workbench to start an investigation when it fires.
+
+
+
+
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `apiVersion` _string_ | `deployments.plural.sh/v1alpha1` | | |
+| `kind` _string_ | `Monitor` | | |
+| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`. | | |
+| `spec` _[MonitorSpec](#monitorspec)_ | Spec defines the desired state of the Monitor. | | Required: \{\}
|
+
+
+#### MonitorFacet
+
+
+
+MonitorFacet is a key/value facet used to further filter log queries.
+
+
+
+_Appears in:_
+- [MonitorLogQuery](#monitorlogquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `key` _string_ | Key is the facet key (e.g. kubernetes namespace or pod label name). | | Required: \{\}
Type: string
|
+| `value` _string_ | Value is the facet value to match for the given key. | | Required: \{\}
Type: string
|
+
+
+#### MonitorLogAzureOptions
+
+
+
+MonitorLogAzureOptions are Azure-specific log query options.
+
+
+
+_Appears in:_
+- [MonitorLogOptions](#monitorlogoptions)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `resourceId` _string_ | ResourceID is the Azure resource ID to query logs for. | | Optional: \{\}
Type: string
|
+
+
+#### MonitorLogOptions
+
+
+
+MonitorLogOptions are provider-specific log query options.
+
+
+
+_Appears in:_
+- [MonitorLogQuery](#monitorlogquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `azure` _[MonitorLogAzureOptions](#monitorlogazureoptions)_ | Azure log query options. | | Optional: \{\}
|
+
+
+#### MonitorLogQuery
+
+
+
+MonitorLogQuery is the log query configuration for a monitor.
+
+
+
+_Appears in:_
+- [MonitorQuery](#monitorquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `tool` _string_ | Tool is the named workbench logs tool. When omitted, the native Plural logs provider is used. | | Optional: \{\}
Type: string
|
+| `query` _string_ | Query is the log query string passed through to the underlying log provider. | | MinLength: 1
Required: \{\}
Type: string
|
+| `bucketSize` _string_ | BucketSize is the time bucket size (e.g. 5m) used when aggregating log results. | | Pattern: `^[0-9]+[dmhs]$`
Required: \{\}
Type: string
|
+| `duration` _string_ | Duration is the lookback duration for the log query (e.g. 1h, 10m, 30s). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `operator` _[MonitorOperator](#monitoroperator)_ | Operator to use when combining multiple log queries.
Defaults to OR, which is also the Console API default. | OR | Enum: [OR AND]
Optional: \{\}
|
+| `facets` _[MonitorFacet](#monitorfacet) array_ | Facets are optional key/value facets applied as additional filters on the log query. | | Optional: \{\}
|
+| `options` _[MonitorLogOptions](#monitorlogoptions)_ | Options are provider-specific log query options. | | Optional: \{\}
|
+
+
+#### MonitorMetricsAzureOptions
+
+
+
+MonitorMetricsAzureOptions are Azure-specific metrics query options.
+
+
+
+_Appears in:_
+- [MonitorMetricsOptions](#monitormetricsoptions)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `resourceId` _string_ | ResourceID is the Azure resource ID to query metrics for. | | Optional: \{\}
Type: string
|
+| `metricsNamespace` _string_ | MetricsNamespace is the Azure metrics namespace. | | Optional: \{\}
Type: string
|
+| `aggregation` _string_ | Aggregation is the Azure metrics aggregation type. | | Optional: \{\}
Type: string
|
+| `filter` _string_ | Filter is the Azure metrics filter expression. | | Optional: \{\}
Type: string
|
+| `orderBy` _string_ | OrderBy is the Azure metrics ordering expression. | | Optional: \{\}
Type: string
|
+| `rollUpBy` _string_ | RollUpBy is the Azure metrics dimension to roll up by. | | Optional: \{\}
Type: string
|
+| `metricsEndpoint` _string_ | MetricsEndpoint is the Azure metrics endpoint override. | | Optional: \{\}
Type: string
|
+
+
+#### MonitorMetricsOptions
+
+
+
+MonitorMetricsOptions are provider-specific metrics query options.
+
+
+
+_Appears in:_
+- [MonitorMetricsQuery](#monitormetricsquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `azure` _[MonitorMetricsAzureOptions](#monitormetricsazureoptions)_ | Azure metrics query options. | | Optional: \{\}
|
+
+
+#### MonitorMetricsQuery
+
+
+
+MonitorMetricsQuery is the metrics query configuration for a monitor.
+
+
+
+_Appears in:_
+- [MonitorQuery](#monitorquery)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `tool` _string_ | Tool is the named workbench metrics tool. When omitted, the native Plural metrics provider is used. | | Optional: \{\}
Type: string
|
+| `query` _string_ | Query is the metrics query string passed through to the underlying metrics provider. | | MinLength: 1
Required: \{\}
Type: string
|
+| `step` _string_ | Step is the metrics query step (e.g. 5m). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `duration` _string_ | Duration is the lookback duration for the metrics query (e.g. 1h). | | Optional: \{\}
Pattern: `^[0-9]+[dmhs]$`
Type: string
|
+| `options` _[MonitorMetricsOptions](#monitormetricsoptions)_ | Options are provider-specific metrics query options. | | Optional: \{\}
|
+
+
+#### MonitorQuery
+
+
+
+MonitorQuery is a wrapper for the underlying query definition for a monitor.
+Exactly one of log or metrics should be set, matching the monitor type.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `log` _[MonitorLogQuery](#monitorlogquery)_ | Log query used when the monitor type is LOG. | | Optional: \{\}
|
+| `metrics` _[MonitorMetricsQuery](#monitormetricsquery)_ | Metrics query used when the monitor type is METRICS. | | Optional: \{\}
|
+
+
+#### MonitorSpec
+
+
+
+MonitorSpec defines the desired state of a Monitor.
+
+
+
+_Appears in:_
+- [Monitor](#monitor)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `name` _string_ | Name is the short name used to identify this monitor in the Console API.
If not set, metadata.name is used. | | Optional: \{\}
Type: string
|
+| `serviceRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | ServiceRef references the ServiceDeployment resource this monitor is attached to.
The ServiceDeployment must be in the same namespace as the monitor.
Either ServiceRef or Service must be set. | | Optional: \{\}
|
+| `service` _string_ | Service references an existing service in the Console API this monitor is attached to,
in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
a monitor to a service that is not managed by a ServiceDeployment resource.
Either ServiceRef or Service must be set. | | Optional: \{\}
Pattern: `^[^/]+/[^/]+$`
Type: string
|
+| `workbenchRef` _[LocalObjectReference](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#localobjectreference-v1-core)_ | WorkbenchRef references the Workbench this monitor is attached to.
When set, the monitor can start a workbench investigation when it fires.
It is required if the query uses a named workbench tool.
The Workbench must be in the same namespace as the monitor. | | Optional: \{\}
|
+| `prompt` _string_ | Prompt is used when the monitor starts a workbench investigation. | | MaxLength: 2048
Optional: \{\}
Type: string
|
+| `modes` _[WorkbenchJobModes](#workbenchjobmodes)_ | Modes defines mode-specific options for monitor-triggered workbench jobs. | | Optional: \{\}
|
+| `description` _string_ | Description is an optional free-form description of what this monitor is checking. | | Optional: \{\}
Type: string
|
+| `alertTemplate` _string_ | AlertTemplate is an optional template used when rendering alert messages for this monitor. | | Optional: \{\}
Type: string
|
+| `severity` _[AlertSeverity](#alertseverity)_ | Severity is the severity level applied to alerts generated by this monitor. | | Enum: [LOW MEDIUM HIGH CRITICAL UNDEFINED]
Required: \{\}
|
+| `type` _[MonitorType](#monitortype)_ | Type is the monitor data type. | | Enum: [LOG METRICS]
Required: \{\}
|
+| `evaluationCron` _string_ | EvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
@secondly or @reboot shortcuts. Field values are validated by the Console API. | | MinLength: 1
Pattern: `^(@(?i:yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\|minutely\|secondly\|reboot)\|[^ ]+( [^ ]+)\{4,5\})$`
Required: \{\}
Type: string
|
+| `query` _[MonitorQuery](#monitorquery)_ | Query is the underlying query configuration used to fetch data for this monitor. | | Required: \{\}
|
+| `threshold` _[MonitorThreshold](#monitorthreshold)_ | Threshold is the configuration that determines when the monitor should fire. | | Required: \{\}
|
+| `reconciliation` _[Reconciliation](#reconciliation)_ | Reconciliation settings for this resource. | | Optional: \{\}
|
+
+
+#### MonitorThreshold
+
+
+
+MonitorThreshold is the threshold configuration used to decide when a monitor should fire.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `aggregate` _[MonitorAggregate](#monitoraggregate)_ | Aggregate is the aggregation function applied over the result set. | | Enum: [MAX MIN AVG]
Required: \{\}
|
+| `value` _string_ | Value is the numeric value the aggregated metric must cross to trigger the alert.
It is a string to allow decimal values (e.g. "0.95"). | | Pattern: `^-?[0-9]+(\.[0-9]+)?$`
Required: \{\}
Type: string
|
+
+
#### NamespaceCredentials
@@ -4421,6 +4761,7 @@ _Appears in:_
- [ComplianceReportGeneratorSpec](#compliancereportgeneratorspec)
- [CustomCompatibilityMatrixSpec](#customcompatibilitymatrixspec)
- [CustomStackRunSpec](#customstackrunspec)
+- [DashboardSpec](#dashboardspec)
- [DeploymentSettingsSpec](#deploymentsettingsspec)
- [FederatedCredentialSpec](#federatedcredentialspec)
- [FlowSpec](#flowspec)
@@ -4432,6 +4773,7 @@ _Appears in:_
- [InfrastructureStackSpec](#infrastructurestackspec)
- [MCPServerSpec](#mcpserverspec)
- [ManagedNamespaceSpec](#managednamespacespec)
+- [MonitorSpec](#monitorspec)
- [NamespaceCredentialsSpec](#namespacecredentialsspec)
- [NotificationRouterSpec](#notificationrouterspec)
- [NotificationSinkSpec](#notificationsinkspec)
@@ -5859,6 +6201,100 @@ _Appears in:_
| `kubernetes` _boolean_ | Kubernetes enables the Kubernetes capability. | | Optional: \{\}
|
+#### WorkbenchJobBudget
+
+
+
+WorkbenchJobBudget defines budget limits for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `cost` _string_ | Cost is the maximum cost budget for the job.
It is a string to allow decimal values (e.g. "12.5"). | | Optional: \{\}
Pattern: `^[0-9]+(\.[0-9]+)?$`
Type: string
|
+| `tokens` _integer_ | Tokens is the maximum token budget for the job. | | Minimum: 0
Optional: \{\}
|
+
+
+#### WorkbenchJobCodingModes
+
+
+
+WorkbenchJobCodingModes defines coding mode options for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `babysit` _boolean_ | Babysit enables babysit mode for coding agent runs. | | Optional: \{\}
|
+| `approval` _boolean_ | Approval requires approval before coding agent runs continue. | | Optional: \{\}
|
+| `review` _boolean_ | Review enables pull request review mode for coding agent runs. | | Optional: \{\}
|
+
+
+#### WorkbenchJobKubernetesModes
+
+
+
+WorkbenchJobKubernetesModes defines kubernetes action options for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `update` _boolean_ | Update enables kubernetes update actions. | | Optional: \{\}
|
+| `delete` _boolean_ | Delete enables kubernetes delete actions. | | Optional: \{\}
|
+| `exec` _boolean_ | Exec enables kubernetes exec actions. | | Optional: \{\}
|
+| `drain` _boolean_ | Drain enables kubernetes node drain actions. | | Optional: \{\}
|
+| `excludeNamespaces` _string array_ | ExcludeNamespaces are namespaces the agent can never act in. | | Optional: \{\}
|
+| `requireNamespaces` _string array_ | RequireNamespaces, if set, are the only namespaces the agent is allowed to act in. | | Optional: \{\}
|
+
+
+#### WorkbenchJobModel
+
+
+
+WorkbenchJobModel defines the AI model override for a workbench job.
+
+
+
+_Appears in:_
+- [WorkbenchJobModes](#workbenchjobmodes)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `provider` _[AiProvider](#aiprovider)_ | Provider is the AI provider for the job. | | Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX OPENAI_COMPATIBLE XAI]
Required: \{\}
|
+| `model` _string_ | Model is the model name for the job. | | MinLength: 1
Required: \{\}
Type: string
|
+
+
+#### WorkbenchJobModes
+
+
+
+WorkbenchJobModes defines mode-specific options for workbench jobs.
+
+
+
+_Appears in:_
+- [MonitorSpec](#monitorspec)
+
+| Field | Description | Default | Validation |
+| --- | --- | --- | --- |
+| `plan` _boolean_ | Plan enables planning mode for the job. | | Optional: \{\}
|
+| `verification` _boolean_ | Verification enables verification mode for the job. | | Optional: \{\}
|
+| `model` _[WorkbenchJobModel](#workbenchjobmodel)_ | Model overrides the AI model used for the job. | | Optional: \{\}
|
+| `coding` _[WorkbenchJobCodingModes](#workbenchjobcodingmodes)_ | Coding defines coding mode options for the job. | | Optional: \{\}
|
+| `budget` _[WorkbenchJobBudget](#workbenchjobbudget)_ | Budget defines budget limits for the job. | | Optional: \{\}
|
+| `kubernetes` _[WorkbenchJobKubernetesModes](#workbenchjobkubernetesmodes)_ | Kubernetes defines kubernetes action options for the job. | | Optional: \{\}
|
+
+
#### WorkbenchObservabilityConfig