Dagger
Search

goose

Goose — AI-powered GCP deployment, troubleshooting, and operations agent.

Installation

dagger install github.com/telchak/daggerverse/goose@v0.1.0

Entrypoint

Return Type
Goose !
Arguments
NameTypeDefault ValueDescription
gcloudContainer nullAuthenticated gcloud container (pre-built)
oidcTokenSecret nullOIDC JWT token from any CI provider
workloadIdentityProviderString !""GCP Workload Identity Federation provider resource name
serviceAccountEmailString !""Service account email to impersonate (optional)
credentialsSecret nullService account JSON key
googleCloudDirDirectory nullHost gcloud config directory for local dev (e.g. ~/.config/gcloud)
projectIdString !""GCP project ID (auto-discovered from gcloud if omitted)
regionString !""GCP region (auto-discovered from gcloud, defaults to us-central1)
sourceDirectory nullSource directory for workspace operations
selfImproveString !"off"Self-improvement mode: 'off' (default), 'write' (update context file), 'commit' (update + git commit)
developerKnowledgeApiKeySecret nullGoogle Developer Knowledge API key (optional, enables searching GCP documentation)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Goose  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Goose:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Goose {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
}

Types

Goose 🔗

AI-powered GCP deployment, troubleshooting, and operations agent. Supports Cloud Run, Firebase Hosting, Vertex AI, Artifact Registry, and health checks. Provides workspace tools for reading, editing, and searching deployment configs. Authentication (pick one): - Pre-built gcloud container (--gcloud) - OIDC token + WIF provider (--oidc-token + --workload-identity-provider) - Service account JSON key (--credentials) - Host gcloud config for local dev (--google-cloud-dir ~/.config/gcloud)

gcloud() 🔗

Authenticated gcloud container (pre-built)

Return Type
Container 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string gcloud
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Container  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Gcloud()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Container:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.gcloud()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Container {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.gcloud()
}

oidcToken() 🔗

OIDC JWT token from any CI provider

Return Type
Secret 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string oidc-token
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Secret  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			OidcToken()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Secret:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.oidc_token()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Secret {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.oidcToken()
}

workloadIdentityProvider() 🔗

GCP Workload Identity Federation provider resource name

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string workload-identity-provider
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			WorkloadIdentityProvider(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.workload_identity_provider()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.workloadIdentityProvider()
}

serviceAccountEmail() 🔗

Service account email to impersonate (optional)

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string service-account-email
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ServiceAccountEmail(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.service_account_email()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.serviceAccountEmail()
}

credentials() 🔗

Service account JSON key

Return Type
Secret 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string credentials
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Secret  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Credentials()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Secret:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.credentials()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Secret {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.credentials()
}

googleCloudDir() 🔗

Host gcloud config directory for local dev (e.g. ~/.config/gcloud)

Return Type
Directory 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string google-cloud-dir
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Directory  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GoogleCloudDir()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Directory:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.google_cloud_dir()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Directory {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.googleCloudDir()
}

projectId() 🔗

GCP project ID (auto-discovered from gcloud if omitted)

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string project-id
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ProjectId(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.project_id()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.projectId()
}

region() 🔗

GCP region (auto-discovered from gcloud, defaults to us-central1)

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string region
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Region(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.region()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.region()
}

source() 🔗

Source directory for workspace operations

Return Type
Directory 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string source
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Directory  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Source()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Directory:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.source()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Directory {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.source()
}

selfImprove() 🔗

Self-improvement mode: ‘off’ (default), ‘write’ (update context file), ‘commit’ (update + git commit)

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string self-improve
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			SelfImprove(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.self_improve()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.selfImprove()
}

developerKnowledgeApiKey() 🔗

Google Developer Knowledge API key (optional, enables searching GCP documentation)

Return Type
Secret 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string developer-knowledge-api-key
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Secret  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeveloperKnowledgeApiKey()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Secret:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.developer_knowledge_api_key()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Secret {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.developerKnowledgeApiKey()
}

githubToken() 🔗

Return Type
Secret 
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string github-token
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) *dagger.Secret  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GithubToken()
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> dagger.Secret:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.github_token()
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Secret {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.githubToken()
}

prRepo() 🔗

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string pr-repo
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			PrRepo(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.pr_repo()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.prRepo()
}

prNumber() 🔗

Return Type
Integer !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string pr-number
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) int  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			PrNumber(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> int:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.pr_number()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<number> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.prNumber()
}

prCommitSha() 🔗

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string pr-commit-sha
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			PrCommitSha(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.pr_commit_sha()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.prCommitSha()
}

assist() 🔗

General GCP operations assistant.

Inspects infrastructure, plans deployments, answers questions about GCP services, and reviews configurations. Uses workspace tools to read deployment configs (Dockerfiles, firebase.json, cloudbuild.yaml).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
assignmentString !-What you want the agent to do (e.g. 'Inspect Cloud Run services and report their status')
sourceDirectory nullSource directory for context (Dockerfiles, configs, DAGGER.md)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string assist --assignment string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, assignment string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Assist(ctx, assignment)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, assignment: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.assist(assignment)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, assignment: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.assist(assignment)
}

batchGetGcpDocs() 🔗

Retrieve multiple Google developer documentation pages at once.

Use the ‘parent’ fields from search_gcp_docs results as document names. Returns all pages as Markdown.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
documentNames[String ! ] !-List of document resource names (the 'parent' fields from search results)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string batch-get-gcp-docs --document-names string1 --document-names string2
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, documentNames []string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			BatchGetGcpDocs(ctx, documentNames)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, document_names: List[str]) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.batch_get_gcp_docs(document_names)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, documentNames: string[]): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.batchGetGcpDocs(documentNames)
}

checkHttpHealth() 🔗

Run an HTTP health check against a container. Returns the container if healthy.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
containerContainer !-Container to health check
portInteger !8080Port number
pathString !"/health"HTTP path
timeoutInteger !60Timeout in seconds
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string check-http-health --container IMAGE:TAG --port integer --path string --timeout integer
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, container *dagger.Container, port int, path string, timeout int) *dagger.Container  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			CheckHttpHealth(container, port, path, timeout)
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, container: dagger.Container, port: int, path: str, timeout: int) -> dagger.Container:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.check_http_health(container, port, path, timeout)
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, container: Container, port: number, path: string, timeout: number): Container {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.checkHttpHealth(container, port, path, timeout)
}

checkIamPolicy() 🔗

Check the IAM policy bindings on a Cloud Run service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string check-iam-policy --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			CheckIamPolicy(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.check_iam_policy(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.checkIamPolicy(serviceName)
}

checkTcpHealth() 🔗

Run a TCP health check against a container. Returns the container if port is open.

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
containerContainer !-Container to health check
portInteger !8080Port number
timeoutInteger !60Timeout in seconds
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string check-tcp-health --container IMAGE:TAG --port integer --timeout integer
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, container *dagger.Container, port int, timeout int) *dagger.Container  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			CheckTcpHealth(container, port, timeout)
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, container: dagger.Container, port: int, timeout: int) -> dagger.Container:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.check_tcp_health(container, port, timeout)
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, container: Container, port: number, timeout: number): Container {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.checkTcpHealth(container, port, timeout)
}

deleteFirebaseChannel() 🔗

Delete a Firebase Hosting preview channel.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
channelIdString !-Preview channel ID to delete
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string delete-firebase-channel --channel-id string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, channelId string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeleteFirebaseChannel(ctx, channelId)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, channel_id: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.delete_firebase_channel(channel_id)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, channelId: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deleteFirebaseChannel(channelId)
}

deleteService() 🔗

Delete a Cloud Run service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name to delete
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string delete-service --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeleteService(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.delete_service(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deleteService(serviceName)
}

deploy() 🔗

Deploy a service using an AI agent.

Supports Cloud Run, Firebase Hosting, and Vertex AI deployments. The agent interprets the assignment and uses the appropriate tools. If the source directory contains a DAGGER.md file, it will be used as additional context for the agent.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
assignmentString !-Deployment instructions (e.g. 'Deploy image X as service Y, allow unauthenticated')
sourceDirectory nullSource directory to build (optional, for DAGGER.md context)
serviceNameString !""Target service name (optional, LLM reads from DAGGER.md or assignment)
repositoryString !""Artifact Registry repository for built images
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string deploy --assignment string --service-name string --repository string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, assignment string, serviceName string, repository string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Deploy(ctx, assignment, serviceName, repository)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, assignment: str, service_name: str, repository: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.deploy(assignment, service_name, repository)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, assignment: string, serviceName: string, repository: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deploy(assignment, serviceName, repository)
}

deployFirebaseHosting() 🔗

Deploy a web application to Firebase Hosting.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-Source directory with firebase.json
buildCommandString !"npm run build"Build command (empty string to skip build for pre-built sources)
nodeVersionString !"20"Node.js version
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string deploy-firebase-hosting --source DIR_PATH --build-command string --node-version string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, source *dagger.Directory, buildCommand string, nodeVersion string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeployFirebaseHosting(ctx, source, buildCommand, nodeVersion)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, source: dagger.Directory, build_command: str, node_version: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.deploy_firebase_hosting(source, build_command, node_version)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, source: Directory, buildCommand: string, nodeVersion: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deployFirebaseHosting(source, buildCommand, nodeVersion)
}

deployFirebasePreview() 🔗

Deploy to a Firebase Hosting preview channel. Returns the preview URL.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-Source directory with firebase.json
channelIdString !-Preview channel ID (e.g. pr-123)
buildCommandString !"npm run build"Build command (empty string to skip build for pre-built sources)
nodeVersionString !"20"Node.js version
expiresString !"7d"Channel expiration (e.g. '7d')
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string deploy-firebase-preview --source DIR_PATH --channel-id string --build-command string --node-version string --expires string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, source *dagger.Directory, channelId string, buildCommand string, nodeVersion string, expires string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeployFirebasePreview(ctx, source, channelId, buildCommand, nodeVersion, expires)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, source: dagger.Directory, channel_id: str, build_command: str, node_version: str, expires: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.deploy_firebase_preview(source, channel_id, build_command, node_version, expires)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, source: Directory, channelId: string, buildCommand: string, nodeVersion: string, expires: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deployFirebasePreview(source, channelId, buildCommand, nodeVersion, expires)
}

deployService() 🔗

Deploy a container image to Cloud Run as a service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
imageString !-Container image URI to deploy
serviceNameString !-Cloud Run service name
allowUnauthenticatedBoolean !falseAllow public access
portInteger !8080Container port
cpuString !"1"CPU allocation (e.g. '1', '2')
memoryString !"512Mi"Memory allocation (e.g. '512Mi', '1Gi')
minInstancesInteger !0Minimum instances (0 for scale-to-zero)
maxInstancesInteger !10Maximum instances
envVars[String ! ] ![]Environment variables as KEY=VALUE
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string deploy-service --image string --service-name string --allow-unauthenticated boolean --port integer --cpu string --memory string --min-instances integer --max-instances integer --env-vars string1 --env-vars string2
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, image string, serviceName string, allowUnauthenticated bool, port int, cpu string, memory string, minInstances int, maxInstances int, envVars []string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeployService(ctx, image, serviceName, allowUnauthenticated, port, cpu, memory, minInstances, maxInstances, envVars)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, image: str, service_name: str, allow_unauthenticated: bool, port: int, cpu: str, memory: str, min_instances: int, max_instances: int, env_vars: List[str]) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.deploy_service(image, service_name, allow_unauthenticated, port, cpu, memory, min_instances, max_instances, env_vars)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, image: string, serviceName: string, allowUnauthenticated: boolean, port: number, cpu: string, memory: string, minInstances: number, maxInstances: number, envVars: string[]): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deployService(image, serviceName, allowUnauthenticated, port, cpu, memory, minInstances, maxInstances, envVars)
}

deployVertexModel() 🔗

Deploy a containerized ML model to Vertex AI.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
imageUriString !-Container image URI for the model
modelNameString !-Model display name
endpointNameString !-Endpoint display name
machineTypeString !"n1-standard-4"VM machine type
acceleratorTypeString !"NVIDIA_TESLA_T4"GPU type
acceleratorCountInteger !1Number of GPUs
minReplicasInteger !1Minimum replicas
maxReplicasInteger !3Maximum replicas
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string deploy-vertex-model --image-uri string --model-name string --endpoint-name string --machine-type string --accelerator-type string --accelerator-count integer --min-replicas integer --max-replicas integer
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, imageUri string, modelName string, endpointName string, machineType string, acceleratorType string, acceleratorCount int, minReplicas int, maxReplicas int) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DeployVertexModel(ctx, imageUri, modelName, endpointName, machineType, acceleratorType, acceleratorCount, minReplicas, maxReplicas)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, image_uri: str, model_name: str, endpoint_name: str, machine_type: str, accelerator_type: str, accelerator_count: int, min_replicas: int, max_replicas: int) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.deploy_vertex_model(image_uri, model_name, endpoint_name, machine_type, accelerator_type, accelerator_count, min_replicas, max_replicas)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, imageUri: string, modelName: string, endpointName: string, machineType: string, acceleratorType: string, acceleratorCount: number, minReplicas: number, maxReplicas: number): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.deployVertexModel(imageUri, modelName, endpointName, machineType, acceleratorType, acceleratorCount, minReplicas, maxReplicas)
}

describeService() 🔗

Get the full configuration of a Cloud Run service as JSON.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string describe-service --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DescribeService(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.describe_service(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.describeService(serviceName)
}

developGithubIssue() 🔗

Read a GitHub issue, route it to the best function, and create a Pull Request.

A router LLM reads the issue and selects the optimal function — assist, deploy, troubleshoot, or upgrade — then calls it with extracted parameters. Comments on the issue with a summary and a link to the PR. Returns the PR URL.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
githubTokenSecret !-GitHub token with repo and pull-request permissions
issueIdInteger !-GitHub issue number
repositoryString !-GitHub repository URL (e.g. 'https://github.com/owner/repo')
sourceDirectory nullOverride source directory (uses constructor source if omitted)
baseString !"main"Base branch for the pull request
suggestGithubFixOnFailureBoolean !falsePost a diagnostic comment on the issue if the agent fails
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string develop-github-issue --github-token env:MYSECRET --issue-id integer --repository string --base string --suggest-github-fix-on-failure boolean
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, githubToken *dagger.Secret, issueId int, repository string, base string, suggestGithubFixOnFailure bool) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			DevelopGithubIssue(ctx, githubToken, issueId, repository, base, suggestGithubFixOnFailure)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, github_token: dagger.Secret, issue_id: int, repository: str, base: str, suggest_github_fix_on_failure: bool) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.develop_github_issue(github_token, issue_id, repository, base, suggest_github_fix_on_failure)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, githubToken: Secret, issueId: number, repository: string, base: string, suggestGithubFixOnFailure: boolean): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.developGithubIssue(githubToken, issueId, repository, base, suggestGithubFixOnFailure)
}

editFile() 🔗

Edit a file by replacing a string. The old_string must match exactly.

Returns a changeset showing the diff.

Return Type
Changeset !
Arguments
NameTypeDefault ValueDescription
filePathString !-Path to the file relative to the workspace root
oldStringString !-The exact string to find and replace
newStringString !-The replacement string
replaceAllBoolean !falseReplace all occurrences (default: first only)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string edit-file --file-path string --old-string string --new-string string --replace-all boolean
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, filePath string, oldString string, newString string, replaceAll bool) *dagger.Changeset  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			EditFile(filePath, oldString, newString, replaceAll)
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, file_path: str, old_string: str, new_string: str, replace_all: bool) -> dagger.Changeset:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.edit_file(file_path, old_string, new_string, replace_all)
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, filePath: string, oldString: string, newString: string, replaceAll: boolean): Changeset {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.editFile(filePath, oldString, newString, replaceAll)
}

getGcpDoc() 🔗

Retrieve the full content of a Google developer documentation page.

Use the ‘parent’ field from search_gcp_docs results as the document_name. Returns the full page as Markdown.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
documentNameString !-Document resource name from search results (the 'parent' field)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string get-gcp-doc --document-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, documentName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GetGcpDoc(ctx, documentName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, document_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.get_gcp_doc(document_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, documentName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.getGcpDoc(documentName)
}

getRevisions() 🔗

Get the revision history for a Cloud Run service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string get-revisions --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GetRevisions(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.get_revisions(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.getRevisions(serviceName)
}

getServiceLogs() 🔗

Get logs from a Cloud Run service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name
limitInteger !50Maximum number of log entries
logFilterString !""Log filter (e.g. 'severity>=ERROR')
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string get-service-logs --service-name string --limit integer --log-filter string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string, limit int, logFilter string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GetServiceLogs(ctx, serviceName, limit, logFilter)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str, limit: int, log_filter: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.get_service_logs(service_name, limit, log_filter)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string, limit: number, logFilter: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.getServiceLogs(serviceName, limit, logFilter)
}

getServiceUrl() 🔗

Get the URL of a deployed Cloud Run service.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string get-service-url --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			GetServiceUrl(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.get_service_url(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.getServiceUrl(serviceName)
}

glob() 🔗

Find files in the workspace matching a glob pattern.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
patternString !-Glob pattern (e.g. '**/*.py', '**/*.yaml')
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string glob --pattern string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, pattern string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Glob(ctx, pattern)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, pattern: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.glob(pattern)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, pattern: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.glob(pattern)
}

grep() 🔗

Search file contents in the workspace using grep.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
patternString !-Search pattern (regex supported)
pathsString !""Comma-separated paths to search in (optional)
fileGlobString !""Glob pattern to filter files (e.g. '*.py')
insensitiveBoolean !falseCase-insensitive search
limitInteger !100Maximum number of matching lines to return
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string grep --pattern string --paths string --file-glob string --insensitive boolean --limit integer
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, pattern string, paths string, fileGlob string, insensitive bool, limit int) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Grep(ctx, pattern, paths, fileGlob, insensitive, limit)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, pattern: str, paths: str, file_glob: str, insensitive: bool, limit: int) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.grep(pattern, paths, file_glob, insensitive, limit)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, pattern: string, paths: string, fileGlob: string, insensitive: boolean, limit: number): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.grep(pattern, paths, fileGlob, insensitive, limit)
}

listImages() 🔗

List images in an Artifact Registry repository.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
repositoryString !-Artifact Registry repository name
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string list-images --repository string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, repository string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ListImages(ctx, repository)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, repository: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.list_images(repository)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, repository: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.listImages(repository)
}

listServices() 🔗

List all Cloud Run services in the project and region.

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string list-services
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ListServices(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.list_services()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.listServices()
}

listVertexEndpoints() 🔗

List all Vertex AI endpoints in the project.

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string list-vertex-endpoints
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ListVertexEndpoints(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.list_vertex_endpoints()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.listVertexEndpoints()
}

listVertexModels() 🔗

List all Vertex AI models in the project.

Return Type
String !
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string list-vertex-models
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ListVertexModels(ctx)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, ) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.list_vertex_models()
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, ): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.listVertexModels()
}

publishContainer() 🔗

Publish a container image to Artifact Registry.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
containerContainer !-Container to publish
repositoryString !-Artifact Registry repository name
imageNameString !-Image name in the repository
tagString !"latest"Image tag
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string publish-container --container IMAGE:TAG --repository string --image-name string --tag string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, container *dagger.Container, repository string, imageName string, tag string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			PublishContainer(ctx, container, repository, imageName, tag)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, container: dagger.Container, repository: str, image_name: str, tag: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.publish_container(container, repository, image_name, tag)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, container: Container, repository: string, imageName: string, tag: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.publishContainer(container, repository, imageName, tag)
}

readFile() 🔗

Read a file from the workspace with line numbers.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
filePathString !-Path to the file relative to the workspace root
offsetInteger !0Line number to start reading from (1-based)
limitInteger !0Maximum number of lines to read
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string read-file --file-path string --offset integer --limit integer
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, filePath string, offset int, limit int) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ReadFile(ctx, filePath, offset, limit)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, file_path: str, offset: int, limit: int) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.read_file(file_path, offset, limit)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, filePath: string, offset: number, limit: number): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.readFile(filePath, offset, limit)
}

review() 🔗

Review deployment configs for best practices and security.

Examines Dockerfiles, firebase.json, cloudbuild.yaml, Cloud Run service YAML, IAM policies, and other GCP configs. Provides structured feedback with issues and recommendations.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
sourceDirectory !-Source directory with deployment configs to review
focusString !""Specific area to focus the review on (optional)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string review --source DIR_PATH --focus string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, source *dagger.Directory, focus string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Review(ctx, source, focus)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, source: dagger.Directory, focus: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.review(source, focus)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, source: Directory, focus: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.review(source, focus)
}

searchGcpDocs() 🔗

Search Google’s official developer documentation for GCP, Firebase, Android, and more.

Returns relevant documentation chunks with page references. Use get_gcp_doc with a parent value from results to retrieve full page content.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
queryString !-Search query (e.g. 'How to configure Cloud Run VPC connector')
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string search-gcp-docs --query string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, query string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			SearchGcpDocs(ctx, query)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, query: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.search_gcp_docs(query)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, query: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.searchGcpDocs(query)
}

serviceExists() 🔗

Check if a Cloud Run service exists.

Return Type
Boolean !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Cloud Run service name to check
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string service-exists --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string) bool  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			ServiceExists(ctx, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str) -> bool:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.service_exists(service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string): Promise<boolean> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.serviceExists(serviceName)
}

suggestGithubFix() 🔗

Analyze a CI failure and post inline code suggestions on a GitHub PR.

Reads the error output, explores source files, and posts GitHub “suggested changes” that developers can apply with one click. Does not require GCP authentication.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
githubTokenSecret !-GitHub token with repo permissions
prNumberInteger !-Pull request number
repoString !-GitHub repository URL (e.g. 'https://github.com/owner/repo')
commitShaString !-HEAD commit SHA of the PR branch
errorOutputString !-CI error output (stderr/stdout)
sourceDirectory nullSource directory of the PR branch
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string suggest-github-fix --github-token env:MYSECRET --pr-number integer --repo string --commit-sha string --error-output string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, githubToken *dagger.Secret, prNumber int, repo string, commitSha string, errorOutput string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			SuggestGithubFix(ctx, githubToken, prNumber, repo, commitSha, errorOutput)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, github_token: dagger.Secret, pr_number: int, repo: str, commit_sha: str, error_output: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.suggest_github_fix(github_token, pr_number, repo, commit_sha, error_output)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, githubToken: Secret, prNumber: number, repo: string, commitSha: string, errorOutput: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.suggestGithubFix(githubToken, prNumber, repo, commitSha, errorOutput)
}

suggestGithubPrCodeComment() 🔗

Post an inline code suggestion on a GitHub pull request.

The suggestion will appear as a GitHub “suggested change” that developers can apply with one click.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
pathString !-File path relative to repo root
lineInteger !-Line number to suggest a change on
suggestionString !-Replacement code (no ```suggestion fences, just the raw code)
commentString !""Explanation of the fix
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string suggest-github-pr-code-comment --path string --line integer --suggestion string --comment string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, path string, line int, suggestion string, comment string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			SuggestGithubPrCodeComment(ctx, path, line, suggestion, comment)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, path: str, line: int, suggestion: str, comment: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.suggest_github_pr_code_comment(path, line, suggestion, comment)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, path: string, line: number, suggestion: string, comment: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.suggestGithubPrCodeComment(path, line, suggestion, comment)
}

task() 🔗

Launch a sub-agent for research or focused work.

The sub-agent has read-only access to the workspace and GCP tools. Use this for research, analysis, or exploring infrastructure state.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
descriptionString !-Short description of the sub-task
promptString !-Detailed prompt for the sub-agent
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string task --description string --prompt string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, description string, prompt string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Task(ctx, description, prompt)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, description: str, prompt: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.task(description, prompt)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, description: string, prompt: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.task(description, prompt)
}

troubleshoot() 🔗

Troubleshoot a GCP service using an AI agent.

The agent checks the service status, reads logs, and provides a diagnosis with recommended actions. Supports Cloud Run, Firebase, and Vertex AI services.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
issueString !-Description of the issue to diagnose
sourceDirectory nullSource directory (optional, for DAGGER.md context)
serviceNameString !""Service name to troubleshoot (optional, LLM reads from DAGGER.md or issue)
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string troubleshoot --issue string --service-name string
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, issue string, serviceName string) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Troubleshoot(ctx, issue, serviceName)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, issue: str, service_name: str) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.troubleshoot(issue, service_name)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, issue: string, serviceName: string): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.troubleshoot(issue, serviceName)
}

upgrade() 🔗

Upgrade a GCP service version, configuration, or traffic split.

Inspects the current state, plans the upgrade, and applies changes. Supports Cloud Run image updates, traffic splitting, config changes, and Firebase redeployments.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
serviceNameString !-Service to upgrade
targetVersionString !""Target version, image tag, or config change
sourceDirectory nullSource directory (optional, for context)
dryRunBoolean !falseAnalyze and report changes without applying
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string upgrade --service-name string --target-version string --dry-run boolean
func (m *MyModule) Example(ctx context.Context, workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, serviceName string, targetVersion string, dryRun bool) string  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			Upgrade(ctx, serviceName, targetVersion, dryRun)
}
@function
async def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, service_name: str, target_version: str, dry_run: bool) -> str:
	return await (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.upgrade(service_name, target_version, dry_run)
	)
@func()
async example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, serviceName: string, targetVersion: string, dryRun: boolean): Promise<string> {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.upgrade(serviceName, targetVersion, dryRun)
}

writeFile() 🔗

Create or overwrite a file in the workspace.

Returns a changeset showing the diff.

Return Type
Changeset !
Arguments
NameTypeDefault ValueDescription
filePathString !-Path to the file relative to the workspace root
contentsString !-The full file contents to write
Example
dagger -m github.com/telchak/daggerverse/goose@010621c997378db92da5969584001be575c5e5a7 call \
 --workload-identity-provider string --service-account-email string --project-id string --region string --self-improve string write-file --file-path string --contents string
func (m *MyModule) Example(workloadIdentityProvider string, serviceAccountEmail string, projectId string, region string, selfImprove string, filePath string, contents string) *dagger.Changeset  {
	return dag.
			Goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove).
			WriteFile(filePath, contents)
}
@function
def example(workload_identity_provider: str, service_account_email: str, project_id: str, region: str, self_improve: str, file_path: str, contents: str) -> dagger.Changeset:
	return (
		dag.goose(workload_identity_provider, service_account_email, project_id, region, self_improve)
		.write_file(file_path, contents)
	)
@func()
example(workloadIdentityProvider: string, serviceAccountEmail: string, projectId: string, region: string, selfImprove: string, filePath: string, contents: string): Changeset {
	return dag
		.goose(workloadIdentityProvider, serviceAccountEmail, projectId, region, selfImprove)
		.writeFile(filePath, contents)
}