[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-google-cloud-designing-and-deploying-infrastructure":3,"mdc--a8c3fi-key":37,"related-repo-google-cloud-designing-and-deploying-infrastructure":3551,"related-org-google-cloud-designing-and-deploying-infrastructure":3577},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":32,"sourceUrl":35,"mdContent":36},"designing-and-deploying-infrastructure","design and deploy cloud infrastructure","This skill is used to design, assess, deploy, and troubleshoot cloud infrastructure using the Application Design Center (ADC).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"google-cloud","Google Cloud","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fgoogle-cloud.png","GoogleCloudPlatform",[13,17,20,23],{"name":14,"slug":15,"type":16},"Architecture","architecture","tag",{"name":18,"slug":19,"type":16},"Deployment","deployment",{"name":21,"slug":22,"type":16},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":16},65,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgemini-cloud-assist-mcp","2026-07-12T07:40:35.767494",null,19,[30,8,31],"gemini-cloud-assist","mcp-server",{"repoUrl":25,"stars":24,"forks":28,"topics":33,"description":34},[30,8,31],"An MCP Server for Gemini Cloud Assist; provides tools to assist with your tasks on GCP","https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fgemini-cloud-assist-mcp\u002Ftree\u002FHEAD\u002Fskills\u002Fdesigning-and-deploying-infrastructure","---\nname: designing-and-deploying-infrastructure\ndescription: This skill is used to design, assess, deploy, and troubleshoot cloud infrastructure using the Application Design Center (ADC).\n---\n\n# Designing and Deploying Infrastructure\n\n## Index\n1. [Overview](#overview)\n2. [Best Practices & Constraints](#best-practices--constraints)\n3. [Phase 1: Infrastructure Design & Refinement](#phase-1-infrastructure-design--refinement)\n4. [Phase 2: Best Practices Assessment & Design Iteration](#phase-2-best-practices-assessment--design-iteration)\n5. [Phase 3: Application Deployment](#phase-3-application-deployment)\n6. [Phase 4: Get Deployed Resources](#phase-4-get-deployed-resources)\n7. [Phase 5: Troubleshoot Deployment Failures](#phase-5-troubleshoot-deployment-failures)\n8. [Phase 6: Verification & E2E Testing](#phase-6-verification--e2e-testing)\n\n## Overview\nThis skill provides a prescriptive, multi-loop workflow for the entire infrastructure lifecycle on Google Cloud Platform (GCP). It leverages the Gemini Application Designer (GAD) and Application Design Center (ADC) tools (like `gemini_cloud_assist:design_infra` and `application_design_center:assess_best_practices`) to intelligently design architectures, assess best practices, and automate deployment and troubleshooting.\nAlways maintain the persona of a Principal Cloud Architect. Delegate all research and design to the specialized tools provided.\n**Note:** These tools are part of the `gemini_cloud_assist` and `application_design_center` MCP Servers. Tool names are qualified with their respective server names (e.g., `gemini_cloud_assist:tool_name`).\n\n## Best Practices & Constraints\n-   **Delegation & No Manual Design**: Delegate all architecture decisions and product selections to the `gemini_cloud_assist:design_infra` tool. **Do not** design manually or edit generated Terraform code. Request changes via the tool.\n-   **Inputs**: Always ask the user for required context like project ID, service accounts, etc. if necessary -- do not make assumptions or use placeholders.\n-   **Visualization Power**: Always render the Mermaid diagram from `gemini_cloud_assist:design_infra` in every implementation plan. Refresh the diagram after every design change. Do not create your own diagrams.\n-   **Loop Discipline**: Follow the workflow loops and exit criteria strictly. If you cannot follow the Infrastructure Lifecycle Workflow, you must exit and inform the user (for example, if the user cancels the process, or if you hit the maximum troubleshooting loop threshold in Phase 5).\n-   **Application Template as the main resource**: The application template is the main resource when generating and iterating on a design. **Always** look for the application template URI in the `gemini_cloud_assist:design_infra` response (`serializedApplicationTemplateURI`), and use that for the rest of the Infrastructure Lifecycle Workflow.\n    -   **Application Template vs Application**: Application template is a template that is used to create an application. Application is an instance of an application template. Do not confuse these two.\n    -   **Never** attempt to create an application template URI yourself; always use the URI returned from `gemini_cloud_assist:design_infra`.\n\n## Infrastructure Lifecycle Workflow\n### Phase 1: Infrastructure Design & Refinement\n**Goal**: Transform vague user requirements into a concrete, approved architectural design.\n1.  **Requirement Gathering**: Capture user intent if it's vague (e.g., \"3-tier web app with high availability\").\nGuidelines for initial design that **you must follow**:\n    - Gather project ID (required) and ADC space ID (optional) from the user.\n2.  **Codebase Analysis**: Critically, **before** calling `gemini_cloud_assist:design_infra`, you **must** perform a thorough exhaustive analysis of the user's application codebase (if available). **Do not** stop at high-level documentation or configuration files at the surface level; you **must** inspect the full depth of the codebase, including business logic, to find hidden API clients, dependencies, environment variables, and other application code context required to design cloud infrastructure. The list below outlines critical checks you **must** perform. **Do not** limit your investigation to only these items:\n    - If you scan the application code to provide additional context, summarize *only* the application's characteristics (e.g., languages, frameworks, statefulness) and **do not** assume or suggest specific infrastructure components or services (e.g., **do not** choose the product type (e.g. GKE, Cloud Run, etc) or network information unless the user explicitly requested them or they are specified in codebase).\n    - **NEVER** rely solely on `grep_search`, `os.environ`, or summary documentation (like READMEs) to determine infrastructure needs. **DO NOT** make premature assumptions or over-optimize for speed. Accuracy is critical; you **must** inspect the entire codebase.\n    - Identify required environment variables, secrets, ports exposed in application, and database connection patterns. Environment Variables may also be present in nginx config files. Environment variables are critical for architecture so double check you have identified all of them.\n    - Identify all the dependencies on existing GCP services (e.g., Vertex AI API, pre-existing GCS buckets). Along with the rest of the codebase, you **must** read dependency files (e.g., `requirements.txt`, `package.json`, `go.mod`) to identify GCP SDKs used and scan source code for explicit GCP client initializations.\n    - Scan the codebase (e.g., `cloudbuild.yaml`, `Dockerfile`, CI\u002FCD configs) to extract container image URLs. If no image is found or if the identified image does not exist in the Artifact Registry, you must build and upload the image. Provide only the resulting URL to `gemini_cloud_assist:design_infra`.\n3.  **Initial Design**: Call `gemini_cloud_assist:design_infra` tool with `command=\"manage_app_design\"` and the user's query. Ensure that `project` is `projects\u002F{project_id}`\n    - **MANDATORY - PRODUCT AGNOSTICISM**: Do NOT architect the infrastructure prematurely (e.g. \"frontend should be a Cloud Run service\"), instead delegate this responsibilty entirely to `gemini_cloud_assist:design_infra` tool. The codebase analysis results __may suggest__ certain product types (e.g. database uses the PostgreSQL client library, therefore database may be PostgreSQL), but otherwise make **zero** assumptions about the architecture. Since environment variables are critical to the architecture, you **must** pass the full set discovered during codebase analysis phase in all the design_infra manage_app_design requests.\n    - **Prevent Naming Collisions**: Generate a unique, non-sequential five-character alphanumeric suffix, strictly avoiding common patterns like `12345`, `abcde` or `a1b2c`. Instruct `gemini_cloud_assist:design_infra` in the prompt to append this suffix to all newly created components.\n4.  **Visualization, Terraform Code and Verification**: The `gemini_cloud_assist:design_infra` will respond with a Mermaid diagram, Terraform code, and the `serializedApplicationTemplateURI`.\n    - Retrieve the Terraform code corresponding to each `.tf` file referenced and save them into a dedicated directory called `infra`.\n    - You **must** present an Implementation Plan that contains the Mermaid diagram rendered within the Implementation Plan, as well as the location of the Terraform configs.\n    - **Verification Step**: This is a critical step. You **must** meticulously verify the generated Terraform code to ensure it includes all the environment variables, secrets, dependencies, and correct container image URLs required by application, identified during the Codebase Analysis step. If *any* required configurations are missing or incorrect, you **must** iterate on the design using `gemini_cloud_assist:design_infra command=\"manage_app_design\"` to correct them. **Do not proceed to deployment with an unverified or incomplete design.**\n5.  **Iteration**: Refine the design by feeding user feedback back into `gemini_cloud_assist:design_infra`.\n    -   **Design Iteration Constraints**: When iterating on the design, **do not** make manual edits to the Terraform code. **Always** use `gemini_cloud_assist:design_infra` tool exclusively to update the Terraform code.  **Always** keep the local Terraform code in sync with Terraform code returned from `gemini_cloud_assist:design_infra`.\n    -   **Visualization Update**: Update the Implementation Plan by re-rendering the Mermaid diagram and updating the Terraform configs.\n    -   **Retries**: After encountering transient errors and you need to retry `gemini_cloud_assist:design_infra` calls, you **must make exactly the same call** with **same** arguments.\n6.  **Exit Criteria**:\n    -   Design fulfills all critical requirements and has resources needed by the application, especially the environment variables for each service.\n    -   User confirms the design is satisfactory.\n    -   `gemini_cloud_assist:design_infra` reaches a stable state with no further architectural changes.\n    \n### Phase 2: Best Practices Assessment & Design Iteration\n**Goal**: Validate design alignment with security, cost, and reliability benchmarks prior to deployment.\n1. **Execution**: Invoke `assess_best_practices` using the application template metadata (project, location, space and application template identifiers).\n2. **Analysis**: You **MUST** present all findings to the user in a pretty tabular fashion per framework, detailing specific violations, and their associated severity levels - before proceeding to remediation.\n3. **Remediation Loop**:\n    - Pass identified findings as context to `gemini_cloud_assist:design_infra(command=\"manage_app_design\")`.\n    - **Strict Constraint**: All modifications must be executed via the `gemini_cloud_assist:design_infra` tool; manual Terraform manipulation is prohibited.\n    - Perform a diff-based comparison between current and updated Terraform code for user approval.\n    - Re-assess post-update to verify the resolution of findings.\n4. **Exit Criteria**:\n    - **Optimization**: Zero findings remaining.\n    - **Convergence**: `gemini_cloud_assist:design_infra` provides no further suggestions.\n    - **Threshold**: Maximum of three (3) iterative attempts reached.\n5. **Transition**: Proceed to Phase 3 deployment only upon loop termination.\n\n### Phase 3: Application Deployment\n**Goal**: Deploy the application template to the GCP environment.\n1.  **Deploy Application**: Use the `application_design_center:manage_application` tool with the `APPLICATION_OPERATION_DEPLOY` operation to deploy the application.\n    *   **Required Arguments**: `project`, `location`, `spaceId`, `applicationTemplateUri`, `applicationId`, `serviceAccount`.\n    *   **Note**: This returns a Long-Running Operation (LRO). Inform the user that the deployment has started.\n    *   **Example**:\n        ```json\n        {\n          \"project\": \"my-project\",\n          \"location\": \"us-central1\",\n          \"spaceId\": \"my-space\",\n          \"applicationId\": \"my-app\",\n          \"operation\": \"APPLICATION_OPERATION_DEPLOY\",\n          \"applicationTemplateUri\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template\",\n          \"serviceAccount\": \"projects\u002Fmy-project\u002FserviceAccounts\u002Fdeployer@my-project.iam.gserviceaccount.com\"\n        }\n        ```\n2.  **Monitor Deployment**: Repeatedly poll the LRO (e.g., every 30-60 seconds) until `done: true`.\n3.  **Handle Results**:\n    -   **Success**: If `done` is `true` and there is no `error` field, proceed to Phase 4.\n    -   **Failure**: If an `error` field is present, proceed to Phase 5.\n\n### Phase 4: Get Deployed Resources\n1.  **Retrieve Information**: Call the `application_design_center:manage_application` tool with the `APPLICATION_OPERATION_GET` operation, providing `project`, `location`, `spaceId` and `applicationId`, to fetch the outputs and status of the deployed resources.\n    *   **Example**:\n        ```json\n        {\n          \"project\": \"my-project\",\n          \"location\": \"us-central1\",\n          \"spaceId\": \"my-space\",\n          \"applicationId\": \"my-app\",\n          \"operation\": \"APPLICATION_OPERATION_GET\"\n        }\n        ```\n2.  **User Confirmation**: Present the deployed resource information to the user and conclude the task.\n\n### Phase 5: Troubleshoot Deployment Failures\n**Goal**: Diagnose and remediate deployment failures iteratively.\nWhen troubleshooting a failed application, follow these steps.\n**Process:**\n1.  **Initiate Troubleshooting:**\n    - **Action:** Call `gemini_cloud_assist:design_infra` with `applicationUri` (format: projects\u002F{project}\u002Flocations\u002F{location}\u002Fspaces\u002F{spaceId}\u002Fapplications\u002F{applicationId}) to get suggested fixes.\n    - Convert the returned response to JSON. The value of a parameter may be a JSON string that needs to be parsed.\n    - **Expected Output Structure from Troubleshooting:**\n      ```json\n      {\n        \"summary\": \"...\",\n        \"troubleshootingSteps\": [\n          {\n            \"description\": \"...\",\n            \"gcloud_commands\": [\"gcloud ...\"],\n            \"componentParameters\": null\n          },\n          {\n            \"description\": \"...\",\n            \"gcloud_commands\": null,\n            \"componentParameters\": [\n              {\n                \"componentUri\": \"projects\u002F...\u002Fcomponents\u002Fcomp-a\",\n                \"parameters\": [\n                  { \"key\": \"param1\", \"value\": \"new_value\" },\n                  { \"key\": \"param3\", \"value\": \"another\" }\n                ]\n              }\n            ]\n          }\n        ]\n      }\n      ```\n2.  **Analyze Troubleshooting Steps**: Iterate through each `step` in `troubleshootingSteps`. Identify if `gcloud_commands` or `component_parameters` are provided.\n3.  **Update Application Template**:\n    - **If `component_parameters` updates are suggested**:\n      1. Get the `application_template_id` from the Application object obtained in Step 2. The value is present at `serialized_application_template.uri`. Get the `application_template_id` from the uri.\n      2. **Update Application Template**: Call `application_design_center:manage_application_template` with `APPLICATION_TEMPLATE_OPERATION_UPDATE_COMPONENT_PARAMETERS`.\n         - **Tool**: `application_design_center:manage_application_template`\n         - **Arguments**: `parent`, `applicationTemplateId`, `componentParameters`, `operation` - `APPLICATION_TEMPLATE_OPERATION_UPDATE_COMPONENT_PARAMETERS`\n      3. **Example**:\n         ```json\n         {\n           \"applicationTemplateId\": \"my-template\",\n           \"componentParameters\": [\n             {\n               \"component\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template\u002Fcomponents\u002Fcloud-run-1\",\n               \"parameters\": [\n                 {\n                   \"key\": \"containers\",\n                   \"value\": [\n                     {\n                       \"container_image\": \"us-docker.pkg.dev\u002Fcloudrun\u002Fcontainer\u002Fhello\",\n                       \"container_name\": \"service-container\",\n                       \"ports\": {\n                         \"container_port\": 8080,\n                         \"name\": \"http1\"\n                       },\n                       \"resources\": {\n                         \"cpu_idle\": false,\n                         \"limits\": {\n                           \"cpu\": \"4\",\n                           \"memory\": \"16Gi\"\n                         },\n                         \"startup_cpu_boost\": false\n                       }\n                     }\n                   ]\n                 }\n               ]\n             }\n           ],\n           \"operation\": \"APPLICATION_TEMPLATE_OPERATION_UPDATE_COMPONENT_PARAMETERS\",\n           \"parent\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\"\n         }\n         ```\n4.  **Retry Deployment**:\n    - **Action**: Attempt to deploy the application again.\n    - **Tool**: `application_design_center:manage_application`\n    - **Arguments**: `project`, `location`, `spaceId`, `applicationTemplateUri`, `applicationId`, `serviceAccount`. `operation` - `APPLICATION_OPERATION_DEPLOY`\n5.  **Iterate if Necessary**: If deployment fails again, repeat troubleshooting steps up to 5 times. Report the history to the user if the limit is reached.\n**Operational Notes:**\n* Mutating tool calls often return an LRO.\n* Always poll LROs on behalf of the user; do not ask the user to run the polling command.\n* Do not sleep during deployment status polling. Poll actively every 30-60 seconds until the LRO is done.\n* Apply `debug_deployment` responses exactly as provided.\n* For retries, disregard previous attempts and start from Step 2 again.\n* Handle bad-gateway errors during commit with jittered retries and verify the template revision.\n* Exclude `PORT` from being explicitly set as a Cloud Run environment variables as it is a reserved name.\n\n### Phase 6: Verification & E2E Testing\nFollowing a successful deployment:\n- Verify that services are using correct container image URLs and that each component is healthy.\n- Conduct a simple demo test to ensure E2E functionality and validate the hosted services are working as expected.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,50,57,135,140,194,199,326,332,338,348,915,920,929,1076,1081,1090,1565,1570,1835,1840,1854,3468,3522,3527,3532,3545],{"type":43,"tag":44,"props":45,"children":46},"element","h1",{"id":4},[47],{"type":48,"value":49},"text","Designing and Deploying Infrastructure",{"type":43,"tag":51,"props":52,"children":54},"h2",{"id":53},"index",[55],{"type":48,"value":56},"Index",{"type":43,"tag":58,"props":59,"children":60},"ol",{},[61,72,81,90,99,108,117,126],{"type":43,"tag":62,"props":63,"children":64},"li",{},[65],{"type":43,"tag":66,"props":67,"children":69},"a",{"href":68},"#overview",[70],{"type":48,"value":71},"Overview",{"type":43,"tag":62,"props":73,"children":74},{},[75],{"type":43,"tag":66,"props":76,"children":78},{"href":77},"#best-practices--constraints",[79],{"type":48,"value":80},"Best Practices & Constraints",{"type":43,"tag":62,"props":82,"children":83},{},[84],{"type":43,"tag":66,"props":85,"children":87},{"href":86},"#phase-1-infrastructure-design--refinement",[88],{"type":48,"value":89},"Phase 1: Infrastructure Design & Refinement",{"type":43,"tag":62,"props":91,"children":92},{},[93],{"type":43,"tag":66,"props":94,"children":96},{"href":95},"#phase-2-best-practices-assessment--design-iteration",[97],{"type":48,"value":98},"Phase 2: Best Practices Assessment & Design Iteration",{"type":43,"tag":62,"props":100,"children":101},{},[102],{"type":43,"tag":66,"props":103,"children":105},{"href":104},"#phase-3-application-deployment",[106],{"type":48,"value":107},"Phase 3: Application Deployment",{"type":43,"tag":62,"props":109,"children":110},{},[111],{"type":43,"tag":66,"props":112,"children":114},{"href":113},"#phase-4-get-deployed-resources",[115],{"type":48,"value":116},"Phase 4: Get Deployed Resources",{"type":43,"tag":62,"props":118,"children":119},{},[120],{"type":43,"tag":66,"props":121,"children":123},{"href":122},"#phase-5-troubleshoot-deployment-failures",[124],{"type":48,"value":125},"Phase 5: Troubleshoot Deployment Failures",{"type":43,"tag":62,"props":127,"children":128},{},[129],{"type":43,"tag":66,"props":130,"children":132},{"href":131},"#phase-6-verification--e2e-testing",[133],{"type":48,"value":134},"Phase 6: Verification & E2E Testing",{"type":43,"tag":51,"props":136,"children":138},{"id":137},"overview",[139],{"type":48,"value":71},{"type":43,"tag":141,"props":142,"children":143},"p",{},[144,146,153,155,161,163,169,171,177,178,184,186,192],{"type":48,"value":145},"This skill provides a prescriptive, multi-loop workflow for the entire infrastructure lifecycle on Google Cloud Platform (GCP). It leverages the Gemini Application Designer (GAD) and Application Design Center (ADC) tools (like ",{"type":43,"tag":147,"props":148,"children":150},"code",{"className":149},[],[151],{"type":48,"value":152},"gemini_cloud_assist:design_infra",{"type":48,"value":154}," and ",{"type":43,"tag":147,"props":156,"children":158},{"className":157},[],[159],{"type":48,"value":160},"application_design_center:assess_best_practices",{"type":48,"value":162},") to intelligently design architectures, assess best practices, and automate deployment and troubleshooting.\nAlways maintain the persona of a Principal Cloud Architect. Delegate all research and design to the specialized tools provided.\n",{"type":43,"tag":164,"props":165,"children":166},"strong",{},[167],{"type":48,"value":168},"Note:",{"type":48,"value":170}," These tools are part of the ",{"type":43,"tag":147,"props":172,"children":174},{"className":173},[],[175],{"type":48,"value":176},"gemini_cloud_assist",{"type":48,"value":154},{"type":43,"tag":147,"props":179,"children":181},{"className":180},[],[182],{"type":48,"value":183},"application_design_center",{"type":48,"value":185}," MCP Servers. Tool names are qualified with their respective server names (e.g., ",{"type":43,"tag":147,"props":187,"children":189},{"className":188},[],[190],{"type":48,"value":191},"gemini_cloud_assist:tool_name",{"type":48,"value":193},").",{"type":43,"tag":51,"props":195,"children":197},{"id":196},"best-practices-constraints",[198],{"type":48,"value":80},{"type":43,"tag":200,"props":201,"children":202},"ul",{},[203,227,237,254,264],{"type":43,"tag":62,"props":204,"children":205},{},[206,211,213,218,220,225],{"type":43,"tag":164,"props":207,"children":208},{},[209],{"type":48,"value":210},"Delegation & No Manual Design",{"type":48,"value":212},": Delegate all architecture decisions and product selections to the ",{"type":43,"tag":147,"props":214,"children":216},{"className":215},[],[217],{"type":48,"value":152},{"type":48,"value":219}," tool. ",{"type":43,"tag":164,"props":221,"children":222},{},[223],{"type":48,"value":224},"Do not",{"type":48,"value":226}," design manually or edit generated Terraform code. Request changes via the tool.",{"type":43,"tag":62,"props":228,"children":229},{},[230,235],{"type":43,"tag":164,"props":231,"children":232},{},[233],{"type":48,"value":234},"Inputs",{"type":48,"value":236},": Always ask the user for required context like project ID, service accounts, etc. if necessary -- do not make assumptions or use placeholders.",{"type":43,"tag":62,"props":238,"children":239},{},[240,245,247,252],{"type":43,"tag":164,"props":241,"children":242},{},[243],{"type":48,"value":244},"Visualization Power",{"type":48,"value":246},": Always render the Mermaid diagram from ",{"type":43,"tag":147,"props":248,"children":250},{"className":249},[],[251],{"type":48,"value":152},{"type":48,"value":253}," in every implementation plan. Refresh the diagram after every design change. Do not create your own diagrams.",{"type":43,"tag":62,"props":255,"children":256},{},[257,262],{"type":43,"tag":164,"props":258,"children":259},{},[260],{"type":48,"value":261},"Loop Discipline",{"type":48,"value":263},": Follow the workflow loops and exit criteria strictly. If you cannot follow the Infrastructure Lifecycle Workflow, you must exit and inform the user (for example, if the user cancels the process, or if you hit the maximum troubleshooting loop threshold in Phase 5).",{"type":43,"tag":62,"props":265,"children":266},{},[267,272,274,279,281,286,288,294,296],{"type":43,"tag":164,"props":268,"children":269},{},[270],{"type":48,"value":271},"Application Template as the main resource",{"type":48,"value":273},": The application template is the main resource when generating and iterating on a design. ",{"type":43,"tag":164,"props":275,"children":276},{},[277],{"type":48,"value":278},"Always",{"type":48,"value":280}," look for the application template URI in the ",{"type":43,"tag":147,"props":282,"children":284},{"className":283},[],[285],{"type":48,"value":152},{"type":48,"value":287}," response (",{"type":43,"tag":147,"props":289,"children":291},{"className":290},[],[292],{"type":48,"value":293},"serializedApplicationTemplateURI",{"type":48,"value":295},"), and use that for the rest of the Infrastructure Lifecycle Workflow.\n",{"type":43,"tag":200,"props":297,"children":298},{},[299,309],{"type":43,"tag":62,"props":300,"children":301},{},[302,307],{"type":43,"tag":164,"props":303,"children":304},{},[305],{"type":48,"value":306},"Application Template vs Application",{"type":48,"value":308},": Application template is a template that is used to create an application. Application is an instance of an application template. Do not confuse these two.",{"type":43,"tag":62,"props":310,"children":311},{},[312,317,319,324],{"type":43,"tag":164,"props":313,"children":314},{},[315],{"type":48,"value":316},"Never",{"type":48,"value":318}," attempt to create an application template URI yourself; always use the URI returned from ",{"type":43,"tag":147,"props":320,"children":322},{"className":321},[],[323],{"type":48,"value":152},{"type":48,"value":325},".",{"type":43,"tag":51,"props":327,"children":329},{"id":328},"infrastructure-lifecycle-workflow",[330],{"type":48,"value":331},"Infrastructure Lifecycle Workflow",{"type":43,"tag":333,"props":334,"children":336},"h3",{"id":335},"phase-1-infrastructure-design-refinement",[337],{"type":48,"value":89},{"type":43,"tag":141,"props":339,"children":340},{},[341,346],{"type":43,"tag":164,"props":342,"children":343},{},[344],{"type":48,"value":345},"Goal",{"type":48,"value":347},": Transform vague user requirements into a concrete, approved architectural design.",{"type":43,"tag":58,"props":349,"children":350},{},[351,376,563,682,782,883],{"type":43,"tag":62,"props":352,"children":353},{},[354,359,361,366,368],{"type":43,"tag":164,"props":355,"children":356},{},[357],{"type":48,"value":358},"Requirement Gathering",{"type":48,"value":360},": Capture user intent if it's vague (e.g., \"3-tier web app with high availability\").\nGuidelines for initial design that ",{"type":43,"tag":164,"props":362,"children":363},{},[364],{"type":48,"value":365},"you must follow",{"type":48,"value":367},":\n",{"type":43,"tag":200,"props":369,"children":370},{},[371],{"type":43,"tag":62,"props":372,"children":373},{},[374],{"type":48,"value":375},"Gather project ID (required) and ADC space ID (optional) from the user.",{"type":43,"tag":62,"props":377,"children":378},{},[379,384,386,391,393,398,400,405,407,411,413,417,419,423,425,429,431],{"type":43,"tag":164,"props":380,"children":381},{},[382],{"type":48,"value":383},"Codebase Analysis",{"type":48,"value":385},": Critically, ",{"type":43,"tag":164,"props":387,"children":388},{},[389],{"type":48,"value":390},"before",{"type":48,"value":392}," calling ",{"type":43,"tag":147,"props":394,"children":396},{"className":395},[],[397],{"type":48,"value":152},{"type":48,"value":399},", you ",{"type":43,"tag":164,"props":401,"children":402},{},[403],{"type":48,"value":404},"must",{"type":48,"value":406}," perform a thorough exhaustive analysis of the user's application codebase (if available). ",{"type":43,"tag":164,"props":408,"children":409},{},[410],{"type":48,"value":224},{"type":48,"value":412}," stop at high-level documentation or configuration files at the surface level; you ",{"type":43,"tag":164,"props":414,"children":415},{},[416],{"type":48,"value":404},{"type":48,"value":418}," inspect the full depth of the codebase, including business logic, to find hidden API clients, dependencies, environment variables, and other application code context required to design cloud infrastructure. The list below outlines critical checks you ",{"type":43,"tag":164,"props":420,"children":421},{},[422],{"type":48,"value":404},{"type":48,"value":424}," perform. ",{"type":43,"tag":164,"props":426,"children":427},{},[428],{"type":48,"value":224},{"type":48,"value":430}," limit your investigation to only these items:\n",{"type":43,"tag":200,"props":432,"children":433},{},[434,460,499,504,537],{"type":43,"tag":62,"props":435,"children":436},{},[437,439,445,447,452,454,458],{"type":48,"value":438},"If you scan the application code to provide additional context, summarize ",{"type":43,"tag":440,"props":441,"children":442},"em",{},[443],{"type":48,"value":444},"only",{"type":48,"value":446}," the application's characteristics (e.g., languages, frameworks, statefulness) and ",{"type":43,"tag":164,"props":448,"children":449},{},[450],{"type":48,"value":451},"do not",{"type":48,"value":453}," assume or suggest specific infrastructure components or services (e.g., ",{"type":43,"tag":164,"props":455,"children":456},{},[457],{"type":48,"value":451},{"type":48,"value":459}," choose the product type (e.g. GKE, Cloud Run, etc) or network information unless the user explicitly requested them or they are specified in codebase).",{"type":43,"tag":62,"props":461,"children":462},{},[463,468,470,476,478,484,486,491,493,497],{"type":43,"tag":164,"props":464,"children":465},{},[466],{"type":48,"value":467},"NEVER",{"type":48,"value":469}," rely solely on ",{"type":43,"tag":147,"props":471,"children":473},{"className":472},[],[474],{"type":48,"value":475},"grep_search",{"type":48,"value":477},", ",{"type":43,"tag":147,"props":479,"children":481},{"className":480},[],[482],{"type":48,"value":483},"os.environ",{"type":48,"value":485},", or summary documentation (like READMEs) to determine infrastructure needs. ",{"type":43,"tag":164,"props":487,"children":488},{},[489],{"type":48,"value":490},"DO NOT",{"type":48,"value":492}," make premature assumptions or over-optimize for speed. Accuracy is critical; you ",{"type":43,"tag":164,"props":494,"children":495},{},[496],{"type":48,"value":404},{"type":48,"value":498}," inspect the entire codebase.",{"type":43,"tag":62,"props":500,"children":501},{},[502],{"type":48,"value":503},"Identify required environment variables, secrets, ports exposed in application, and database connection patterns. Environment Variables may also be present in nginx config files. Environment variables are critical for architecture so double check you have identified all of them.",{"type":43,"tag":62,"props":505,"children":506},{},[507,509,513,515,521,522,528,529,535],{"type":48,"value":508},"Identify all the dependencies on existing GCP services (e.g., Vertex AI API, pre-existing GCS buckets). Along with the rest of the codebase, you ",{"type":43,"tag":164,"props":510,"children":511},{},[512],{"type":48,"value":404},{"type":48,"value":514}," read dependency files (e.g., ",{"type":43,"tag":147,"props":516,"children":518},{"className":517},[],[519],{"type":48,"value":520},"requirements.txt",{"type":48,"value":477},{"type":43,"tag":147,"props":523,"children":525},{"className":524},[],[526],{"type":48,"value":527},"package.json",{"type":48,"value":477},{"type":43,"tag":147,"props":530,"children":532},{"className":531},[],[533],{"type":48,"value":534},"go.mod",{"type":48,"value":536},") to identify GCP SDKs used and scan source code for explicit GCP client initializations.",{"type":43,"tag":62,"props":538,"children":539},{},[540,542,548,549,555,557,562],{"type":48,"value":541},"Scan the codebase (e.g., ",{"type":43,"tag":147,"props":543,"children":545},{"className":544},[],[546],{"type":48,"value":547},"cloudbuild.yaml",{"type":48,"value":477},{"type":43,"tag":147,"props":550,"children":552},{"className":551},[],[553],{"type":48,"value":554},"Dockerfile",{"type":48,"value":556},", CI\u002FCD configs) to extract container image URLs. If no image is found or if the identified image does not exist in the Artifact Registry, you must build and upload the image. Provide only the resulting URL to ",{"type":43,"tag":147,"props":558,"children":560},{"className":559},[],[561],{"type":48,"value":152},{"type":48,"value":325},{"type":43,"tag":62,"props":564,"children":565},{},[566,571,573,578,580,586,588,594,596,602],{"type":43,"tag":164,"props":567,"children":568},{},[569],{"type":48,"value":570},"Initial Design",{"type":48,"value":572},": Call ",{"type":43,"tag":147,"props":574,"children":576},{"className":575},[],[577],{"type":48,"value":152},{"type":48,"value":579}," tool with ",{"type":43,"tag":147,"props":581,"children":583},{"className":582},[],[584],{"type":48,"value":585},"command=\"manage_app_design\"",{"type":48,"value":587}," and the user's query. Ensure that ",{"type":43,"tag":147,"props":589,"children":591},{"className":590},[],[592],{"type":48,"value":593},"project",{"type":48,"value":595}," is ",{"type":43,"tag":147,"props":597,"children":599},{"className":598},[],[600],{"type":48,"value":601},"projects\u002F{project_id}",{"type":43,"tag":200,"props":603,"children":604},{},[605,642],{"type":43,"tag":62,"props":606,"children":607},{},[608,613,615,620,622,627,629,634,636,640],{"type":43,"tag":164,"props":609,"children":610},{},[611],{"type":48,"value":612},"MANDATORY - PRODUCT AGNOSTICISM",{"type":48,"value":614},": Do NOT architect the infrastructure prematurely (e.g. \"frontend should be a Cloud Run service\"), instead delegate this responsibilty entirely to ",{"type":43,"tag":147,"props":616,"children":618},{"className":617},[],[619],{"type":48,"value":152},{"type":48,"value":621}," tool. The codebase analysis results ",{"type":43,"tag":164,"props":623,"children":624},{},[625],{"type":48,"value":626},"may suggest",{"type":48,"value":628}," certain product types (e.g. database uses the PostgreSQL client library, therefore database may be PostgreSQL), but otherwise make ",{"type":43,"tag":164,"props":630,"children":631},{},[632],{"type":48,"value":633},"zero",{"type":48,"value":635}," assumptions about the architecture. Since environment variables are critical to the architecture, you ",{"type":43,"tag":164,"props":637,"children":638},{},[639],{"type":48,"value":404},{"type":48,"value":641}," pass the full set discovered during codebase analysis phase in all the design_infra manage_app_design requests.",{"type":43,"tag":62,"props":643,"children":644},{},[645,650,652,658,659,665,667,673,675,680],{"type":43,"tag":164,"props":646,"children":647},{},[648],{"type":48,"value":649},"Prevent Naming Collisions",{"type":48,"value":651},": Generate a unique, non-sequential five-character alphanumeric suffix, strictly avoiding common patterns like ",{"type":43,"tag":147,"props":653,"children":655},{"className":654},[],[656],{"type":48,"value":657},"12345",{"type":48,"value":477},{"type":43,"tag":147,"props":660,"children":662},{"className":661},[],[663],{"type":48,"value":664},"abcde",{"type":48,"value":666}," or ",{"type":43,"tag":147,"props":668,"children":670},{"className":669},[],[671],{"type":48,"value":672},"a1b2c",{"type":48,"value":674},". Instruct ",{"type":43,"tag":147,"props":676,"children":678},{"className":677},[],[679],{"type":48,"value":152},{"type":48,"value":681}," in the prompt to append this suffix to all newly created components.",{"type":43,"tag":62,"props":683,"children":684},{},[685,690,692,697,699,704,706],{"type":43,"tag":164,"props":686,"children":687},{},[688],{"type":48,"value":689},"Visualization, Terraform Code and Verification",{"type":48,"value":691},": The ",{"type":43,"tag":147,"props":693,"children":695},{"className":694},[],[696],{"type":48,"value":152},{"type":48,"value":698}," will respond with a Mermaid diagram, Terraform code, and the ",{"type":43,"tag":147,"props":700,"children":702},{"className":701},[],[703],{"type":48,"value":293},{"type":48,"value":705},".\n",{"type":43,"tag":200,"props":707,"children":708},{},[709,729,740],{"type":43,"tag":62,"props":710,"children":711},{},[712,714,720,722,728],{"type":48,"value":713},"Retrieve the Terraform code corresponding to each ",{"type":43,"tag":147,"props":715,"children":717},{"className":716},[],[718],{"type":48,"value":719},".tf",{"type":48,"value":721}," file referenced and save them into a dedicated directory called ",{"type":43,"tag":147,"props":723,"children":725},{"className":724},[],[726],{"type":48,"value":727},"infra",{"type":48,"value":325},{"type":43,"tag":62,"props":730,"children":731},{},[732,734,738],{"type":48,"value":733},"You ",{"type":43,"tag":164,"props":735,"children":736},{},[737],{"type":48,"value":404},{"type":48,"value":739}," present an Implementation Plan that contains the Mermaid diagram rendered within the Implementation Plan, as well as the location of the Terraform configs.",{"type":43,"tag":62,"props":741,"children":742},{},[743,748,750,754,756,761,763,767,769,775,777],{"type":43,"tag":164,"props":744,"children":745},{},[746],{"type":48,"value":747},"Verification Step",{"type":48,"value":749},": This is a critical step. You ",{"type":43,"tag":164,"props":751,"children":752},{},[753],{"type":48,"value":404},{"type":48,"value":755}," meticulously verify the generated Terraform code to ensure it includes all the environment variables, secrets, dependencies, and correct container image URLs required by application, identified during the Codebase Analysis step. If ",{"type":43,"tag":440,"props":757,"children":758},{},[759],{"type":48,"value":760},"any",{"type":48,"value":762}," required configurations are missing or incorrect, you ",{"type":43,"tag":164,"props":764,"children":765},{},[766],{"type":48,"value":404},{"type":48,"value":768}," iterate on the design using ",{"type":43,"tag":147,"props":770,"children":772},{"className":771},[],[773],{"type":48,"value":774},"gemini_cloud_assist:design_infra command=\"manage_app_design\"",{"type":48,"value":776}," to correct them. ",{"type":43,"tag":164,"props":778,"children":779},{},[780],{"type":48,"value":781},"Do not proceed to deployment with an unverified or incomplete design.",{"type":43,"tag":62,"props":783,"children":784},{},[785,790,792,797,798],{"type":43,"tag":164,"props":786,"children":787},{},[788],{"type":48,"value":789},"Iteration",{"type":48,"value":791},": Refine the design by feeding user feedback back into ",{"type":43,"tag":147,"props":793,"children":795},{"className":794},[],[796],{"type":48,"value":152},{"type":48,"value":705},{"type":43,"tag":200,"props":799,"children":800},{},[801,842,852],{"type":43,"tag":62,"props":802,"children":803},{},[804,809,811,815,817,821,823,828,830,834,836,841],{"type":43,"tag":164,"props":805,"children":806},{},[807],{"type":48,"value":808},"Design Iteration Constraints",{"type":48,"value":810},": When iterating on the design, ",{"type":43,"tag":164,"props":812,"children":813},{},[814],{"type":48,"value":451},{"type":48,"value":816}," make manual edits to the Terraform code. ",{"type":43,"tag":164,"props":818,"children":819},{},[820],{"type":48,"value":278},{"type":48,"value":822}," use ",{"type":43,"tag":147,"props":824,"children":826},{"className":825},[],[827],{"type":48,"value":152},{"type":48,"value":829}," tool exclusively to update the Terraform code.  ",{"type":43,"tag":164,"props":831,"children":832},{},[833],{"type":48,"value":278},{"type":48,"value":835}," keep the local Terraform code in sync with Terraform code returned from ",{"type":43,"tag":147,"props":837,"children":839},{"className":838},[],[840],{"type":48,"value":152},{"type":48,"value":325},{"type":43,"tag":62,"props":843,"children":844},{},[845,850],{"type":43,"tag":164,"props":846,"children":847},{},[848],{"type":48,"value":849},"Visualization Update",{"type":48,"value":851},": Update the Implementation Plan by re-rendering the Mermaid diagram and updating the Terraform configs.",{"type":43,"tag":62,"props":853,"children":854},{},[855,860,862,867,869,874,876,881],{"type":43,"tag":164,"props":856,"children":857},{},[858],{"type":48,"value":859},"Retries",{"type":48,"value":861},": After encountering transient errors and you need to retry ",{"type":43,"tag":147,"props":863,"children":865},{"className":864},[],[866],{"type":48,"value":152},{"type":48,"value":868}," calls, you ",{"type":43,"tag":164,"props":870,"children":871},{},[872],{"type":48,"value":873},"must make exactly the same call",{"type":48,"value":875}," with ",{"type":43,"tag":164,"props":877,"children":878},{},[879],{"type":48,"value":880},"same",{"type":48,"value":882}," arguments.",{"type":43,"tag":62,"props":884,"children":885},{},[886,891,892],{"type":43,"tag":164,"props":887,"children":888},{},[889],{"type":48,"value":890},"Exit Criteria",{"type":48,"value":367},{"type":43,"tag":200,"props":893,"children":894},{},[895,900,905],{"type":43,"tag":62,"props":896,"children":897},{},[898],{"type":48,"value":899},"Design fulfills all critical requirements and has resources needed by the application, especially the environment variables for each service.",{"type":43,"tag":62,"props":901,"children":902},{},[903],{"type":48,"value":904},"User confirms the design is satisfactory.",{"type":43,"tag":62,"props":906,"children":907},{},[908,913],{"type":43,"tag":147,"props":909,"children":911},{"className":910},[],[912],{"type":48,"value":152},{"type":48,"value":914}," reaches a stable state with no further architectural changes.",{"type":43,"tag":333,"props":916,"children":918},{"id":917},"phase-2-best-practices-assessment-design-iteration",[919],{"type":48,"value":98},{"type":43,"tag":141,"props":921,"children":922},{},[923,927],{"type":43,"tag":164,"props":924,"children":925},{},[926],{"type":48,"value":345},{"type":48,"value":928},": Validate design alignment with security, cost, and reliability benchmarks prior to deployment.",{"type":43,"tag":58,"props":930,"children":931},{},[932,950,967,1018,1066],{"type":43,"tag":62,"props":933,"children":934},{},[935,940,942,948],{"type":43,"tag":164,"props":936,"children":937},{},[938],{"type":48,"value":939},"Execution",{"type":48,"value":941},": Invoke ",{"type":43,"tag":147,"props":943,"children":945},{"className":944},[],[946],{"type":48,"value":947},"assess_best_practices",{"type":48,"value":949}," using the application template metadata (project, location, space and application template identifiers).",{"type":43,"tag":62,"props":951,"children":952},{},[953,958,960,965],{"type":43,"tag":164,"props":954,"children":955},{},[956],{"type":48,"value":957},"Analysis",{"type":48,"value":959},": You ",{"type":43,"tag":164,"props":961,"children":962},{},[963],{"type":48,"value":964},"MUST",{"type":48,"value":966}," present all findings to the user in a pretty tabular fashion per framework, detailing specific violations, and their associated severity levels - before proceeding to remediation.",{"type":43,"tag":62,"props":968,"children":969},{},[970,975,976],{"type":43,"tag":164,"props":971,"children":972},{},[973],{"type":48,"value":974},"Remediation Loop",{"type":48,"value":367},{"type":43,"tag":200,"props":977,"children":978},{},[979,991,1008,1013],{"type":43,"tag":62,"props":980,"children":981},{},[982,984,990],{"type":48,"value":983},"Pass identified findings as context to ",{"type":43,"tag":147,"props":985,"children":987},{"className":986},[],[988],{"type":48,"value":989},"gemini_cloud_assist:design_infra(command=\"manage_app_design\")",{"type":48,"value":325},{"type":43,"tag":62,"props":992,"children":993},{},[994,999,1001,1006],{"type":43,"tag":164,"props":995,"children":996},{},[997],{"type":48,"value":998},"Strict Constraint",{"type":48,"value":1000},": All modifications must be executed via the ",{"type":43,"tag":147,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":48,"value":152},{"type":48,"value":1007}," tool; manual Terraform manipulation is prohibited.",{"type":43,"tag":62,"props":1009,"children":1010},{},[1011],{"type":48,"value":1012},"Perform a diff-based comparison between current and updated Terraform code for user approval.",{"type":43,"tag":62,"props":1014,"children":1015},{},[1016],{"type":48,"value":1017},"Re-assess post-update to verify the resolution of findings.",{"type":43,"tag":62,"props":1019,"children":1020},{},[1021,1025,1026],{"type":43,"tag":164,"props":1022,"children":1023},{},[1024],{"type":48,"value":890},{"type":48,"value":367},{"type":43,"tag":200,"props":1027,"children":1028},{},[1029,1039,1056],{"type":43,"tag":62,"props":1030,"children":1031},{},[1032,1037],{"type":43,"tag":164,"props":1033,"children":1034},{},[1035],{"type":48,"value":1036},"Optimization",{"type":48,"value":1038},": Zero findings remaining.",{"type":43,"tag":62,"props":1040,"children":1041},{},[1042,1047,1049,1054],{"type":43,"tag":164,"props":1043,"children":1044},{},[1045],{"type":48,"value":1046},"Convergence",{"type":48,"value":1048},": ",{"type":43,"tag":147,"props":1050,"children":1052},{"className":1051},[],[1053],{"type":48,"value":152},{"type":48,"value":1055}," provides no further suggestions.",{"type":43,"tag":62,"props":1057,"children":1058},{},[1059,1064],{"type":43,"tag":164,"props":1060,"children":1061},{},[1062],{"type":48,"value":1063},"Threshold",{"type":48,"value":1065},": Maximum of three (3) iterative attempts reached.",{"type":43,"tag":62,"props":1067,"children":1068},{},[1069,1074],{"type":43,"tag":164,"props":1070,"children":1071},{},[1072],{"type":48,"value":1073},"Transition",{"type":48,"value":1075},": Proceed to Phase 3 deployment only upon loop termination.",{"type":43,"tag":333,"props":1077,"children":1079},{"id":1078},"phase-3-application-deployment",[1080],{"type":48,"value":107},{"type":43,"tag":141,"props":1082,"children":1083},{},[1084,1088],{"type":43,"tag":164,"props":1085,"children":1086},{},[1087],{"type":48,"value":345},{"type":48,"value":1089},": Deploy the application template to the GCP environment.",{"type":43,"tag":58,"props":1091,"children":1092},{},[1093,1486,1503],{"type":43,"tag":62,"props":1094,"children":1095},{},[1096,1101,1103,1109,1111,1117,1119],{"type":43,"tag":164,"props":1097,"children":1098},{},[1099],{"type":48,"value":1100},"Deploy Application",{"type":48,"value":1102},": Use the ",{"type":43,"tag":147,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":48,"value":1108},"application_design_center:manage_application",{"type":48,"value":1110}," tool with the ",{"type":43,"tag":147,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":48,"value":1116},"APPLICATION_OPERATION_DEPLOY",{"type":48,"value":1118}," operation to deploy the application.\n",{"type":43,"tag":200,"props":1120,"children":1121},{},[1122,1172,1182],{"type":43,"tag":62,"props":1123,"children":1124},{},[1125,1130,1131,1136,1137,1143,1144,1150,1151,1157,1158,1164,1165,1171],{"type":43,"tag":164,"props":1126,"children":1127},{},[1128],{"type":48,"value":1129},"Required Arguments",{"type":48,"value":1048},{"type":43,"tag":147,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":48,"value":593},{"type":48,"value":477},{"type":43,"tag":147,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":48,"value":1142},"location",{"type":48,"value":477},{"type":43,"tag":147,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":48,"value":1149},"spaceId",{"type":48,"value":477},{"type":43,"tag":147,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":48,"value":1156},"applicationTemplateUri",{"type":48,"value":477},{"type":43,"tag":147,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":48,"value":1163},"applicationId",{"type":48,"value":477},{"type":43,"tag":147,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":48,"value":1170},"serviceAccount",{"type":48,"value":325},{"type":43,"tag":62,"props":1173,"children":1174},{},[1175,1180],{"type":43,"tag":164,"props":1176,"children":1177},{},[1178],{"type":48,"value":1179},"Note",{"type":48,"value":1181},": This returns a Long-Running Operation (LRO). Inform the user that the deployment has started.",{"type":43,"tag":62,"props":1183,"children":1184},{},[1185,1190,1191],{"type":43,"tag":164,"props":1186,"children":1187},{},[1188],{"type":48,"value":1189},"Example",{"type":48,"value":367},{"type":43,"tag":1192,"props":1193,"children":1198},"pre",{"className":1194,"code":1195,"language":1196,"meta":1197,"style":1197},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"project\": \"my-project\",\n  \"location\": \"us-central1\",\n  \"spaceId\": \"my-space\",\n  \"applicationId\": \"my-app\",\n  \"operation\": \"APPLICATION_OPERATION_DEPLOY\",\n  \"applicationTemplateUri\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template\",\n  \"serviceAccount\": \"projects\u002Fmy-project\u002FserviceAccounts\u002Fdeployer@my-project.iam.gserviceaccount.com\"\n}\n","json","",[1199],{"type":43,"tag":147,"props":1200,"children":1201},{"__ignoreMap":1197},[1202,1214,1258,1295,1332,1369,1406,1443,1477],{"type":43,"tag":1203,"props":1204,"children":1207},"span",{"class":1205,"line":1206},"line",1,[1208],{"type":43,"tag":1203,"props":1209,"children":1211},{"style":1210},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1212],{"type":48,"value":1213},"{\n",{"type":43,"tag":1203,"props":1215,"children":1217},{"class":1205,"line":1216},2,[1218,1223,1228,1233,1238,1243,1249,1253],{"type":43,"tag":1203,"props":1219,"children":1220},{"style":1210},[1221],{"type":48,"value":1222},"  \"",{"type":43,"tag":1203,"props":1224,"children":1226},{"style":1225},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1227],{"type":48,"value":593},{"type":43,"tag":1203,"props":1229,"children":1230},{"style":1210},[1231],{"type":48,"value":1232},"\"",{"type":43,"tag":1203,"props":1234,"children":1235},{"style":1210},[1236],{"type":48,"value":1237},":",{"type":43,"tag":1203,"props":1239,"children":1240},{"style":1210},[1241],{"type":48,"value":1242}," \"",{"type":43,"tag":1203,"props":1244,"children":1246},{"style":1245},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1247],{"type":48,"value":1248},"my-project",{"type":43,"tag":1203,"props":1250,"children":1251},{"style":1210},[1252],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1254,"children":1255},{"style":1210},[1256],{"type":48,"value":1257},",\n",{"type":43,"tag":1203,"props":1259,"children":1261},{"class":1205,"line":1260},3,[1262,1266,1270,1274,1278,1282,1287,1291],{"type":43,"tag":1203,"props":1263,"children":1264},{"style":1210},[1265],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1267,"children":1268},{"style":1225},[1269],{"type":48,"value":1142},{"type":43,"tag":1203,"props":1271,"children":1272},{"style":1210},[1273],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1275,"children":1276},{"style":1210},[1277],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1279,"children":1280},{"style":1210},[1281],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1283,"children":1284},{"style":1245},[1285],{"type":48,"value":1286},"us-central1",{"type":43,"tag":1203,"props":1288,"children":1289},{"style":1210},[1290],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1292,"children":1293},{"style":1210},[1294],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1296,"children":1298},{"class":1205,"line":1297},4,[1299,1303,1307,1311,1315,1319,1324,1328],{"type":43,"tag":1203,"props":1300,"children":1301},{"style":1210},[1302],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1304,"children":1305},{"style":1225},[1306],{"type":48,"value":1149},{"type":43,"tag":1203,"props":1308,"children":1309},{"style":1210},[1310],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1312,"children":1313},{"style":1210},[1314],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1316,"children":1317},{"style":1210},[1318],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1320,"children":1321},{"style":1245},[1322],{"type":48,"value":1323},"my-space",{"type":43,"tag":1203,"props":1325,"children":1326},{"style":1210},[1327],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1329,"children":1330},{"style":1210},[1331],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1333,"children":1335},{"class":1205,"line":1334},5,[1336,1340,1344,1348,1352,1356,1361,1365],{"type":43,"tag":1203,"props":1337,"children":1338},{"style":1210},[1339],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1341,"children":1342},{"style":1225},[1343],{"type":48,"value":1163},{"type":43,"tag":1203,"props":1345,"children":1346},{"style":1210},[1347],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1349,"children":1350},{"style":1210},[1351],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1353,"children":1354},{"style":1210},[1355],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1357,"children":1358},{"style":1245},[1359],{"type":48,"value":1360},"my-app",{"type":43,"tag":1203,"props":1362,"children":1363},{"style":1210},[1364],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1366,"children":1367},{"style":1210},[1368],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1370,"children":1372},{"class":1205,"line":1371},6,[1373,1377,1382,1386,1390,1394,1398,1402],{"type":43,"tag":1203,"props":1374,"children":1375},{"style":1210},[1376],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1378,"children":1379},{"style":1225},[1380],{"type":48,"value":1381},"operation",{"type":43,"tag":1203,"props":1383,"children":1384},{"style":1210},[1385],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1387,"children":1388},{"style":1210},[1389],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1391,"children":1392},{"style":1210},[1393],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1395,"children":1396},{"style":1245},[1397],{"type":48,"value":1116},{"type":43,"tag":1203,"props":1399,"children":1400},{"style":1210},[1401],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1403,"children":1404},{"style":1210},[1405],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1407,"children":1409},{"class":1205,"line":1408},7,[1410,1414,1418,1422,1426,1430,1435,1439],{"type":43,"tag":1203,"props":1411,"children":1412},{"style":1210},[1413],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1415,"children":1416},{"style":1225},[1417],{"type":48,"value":1156},{"type":43,"tag":1203,"props":1419,"children":1420},{"style":1210},[1421],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1423,"children":1424},{"style":1210},[1425],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1427,"children":1428},{"style":1210},[1429],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1431,"children":1432},{"style":1245},[1433],{"type":48,"value":1434},"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template",{"type":43,"tag":1203,"props":1436,"children":1437},{"style":1210},[1438],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1440,"children":1441},{"style":1210},[1442],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1444,"children":1446},{"class":1205,"line":1445},8,[1447,1451,1455,1459,1463,1467,1472],{"type":43,"tag":1203,"props":1448,"children":1449},{"style":1210},[1450],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1452,"children":1453},{"style":1225},[1454],{"type":48,"value":1170},{"type":43,"tag":1203,"props":1456,"children":1457},{"style":1210},[1458],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1460,"children":1461},{"style":1210},[1462],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1464,"children":1465},{"style":1210},[1466],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1468,"children":1469},{"style":1245},[1470],{"type":48,"value":1471},"projects\u002Fmy-project\u002FserviceAccounts\u002Fdeployer@my-project.iam.gserviceaccount.com",{"type":43,"tag":1203,"props":1473,"children":1474},{"style":1210},[1475],{"type":48,"value":1476},"\"\n",{"type":43,"tag":1203,"props":1478,"children":1480},{"class":1205,"line":1479},9,[1481],{"type":43,"tag":1203,"props":1482,"children":1483},{"style":1210},[1484],{"type":48,"value":1485},"}\n",{"type":43,"tag":62,"props":1487,"children":1488},{},[1489,1494,1496,1502],{"type":43,"tag":164,"props":1490,"children":1491},{},[1492],{"type":48,"value":1493},"Monitor Deployment",{"type":48,"value":1495},": Repeatedly poll the LRO (e.g., every 30-60 seconds) until ",{"type":43,"tag":147,"props":1497,"children":1499},{"className":1498},[],[1500],{"type":48,"value":1501},"done: true",{"type":48,"value":325},{"type":43,"tag":62,"props":1504,"children":1505},{},[1506,1511,1512],{"type":43,"tag":164,"props":1507,"children":1508},{},[1509],{"type":48,"value":1510},"Handle Results",{"type":48,"value":367},{"type":43,"tag":200,"props":1513,"children":1514},{},[1515,1548],{"type":43,"tag":62,"props":1516,"children":1517},{},[1518,1523,1525,1531,1532,1538,1540,1546],{"type":43,"tag":164,"props":1519,"children":1520},{},[1521],{"type":48,"value":1522},"Success",{"type":48,"value":1524},": If ",{"type":43,"tag":147,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":48,"value":1530},"done",{"type":48,"value":595},{"type":43,"tag":147,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":48,"value":1537},"true",{"type":48,"value":1539}," and there is no ",{"type":43,"tag":147,"props":1541,"children":1543},{"className":1542},[],[1544],{"type":48,"value":1545},"error",{"type":48,"value":1547}," field, proceed to Phase 4.",{"type":43,"tag":62,"props":1549,"children":1550},{},[1551,1556,1558,1563],{"type":43,"tag":164,"props":1552,"children":1553},{},[1554],{"type":48,"value":1555},"Failure",{"type":48,"value":1557},": If an ",{"type":43,"tag":147,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":48,"value":1545},{"type":48,"value":1564}," field is present, proceed to Phase 5.",{"type":43,"tag":333,"props":1566,"children":1568},{"id":1567},"phase-4-get-deployed-resources",[1569],{"type":48,"value":116},{"type":43,"tag":58,"props":1571,"children":1572},{},[1573,1825],{"type":43,"tag":62,"props":1574,"children":1575},{},[1576,1581,1583,1588,1589,1595,1597,1602,1603,1608,1609,1614,1615,1620,1622],{"type":43,"tag":164,"props":1577,"children":1578},{},[1579],{"type":48,"value":1580},"Retrieve Information",{"type":48,"value":1582},": Call the ",{"type":43,"tag":147,"props":1584,"children":1586},{"className":1585},[],[1587],{"type":48,"value":1108},{"type":48,"value":1110},{"type":43,"tag":147,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":48,"value":1594},"APPLICATION_OPERATION_GET",{"type":48,"value":1596}," operation, providing ",{"type":43,"tag":147,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":48,"value":593},{"type":48,"value":477},{"type":43,"tag":147,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":48,"value":1142},{"type":48,"value":477},{"type":43,"tag":147,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":48,"value":1149},{"type":48,"value":154},{"type":43,"tag":147,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":48,"value":1163},{"type":48,"value":1621},", to fetch the outputs and status of the deployed resources.\n",{"type":43,"tag":200,"props":1623,"children":1624},{},[1625],{"type":43,"tag":62,"props":1626,"children":1627},{},[1628,1632,1633],{"type":43,"tag":164,"props":1629,"children":1630},{},[1631],{"type":48,"value":1189},{"type":48,"value":367},{"type":43,"tag":1192,"props":1634,"children":1636},{"className":1194,"code":1635,"language":1196,"meta":1197,"style":1197},"{\n  \"project\": \"my-project\",\n  \"location\": \"us-central1\",\n  \"spaceId\": \"my-space\",\n  \"applicationId\": \"my-app\",\n  \"operation\": \"APPLICATION_OPERATION_GET\"\n}\n",[1637],{"type":43,"tag":147,"props":1638,"children":1639},{"__ignoreMap":1197},[1640,1647,1682,1717,1752,1787,1818],{"type":43,"tag":1203,"props":1641,"children":1642},{"class":1205,"line":1206},[1643],{"type":43,"tag":1203,"props":1644,"children":1645},{"style":1210},[1646],{"type":48,"value":1213},{"type":43,"tag":1203,"props":1648,"children":1649},{"class":1205,"line":1216},[1650,1654,1658,1662,1666,1670,1674,1678],{"type":43,"tag":1203,"props":1651,"children":1652},{"style":1210},[1653],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1655,"children":1656},{"style":1225},[1657],{"type":48,"value":593},{"type":43,"tag":1203,"props":1659,"children":1660},{"style":1210},[1661],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1663,"children":1664},{"style":1210},[1665],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1667,"children":1668},{"style":1210},[1669],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1671,"children":1672},{"style":1245},[1673],{"type":48,"value":1248},{"type":43,"tag":1203,"props":1675,"children":1676},{"style":1210},[1677],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1679,"children":1680},{"style":1210},[1681],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1683,"children":1684},{"class":1205,"line":1260},[1685,1689,1693,1697,1701,1705,1709,1713],{"type":43,"tag":1203,"props":1686,"children":1687},{"style":1210},[1688],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1690,"children":1691},{"style":1225},[1692],{"type":48,"value":1142},{"type":43,"tag":1203,"props":1694,"children":1695},{"style":1210},[1696],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1698,"children":1699},{"style":1210},[1700],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1702,"children":1703},{"style":1210},[1704],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1706,"children":1707},{"style":1245},[1708],{"type":48,"value":1286},{"type":43,"tag":1203,"props":1710,"children":1711},{"style":1210},[1712],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1714,"children":1715},{"style":1210},[1716],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1718,"children":1719},{"class":1205,"line":1297},[1720,1724,1728,1732,1736,1740,1744,1748],{"type":43,"tag":1203,"props":1721,"children":1722},{"style":1210},[1723],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1725,"children":1726},{"style":1225},[1727],{"type":48,"value":1149},{"type":43,"tag":1203,"props":1729,"children":1730},{"style":1210},[1731],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1733,"children":1734},{"style":1210},[1735],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1737,"children":1738},{"style":1210},[1739],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1741,"children":1742},{"style":1245},[1743],{"type":48,"value":1323},{"type":43,"tag":1203,"props":1745,"children":1746},{"style":1210},[1747],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1749,"children":1750},{"style":1210},[1751],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1753,"children":1754},{"class":1205,"line":1334},[1755,1759,1763,1767,1771,1775,1779,1783],{"type":43,"tag":1203,"props":1756,"children":1757},{"style":1210},[1758],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1760,"children":1761},{"style":1225},[1762],{"type":48,"value":1163},{"type":43,"tag":1203,"props":1764,"children":1765},{"style":1210},[1766],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1768,"children":1769},{"style":1210},[1770],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1772,"children":1773},{"style":1210},[1774],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1776,"children":1777},{"style":1245},[1778],{"type":48,"value":1360},{"type":43,"tag":1203,"props":1780,"children":1781},{"style":1210},[1782],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1784,"children":1785},{"style":1210},[1786],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1788,"children":1789},{"class":1205,"line":1371},[1790,1794,1798,1802,1806,1810,1814],{"type":43,"tag":1203,"props":1791,"children":1792},{"style":1210},[1793],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1795,"children":1796},{"style":1225},[1797],{"type":48,"value":1381},{"type":43,"tag":1203,"props":1799,"children":1800},{"style":1210},[1801],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1803,"children":1804},{"style":1210},[1805],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1807,"children":1808},{"style":1210},[1809],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1811,"children":1812},{"style":1245},[1813],{"type":48,"value":1594},{"type":43,"tag":1203,"props":1815,"children":1816},{"style":1210},[1817],{"type":48,"value":1476},{"type":43,"tag":1203,"props":1819,"children":1820},{"class":1205,"line":1408},[1821],{"type":43,"tag":1203,"props":1822,"children":1823},{"style":1210},[1824],{"type":48,"value":1485},{"type":43,"tag":62,"props":1826,"children":1827},{},[1828,1833],{"type":43,"tag":164,"props":1829,"children":1830},{},[1831],{"type":48,"value":1832},"User Confirmation",{"type":48,"value":1834},": Present the deployed resource information to the user and conclude the task.",{"type":43,"tag":333,"props":1836,"children":1838},{"id":1837},"phase-5-troubleshoot-deployment-failures",[1839],{"type":48,"value":125},{"type":43,"tag":141,"props":1841,"children":1842},{},[1843,1847,1849],{"type":43,"tag":164,"props":1844,"children":1845},{},[1846],{"type":48,"value":345},{"type":48,"value":1848},": Diagnose and remediate deployment failures iteratively.\nWhen troubleshooting a failed application, follow these steps.\n",{"type":43,"tag":164,"props":1850,"children":1851},{},[1852],{"type":48,"value":1853},"Process:",{"type":43,"tag":58,"props":1855,"children":1856},{},[1857,2476,2515,3362,3453],{"type":43,"tag":62,"props":1858,"children":1859},{},[1860,1865],{"type":43,"tag":164,"props":1861,"children":1862},{},[1863],{"type":48,"value":1864},"Initiate Troubleshooting:",{"type":43,"tag":200,"props":1866,"children":1867},{},[1868,1892,1897],{"type":43,"tag":62,"props":1869,"children":1870},{},[1871,1876,1878,1883,1884,1890],{"type":43,"tag":164,"props":1872,"children":1873},{},[1874],{"type":48,"value":1875},"Action:",{"type":48,"value":1877}," Call ",{"type":43,"tag":147,"props":1879,"children":1881},{"className":1880},[],[1882],{"type":48,"value":152},{"type":48,"value":875},{"type":43,"tag":147,"props":1885,"children":1887},{"className":1886},[],[1888],{"type":48,"value":1889},"applicationUri",{"type":48,"value":1891}," (format: projects\u002F{project}\u002Flocations\u002F{location}\u002Fspaces\u002F{spaceId}\u002Fapplications\u002F{applicationId}) to get suggested fixes.",{"type":43,"tag":62,"props":1893,"children":1894},{},[1895],{"type":48,"value":1896},"Convert the returned response to JSON. The value of a parameter may be a JSON string that needs to be parsed.",{"type":43,"tag":62,"props":1898,"children":1899},{},[1900,1905],{"type":43,"tag":164,"props":1901,"children":1902},{},[1903],{"type":48,"value":1904},"Expected Output Structure from Troubleshooting:",{"type":43,"tag":1192,"props":1906,"children":1908},{"className":1194,"code":1907,"language":1196,"meta":1197,"style":1197},"{\n  \"summary\": \"...\",\n  \"troubleshootingSteps\": [\n    {\n      \"description\": \"...\",\n      \"gcloud_commands\": [\"gcloud ...\"],\n      \"componentParameters\": null\n    },\n    {\n      \"description\": \"...\",\n      \"gcloud_commands\": null,\n      \"componentParameters\": [\n        {\n          \"componentUri\": \"projects\u002F...\u002Fcomponents\u002Fcomp-a\",\n          \"parameters\": [\n            { \"key\": \"param1\", \"value\": \"new_value\" },\n            { \"key\": \"param3\", \"value\": \"another\" }\n          ]\n        }\n      ]\n    }\n  ]\n}\n",[1909],{"type":43,"tag":147,"props":1910,"children":1911},{"__ignoreMap":1197},[1912,1919,1956,1981,1989,2027,2070,2095,2103,2110,2146,2171,2195,2204,2244,2269,2349,2424,2433,2441,2450,2459,2468],{"type":43,"tag":1203,"props":1913,"children":1914},{"class":1205,"line":1206},[1915],{"type":43,"tag":1203,"props":1916,"children":1917},{"style":1210},[1918],{"type":48,"value":1213},{"type":43,"tag":1203,"props":1920,"children":1921},{"class":1205,"line":1216},[1922,1926,1931,1935,1939,1943,1948,1952],{"type":43,"tag":1203,"props":1923,"children":1924},{"style":1210},[1925],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1927,"children":1928},{"style":1225},[1929],{"type":48,"value":1930},"summary",{"type":43,"tag":1203,"props":1932,"children":1933},{"style":1210},[1934],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1936,"children":1937},{"style":1210},[1938],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1940,"children":1941},{"style":1210},[1942],{"type":48,"value":1242},{"type":43,"tag":1203,"props":1944,"children":1945},{"style":1245},[1946],{"type":48,"value":1947},"...",{"type":43,"tag":1203,"props":1949,"children":1950},{"style":1210},[1951],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1953,"children":1954},{"style":1210},[1955],{"type":48,"value":1257},{"type":43,"tag":1203,"props":1957,"children":1958},{"class":1205,"line":1260},[1959,1963,1968,1972,1976],{"type":43,"tag":1203,"props":1960,"children":1961},{"style":1210},[1962],{"type":48,"value":1222},{"type":43,"tag":1203,"props":1964,"children":1965},{"style":1225},[1966],{"type":48,"value":1967},"troubleshootingSteps",{"type":43,"tag":1203,"props":1969,"children":1970},{"style":1210},[1971],{"type":48,"value":1232},{"type":43,"tag":1203,"props":1973,"children":1974},{"style":1210},[1975],{"type":48,"value":1237},{"type":43,"tag":1203,"props":1977,"children":1978},{"style":1210},[1979],{"type":48,"value":1980}," [\n",{"type":43,"tag":1203,"props":1982,"children":1983},{"class":1205,"line":1297},[1984],{"type":43,"tag":1203,"props":1985,"children":1986},{"style":1210},[1987],{"type":48,"value":1988},"    {\n",{"type":43,"tag":1203,"props":1990,"children":1991},{"class":1205,"line":1334},[1992,1997,2003,2007,2011,2015,2019,2023],{"type":43,"tag":1203,"props":1993,"children":1994},{"style":1210},[1995],{"type":48,"value":1996},"      \"",{"type":43,"tag":1203,"props":1998,"children":2000},{"style":1999},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2001],{"type":48,"value":2002},"description",{"type":43,"tag":1203,"props":2004,"children":2005},{"style":1210},[2006],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2008,"children":2009},{"style":1210},[2010],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2012,"children":2013},{"style":1210},[2014],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2016,"children":2017},{"style":1245},[2018],{"type":48,"value":1947},{"type":43,"tag":1203,"props":2020,"children":2021},{"style":1210},[2022],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2024,"children":2025},{"style":1210},[2026],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2028,"children":2029},{"class":1205,"line":1371},[2030,2034,2039,2043,2047,2052,2056,2061,2065],{"type":43,"tag":1203,"props":2031,"children":2032},{"style":1210},[2033],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2035,"children":2036},{"style":1999},[2037],{"type":48,"value":2038},"gcloud_commands",{"type":43,"tag":1203,"props":2040,"children":2041},{"style":1210},[2042],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2044,"children":2045},{"style":1210},[2046],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2048,"children":2049},{"style":1210},[2050],{"type":48,"value":2051}," [",{"type":43,"tag":1203,"props":2053,"children":2054},{"style":1210},[2055],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2057,"children":2058},{"style":1245},[2059],{"type":48,"value":2060},"gcloud ...",{"type":43,"tag":1203,"props":2062,"children":2063},{"style":1210},[2064],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2066,"children":2067},{"style":1210},[2068],{"type":48,"value":2069},"],\n",{"type":43,"tag":1203,"props":2071,"children":2072},{"class":1205,"line":1408},[2073,2077,2082,2086,2090],{"type":43,"tag":1203,"props":2074,"children":2075},{"style":1210},[2076],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2078,"children":2079},{"style":1999},[2080],{"type":48,"value":2081},"componentParameters",{"type":43,"tag":1203,"props":2083,"children":2084},{"style":1210},[2085],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2087,"children":2088},{"style":1210},[2089],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2091,"children":2092},{"style":1210},[2093],{"type":48,"value":2094}," null\n",{"type":43,"tag":1203,"props":2096,"children":2097},{"class":1205,"line":1445},[2098],{"type":43,"tag":1203,"props":2099,"children":2100},{"style":1210},[2101],{"type":48,"value":2102},"    },\n",{"type":43,"tag":1203,"props":2104,"children":2105},{"class":1205,"line":1479},[2106],{"type":43,"tag":1203,"props":2107,"children":2108},{"style":1210},[2109],{"type":48,"value":1988},{"type":43,"tag":1203,"props":2111,"children":2113},{"class":1205,"line":2112},10,[2114,2118,2122,2126,2130,2134,2138,2142],{"type":43,"tag":1203,"props":2115,"children":2116},{"style":1210},[2117],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2119,"children":2120},{"style":1999},[2121],{"type":48,"value":2002},{"type":43,"tag":1203,"props":2123,"children":2124},{"style":1210},[2125],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2127,"children":2128},{"style":1210},[2129],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2131,"children":2132},{"style":1210},[2133],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2135,"children":2136},{"style":1245},[2137],{"type":48,"value":1947},{"type":43,"tag":1203,"props":2139,"children":2140},{"style":1210},[2141],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2143,"children":2144},{"style":1210},[2145],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2147,"children":2149},{"class":1205,"line":2148},11,[2150,2154,2158,2162,2166],{"type":43,"tag":1203,"props":2151,"children":2152},{"style":1210},[2153],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2155,"children":2156},{"style":1999},[2157],{"type":48,"value":2038},{"type":43,"tag":1203,"props":2159,"children":2160},{"style":1210},[2161],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2163,"children":2164},{"style":1210},[2165],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2167,"children":2168},{"style":1210},[2169],{"type":48,"value":2170}," null,\n",{"type":43,"tag":1203,"props":2172,"children":2174},{"class":1205,"line":2173},12,[2175,2179,2183,2187,2191],{"type":43,"tag":1203,"props":2176,"children":2177},{"style":1210},[2178],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2180,"children":2181},{"style":1999},[2182],{"type":48,"value":2081},{"type":43,"tag":1203,"props":2184,"children":2185},{"style":1210},[2186],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2188,"children":2189},{"style":1210},[2190],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2192,"children":2193},{"style":1210},[2194],{"type":48,"value":1980},{"type":43,"tag":1203,"props":2196,"children":2198},{"class":1205,"line":2197},13,[2199],{"type":43,"tag":1203,"props":2200,"children":2201},{"style":1210},[2202],{"type":48,"value":2203},"        {\n",{"type":43,"tag":1203,"props":2205,"children":2207},{"class":1205,"line":2206},14,[2208,2213,2219,2223,2227,2231,2236,2240],{"type":43,"tag":1203,"props":2209,"children":2210},{"style":1210},[2211],{"type":48,"value":2212},"          \"",{"type":43,"tag":1203,"props":2214,"children":2216},{"style":2215},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2217],{"type":48,"value":2218},"componentUri",{"type":43,"tag":1203,"props":2220,"children":2221},{"style":1210},[2222],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2224,"children":2225},{"style":1210},[2226],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2228,"children":2229},{"style":1210},[2230],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2232,"children":2233},{"style":1245},[2234],{"type":48,"value":2235},"projects\u002F...\u002Fcomponents\u002Fcomp-a",{"type":43,"tag":1203,"props":2237,"children":2238},{"style":1210},[2239],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2241,"children":2242},{"style":1210},[2243],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2245,"children":2247},{"class":1205,"line":2246},15,[2248,2252,2257,2261,2265],{"type":43,"tag":1203,"props":2249,"children":2250},{"style":1210},[2251],{"type":48,"value":2212},{"type":43,"tag":1203,"props":2253,"children":2254},{"style":2215},[2255],{"type":48,"value":2256},"parameters",{"type":43,"tag":1203,"props":2258,"children":2259},{"style":1210},[2260],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2262,"children":2263},{"style":1210},[2264],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2266,"children":2267},{"style":1210},[2268],{"type":48,"value":1980},{"type":43,"tag":1203,"props":2270,"children":2272},{"class":1205,"line":2271},16,[2273,2278,2282,2288,2292,2296,2300,2305,2309,2314,2318,2323,2327,2331,2335,2340,2344],{"type":43,"tag":1203,"props":2274,"children":2275},{"style":1210},[2276],{"type":48,"value":2277},"            {",{"type":43,"tag":1203,"props":2279,"children":2280},{"style":1210},[2281],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2283,"children":2285},{"style":2284},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2286],{"type":48,"value":2287},"key",{"type":43,"tag":1203,"props":2289,"children":2290},{"style":1210},[2291],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2293,"children":2294},{"style":1210},[2295],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2297,"children":2298},{"style":1210},[2299],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2301,"children":2302},{"style":1245},[2303],{"type":48,"value":2304},"param1",{"type":43,"tag":1203,"props":2306,"children":2307},{"style":1210},[2308],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2310,"children":2311},{"style":1210},[2312],{"type":48,"value":2313},",",{"type":43,"tag":1203,"props":2315,"children":2316},{"style":1210},[2317],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2319,"children":2320},{"style":2284},[2321],{"type":48,"value":2322},"value",{"type":43,"tag":1203,"props":2324,"children":2325},{"style":1210},[2326],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2328,"children":2329},{"style":1210},[2330],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2332,"children":2333},{"style":1210},[2334],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2336,"children":2337},{"style":1245},[2338],{"type":48,"value":2339},"new_value",{"type":43,"tag":1203,"props":2341,"children":2342},{"style":1210},[2343],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2345,"children":2346},{"style":1210},[2347],{"type":48,"value":2348}," },\n",{"type":43,"tag":1203,"props":2350,"children":2352},{"class":1205,"line":2351},17,[2353,2357,2361,2365,2369,2373,2377,2382,2386,2390,2394,2398,2402,2406,2410,2415,2419],{"type":43,"tag":1203,"props":2354,"children":2355},{"style":1210},[2356],{"type":48,"value":2277},{"type":43,"tag":1203,"props":2358,"children":2359},{"style":1210},[2360],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2362,"children":2363},{"style":2284},[2364],{"type":48,"value":2287},{"type":43,"tag":1203,"props":2366,"children":2367},{"style":1210},[2368],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2370,"children":2371},{"style":1210},[2372],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2374,"children":2375},{"style":1210},[2376],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2378,"children":2379},{"style":1245},[2380],{"type":48,"value":2381},"param3",{"type":43,"tag":1203,"props":2383,"children":2384},{"style":1210},[2385],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2387,"children":2388},{"style":1210},[2389],{"type":48,"value":2313},{"type":43,"tag":1203,"props":2391,"children":2392},{"style":1210},[2393],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2395,"children":2396},{"style":2284},[2397],{"type":48,"value":2322},{"type":43,"tag":1203,"props":2399,"children":2400},{"style":1210},[2401],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2403,"children":2404},{"style":1210},[2405],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2407,"children":2408},{"style":1210},[2409],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2411,"children":2412},{"style":1245},[2413],{"type":48,"value":2414},"another",{"type":43,"tag":1203,"props":2416,"children":2417},{"style":1210},[2418],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2420,"children":2421},{"style":1210},[2422],{"type":48,"value":2423}," }\n",{"type":43,"tag":1203,"props":2425,"children":2427},{"class":1205,"line":2426},18,[2428],{"type":43,"tag":1203,"props":2429,"children":2430},{"style":1210},[2431],{"type":48,"value":2432},"          ]\n",{"type":43,"tag":1203,"props":2434,"children":2435},{"class":1205,"line":28},[2436],{"type":43,"tag":1203,"props":2437,"children":2438},{"style":1210},[2439],{"type":48,"value":2440},"        }\n",{"type":43,"tag":1203,"props":2442,"children":2444},{"class":1205,"line":2443},20,[2445],{"type":43,"tag":1203,"props":2446,"children":2447},{"style":1210},[2448],{"type":48,"value":2449},"      ]\n",{"type":43,"tag":1203,"props":2451,"children":2453},{"class":1205,"line":2452},21,[2454],{"type":43,"tag":1203,"props":2455,"children":2456},{"style":1210},[2457],{"type":48,"value":2458},"    }\n",{"type":43,"tag":1203,"props":2460,"children":2462},{"class":1205,"line":2461},22,[2463],{"type":43,"tag":1203,"props":2464,"children":2465},{"style":1210},[2466],{"type":48,"value":2467},"  ]\n",{"type":43,"tag":1203,"props":2469,"children":2471},{"class":1205,"line":2470},23,[2472],{"type":43,"tag":1203,"props":2473,"children":2474},{"style":1210},[2475],{"type":48,"value":1485},{"type":43,"tag":62,"props":2477,"children":2478},{},[2479,2484,2486,2492,2494,2499,2501,2506,2507,2513],{"type":43,"tag":164,"props":2480,"children":2481},{},[2482],{"type":48,"value":2483},"Analyze Troubleshooting Steps",{"type":48,"value":2485},": Iterate through each ",{"type":43,"tag":147,"props":2487,"children":2489},{"className":2488},[],[2490],{"type":48,"value":2491},"step",{"type":48,"value":2493}," in ",{"type":43,"tag":147,"props":2495,"children":2497},{"className":2496},[],[2498],{"type":48,"value":1967},{"type":48,"value":2500},". Identify if ",{"type":43,"tag":147,"props":2502,"children":2504},{"className":2503},[],[2505],{"type":48,"value":2038},{"type":48,"value":666},{"type":43,"tag":147,"props":2508,"children":2510},{"className":2509},[],[2511],{"type":48,"value":2512},"component_parameters",{"type":48,"value":2514}," are provided.",{"type":43,"tag":62,"props":2516,"children":2517},{},[2518,2523,2524],{"type":43,"tag":164,"props":2519,"children":2520},{},[2521],{"type":48,"value":2522},"Update Application Template",{"type":48,"value":367},{"type":43,"tag":200,"props":2525,"children":2526},{},[2527],{"type":43,"tag":62,"props":2528,"children":2529},{},[2530,2542,2543],{"type":43,"tag":164,"props":2531,"children":2532},{},[2533,2535,2540],{"type":48,"value":2534},"If ",{"type":43,"tag":147,"props":2536,"children":2538},{"className":2537},[],[2539],{"type":48,"value":2512},{"type":48,"value":2541}," updates are suggested",{"type":48,"value":367},{"type":43,"tag":58,"props":2544,"children":2545},{},[2546,2574,2654],{"type":43,"tag":62,"props":2547,"children":2548},{},[2549,2551,2557,2559,2565,2567,2572],{"type":48,"value":2550},"Get the ",{"type":43,"tag":147,"props":2552,"children":2554},{"className":2553},[],[2555],{"type":48,"value":2556},"application_template_id",{"type":48,"value":2558}," from the Application object obtained in Step 2. The value is present at ",{"type":43,"tag":147,"props":2560,"children":2562},{"className":2561},[],[2563],{"type":48,"value":2564},"serialized_application_template.uri",{"type":48,"value":2566},". Get the ",{"type":43,"tag":147,"props":2568,"children":2570},{"className":2569},[],[2571],{"type":48,"value":2556},{"type":48,"value":2573}," from the uri.",{"type":43,"tag":62,"props":2575,"children":2576},{},[2577,2581,2582,2588,2589,2595,2596],{"type":43,"tag":164,"props":2578,"children":2579},{},[2580],{"type":48,"value":2522},{"type":48,"value":572},{"type":43,"tag":147,"props":2583,"children":2585},{"className":2584},[],[2586],{"type":48,"value":2587},"application_design_center:manage_application_template",{"type":48,"value":875},{"type":43,"tag":147,"props":2590,"children":2592},{"className":2591},[],[2593],{"type":48,"value":2594},"APPLICATION_TEMPLATE_OPERATION_UPDATE_COMPONENT_PARAMETERS",{"type":48,"value":705},{"type":43,"tag":200,"props":2597,"children":2598},{},[2599,2613],{"type":43,"tag":62,"props":2600,"children":2601},{},[2602,2607,2608],{"type":43,"tag":164,"props":2603,"children":2604},{},[2605],{"type":48,"value":2606},"Tool",{"type":48,"value":1048},{"type":43,"tag":147,"props":2609,"children":2611},{"className":2610},[],[2612],{"type":48,"value":2587},{"type":43,"tag":62,"props":2614,"children":2615},{},[2616,2621,2622,2628,2629,2635,2636,2641,2642,2647,2649],{"type":43,"tag":164,"props":2617,"children":2618},{},[2619],{"type":48,"value":2620},"Arguments",{"type":48,"value":1048},{"type":43,"tag":147,"props":2623,"children":2625},{"className":2624},[],[2626],{"type":48,"value":2627},"parent",{"type":48,"value":477},{"type":43,"tag":147,"props":2630,"children":2632},{"className":2631},[],[2633],{"type":48,"value":2634},"applicationTemplateId",{"type":48,"value":477},{"type":43,"tag":147,"props":2637,"children":2639},{"className":2638},[],[2640],{"type":48,"value":2081},{"type":48,"value":477},{"type":43,"tag":147,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":48,"value":1381},{"type":48,"value":2648}," - ",{"type":43,"tag":147,"props":2650,"children":2652},{"className":2651},[],[2653],{"type":48,"value":2594},{"type":43,"tag":62,"props":2655,"children":2656},{},[2657,2661,2662],{"type":43,"tag":164,"props":2658,"children":2659},{},[2660],{"type":48,"value":1189},{"type":48,"value":367},{"type":43,"tag":1192,"props":2663,"children":2665},{"className":1194,"code":2664,"language":1196,"meta":1197,"style":1197},"{\n  \"applicationTemplateId\": \"my-template\",\n  \"componentParameters\": [\n    {\n      \"component\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template\u002Fcomponents\u002Fcloud-run-1\",\n      \"parameters\": [\n        {\n          \"key\": \"containers\",\n          \"value\": [\n            {\n              \"container_image\": \"us-docker.pkg.dev\u002Fcloudrun\u002Fcontainer\u002Fhello\",\n              \"container_name\": \"service-container\",\n              \"ports\": {\n                \"container_port\": 8080,\n                \"name\": \"http1\"\n              },\n              \"resources\": {\n                \"cpu_idle\": false,\n                \"limits\": {\n                  \"cpu\": \"4\",\n                  \"memory\": \"16Gi\"\n                },\n                \"startup_cpu_boost\": false\n              }\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"operation\": \"APPLICATION_TEMPLATE_OPERATION_UPDATE_COMPONENT_PARAMETERS\",\n  \"parent\": \"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\"\n}\n",[2666],{"type":43,"tag":147,"props":2667,"children":2668},{"__ignoreMap":1197},[2669,2676,2712,2735,2742,2779,2802,2809,2845,2868,2876,2914,2951,2976,3007,3040,3048,3072,3097,3121,3160,3193,3201,3226,3235,3244,3252,3260,3268,3276,3285,3321,3354],{"type":43,"tag":1203,"props":2670,"children":2671},{"class":1205,"line":1206},[2672],{"type":43,"tag":1203,"props":2673,"children":2674},{"style":1210},[2675],{"type":48,"value":1213},{"type":43,"tag":1203,"props":2677,"children":2678},{"class":1205,"line":1216},[2679,2683,2687,2691,2695,2699,2704,2708],{"type":43,"tag":1203,"props":2680,"children":2681},{"style":1210},[2682],{"type":48,"value":1222},{"type":43,"tag":1203,"props":2684,"children":2685},{"style":1225},[2686],{"type":48,"value":2634},{"type":43,"tag":1203,"props":2688,"children":2689},{"style":1210},[2690],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2692,"children":2693},{"style":1210},[2694],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2696,"children":2697},{"style":1210},[2698],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2700,"children":2701},{"style":1245},[2702],{"type":48,"value":2703},"my-template",{"type":43,"tag":1203,"props":2705,"children":2706},{"style":1210},[2707],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2709,"children":2710},{"style":1210},[2711],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2713,"children":2714},{"class":1205,"line":1260},[2715,2719,2723,2727,2731],{"type":43,"tag":1203,"props":2716,"children":2717},{"style":1210},[2718],{"type":48,"value":1222},{"type":43,"tag":1203,"props":2720,"children":2721},{"style":1225},[2722],{"type":48,"value":2081},{"type":43,"tag":1203,"props":2724,"children":2725},{"style":1210},[2726],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2728,"children":2729},{"style":1210},[2730],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2732,"children":2733},{"style":1210},[2734],{"type":48,"value":1980},{"type":43,"tag":1203,"props":2736,"children":2737},{"class":1205,"line":1297},[2738],{"type":43,"tag":1203,"props":2739,"children":2740},{"style":1210},[2741],{"type":48,"value":1988},{"type":43,"tag":1203,"props":2743,"children":2744},{"class":1205,"line":1334},[2745,2749,2754,2758,2762,2766,2771,2775],{"type":43,"tag":1203,"props":2746,"children":2747},{"style":1210},[2748],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2750,"children":2751},{"style":1999},[2752],{"type":48,"value":2753},"component",{"type":43,"tag":1203,"props":2755,"children":2756},{"style":1210},[2757],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2759,"children":2760},{"style":1210},[2761],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2763,"children":2764},{"style":1210},[2765],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2767,"children":2768},{"style":1245},[2769],{"type":48,"value":2770},"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space\u002FapplicationTemplates\u002Fmy-template\u002Fcomponents\u002Fcloud-run-1",{"type":43,"tag":1203,"props":2772,"children":2773},{"style":1210},[2774],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2776,"children":2777},{"style":1210},[2778],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2780,"children":2781},{"class":1205,"line":1371},[2782,2786,2790,2794,2798],{"type":43,"tag":1203,"props":2783,"children":2784},{"style":1210},[2785],{"type":48,"value":1996},{"type":43,"tag":1203,"props":2787,"children":2788},{"style":1999},[2789],{"type":48,"value":2256},{"type":43,"tag":1203,"props":2791,"children":2792},{"style":1210},[2793],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2795,"children":2796},{"style":1210},[2797],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2799,"children":2800},{"style":1210},[2801],{"type":48,"value":1980},{"type":43,"tag":1203,"props":2803,"children":2804},{"class":1205,"line":1408},[2805],{"type":43,"tag":1203,"props":2806,"children":2807},{"style":1210},[2808],{"type":48,"value":2203},{"type":43,"tag":1203,"props":2810,"children":2811},{"class":1205,"line":1445},[2812,2816,2820,2824,2828,2832,2837,2841],{"type":43,"tag":1203,"props":2813,"children":2814},{"style":1210},[2815],{"type":48,"value":2212},{"type":43,"tag":1203,"props":2817,"children":2818},{"style":2215},[2819],{"type":48,"value":2287},{"type":43,"tag":1203,"props":2821,"children":2822},{"style":1210},[2823],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2825,"children":2826},{"style":1210},[2827],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2829,"children":2830},{"style":1210},[2831],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2833,"children":2834},{"style":1245},[2835],{"type":48,"value":2836},"containers",{"type":43,"tag":1203,"props":2838,"children":2839},{"style":1210},[2840],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2842,"children":2843},{"style":1210},[2844],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2846,"children":2847},{"class":1205,"line":1479},[2848,2852,2856,2860,2864],{"type":43,"tag":1203,"props":2849,"children":2850},{"style":1210},[2851],{"type":48,"value":2212},{"type":43,"tag":1203,"props":2853,"children":2854},{"style":2215},[2855],{"type":48,"value":2322},{"type":43,"tag":1203,"props":2857,"children":2858},{"style":1210},[2859],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2861,"children":2862},{"style":1210},[2863],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2865,"children":2866},{"style":1210},[2867],{"type":48,"value":1980},{"type":43,"tag":1203,"props":2869,"children":2870},{"class":1205,"line":2112},[2871],{"type":43,"tag":1203,"props":2872,"children":2873},{"style":1210},[2874],{"type":48,"value":2875},"            {\n",{"type":43,"tag":1203,"props":2877,"children":2878},{"class":1205,"line":2148},[2879,2884,2889,2893,2897,2901,2906,2910],{"type":43,"tag":1203,"props":2880,"children":2881},{"style":1210},[2882],{"type":48,"value":2883},"              \"",{"type":43,"tag":1203,"props":2885,"children":2886},{"style":2284},[2887],{"type":48,"value":2888},"container_image",{"type":43,"tag":1203,"props":2890,"children":2891},{"style":1210},[2892],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2894,"children":2895},{"style":1210},[2896],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2898,"children":2899},{"style":1210},[2900],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2902,"children":2903},{"style":1245},[2904],{"type":48,"value":2905},"us-docker.pkg.dev\u002Fcloudrun\u002Fcontainer\u002Fhello",{"type":43,"tag":1203,"props":2907,"children":2908},{"style":1210},[2909],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2911,"children":2912},{"style":1210},[2913],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2915,"children":2916},{"class":1205,"line":2173},[2917,2921,2926,2930,2934,2938,2943,2947],{"type":43,"tag":1203,"props":2918,"children":2919},{"style":1210},[2920],{"type":48,"value":2883},{"type":43,"tag":1203,"props":2922,"children":2923},{"style":2284},[2924],{"type":48,"value":2925},"container_name",{"type":43,"tag":1203,"props":2927,"children":2928},{"style":1210},[2929],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2931,"children":2932},{"style":1210},[2933],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2935,"children":2936},{"style":1210},[2937],{"type":48,"value":1242},{"type":43,"tag":1203,"props":2939,"children":2940},{"style":1245},[2941],{"type":48,"value":2942},"service-container",{"type":43,"tag":1203,"props":2944,"children":2945},{"style":1210},[2946],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2948,"children":2949},{"style":1210},[2950],{"type":48,"value":1257},{"type":43,"tag":1203,"props":2952,"children":2953},{"class":1205,"line":2197},[2954,2958,2963,2967,2971],{"type":43,"tag":1203,"props":2955,"children":2956},{"style":1210},[2957],{"type":48,"value":2883},{"type":43,"tag":1203,"props":2959,"children":2960},{"style":2284},[2961],{"type":48,"value":2962},"ports",{"type":43,"tag":1203,"props":2964,"children":2965},{"style":1210},[2966],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2968,"children":2969},{"style":1210},[2970],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2972,"children":2973},{"style":1210},[2974],{"type":48,"value":2975}," {\n",{"type":43,"tag":1203,"props":2977,"children":2978},{"class":1205,"line":2206},[2979,2984,2990,2994,2998,3003],{"type":43,"tag":1203,"props":2980,"children":2981},{"style":1210},[2982],{"type":48,"value":2983},"                \"",{"type":43,"tag":1203,"props":2985,"children":2987},{"style":2986},"--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53",[2988],{"type":48,"value":2989},"container_port",{"type":43,"tag":1203,"props":2991,"children":2992},{"style":1210},[2993],{"type":48,"value":1232},{"type":43,"tag":1203,"props":2995,"children":2996},{"style":1210},[2997],{"type":48,"value":1237},{"type":43,"tag":1203,"props":2999,"children":3000},{"style":2215},[3001],{"type":48,"value":3002}," 8080",{"type":43,"tag":1203,"props":3004,"children":3005},{"style":1210},[3006],{"type":48,"value":1257},{"type":43,"tag":1203,"props":3008,"children":3009},{"class":1205,"line":2246},[3010,3014,3019,3023,3027,3031,3036],{"type":43,"tag":1203,"props":3011,"children":3012},{"style":1210},[3013],{"type":48,"value":2983},{"type":43,"tag":1203,"props":3015,"children":3016},{"style":2986},[3017],{"type":48,"value":3018},"name",{"type":43,"tag":1203,"props":3020,"children":3021},{"style":1210},[3022],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3024,"children":3025},{"style":1210},[3026],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3028,"children":3029},{"style":1210},[3030],{"type":48,"value":1242},{"type":43,"tag":1203,"props":3032,"children":3033},{"style":1245},[3034],{"type":48,"value":3035},"http1",{"type":43,"tag":1203,"props":3037,"children":3038},{"style":1210},[3039],{"type":48,"value":1476},{"type":43,"tag":1203,"props":3041,"children":3042},{"class":1205,"line":2271},[3043],{"type":43,"tag":1203,"props":3044,"children":3045},{"style":1210},[3046],{"type":48,"value":3047},"              },\n",{"type":43,"tag":1203,"props":3049,"children":3050},{"class":1205,"line":2351},[3051,3055,3060,3064,3068],{"type":43,"tag":1203,"props":3052,"children":3053},{"style":1210},[3054],{"type":48,"value":2883},{"type":43,"tag":1203,"props":3056,"children":3057},{"style":2284},[3058],{"type":48,"value":3059},"resources",{"type":43,"tag":1203,"props":3061,"children":3062},{"style":1210},[3063],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3065,"children":3066},{"style":1210},[3067],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3069,"children":3070},{"style":1210},[3071],{"type":48,"value":2975},{"type":43,"tag":1203,"props":3073,"children":3074},{"class":1205,"line":2426},[3075,3079,3084,3088,3092],{"type":43,"tag":1203,"props":3076,"children":3077},{"style":1210},[3078],{"type":48,"value":2983},{"type":43,"tag":1203,"props":3080,"children":3081},{"style":2986},[3082],{"type":48,"value":3083},"cpu_idle",{"type":43,"tag":1203,"props":3085,"children":3086},{"style":1210},[3087],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3089,"children":3090},{"style":1210},[3091],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3093,"children":3094},{"style":1210},[3095],{"type":48,"value":3096}," false,\n",{"type":43,"tag":1203,"props":3098,"children":3099},{"class":1205,"line":28},[3100,3104,3109,3113,3117],{"type":43,"tag":1203,"props":3101,"children":3102},{"style":1210},[3103],{"type":48,"value":2983},{"type":43,"tag":1203,"props":3105,"children":3106},{"style":2986},[3107],{"type":48,"value":3108},"limits",{"type":43,"tag":1203,"props":3110,"children":3111},{"style":1210},[3112],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3114,"children":3115},{"style":1210},[3116],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3118,"children":3119},{"style":1210},[3120],{"type":48,"value":2975},{"type":43,"tag":1203,"props":3122,"children":3123},{"class":1205,"line":2443},[3124,3129,3135,3139,3143,3147,3152,3156],{"type":43,"tag":1203,"props":3125,"children":3126},{"style":1210},[3127],{"type":48,"value":3128},"                  \"",{"type":43,"tag":1203,"props":3130,"children":3132},{"style":3131},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[3133],{"type":48,"value":3134},"cpu",{"type":43,"tag":1203,"props":3136,"children":3137},{"style":1210},[3138],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3140,"children":3141},{"style":1210},[3142],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3144,"children":3145},{"style":1210},[3146],{"type":48,"value":1242},{"type":43,"tag":1203,"props":3148,"children":3149},{"style":1245},[3150],{"type":48,"value":3151},"4",{"type":43,"tag":1203,"props":3153,"children":3154},{"style":1210},[3155],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3157,"children":3158},{"style":1210},[3159],{"type":48,"value":1257},{"type":43,"tag":1203,"props":3161,"children":3162},{"class":1205,"line":2452},[3163,3167,3172,3176,3180,3184,3189],{"type":43,"tag":1203,"props":3164,"children":3165},{"style":1210},[3166],{"type":48,"value":3128},{"type":43,"tag":1203,"props":3168,"children":3169},{"style":3131},[3170],{"type":48,"value":3171},"memory",{"type":43,"tag":1203,"props":3173,"children":3174},{"style":1210},[3175],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3177,"children":3178},{"style":1210},[3179],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3181,"children":3182},{"style":1210},[3183],{"type":48,"value":1242},{"type":43,"tag":1203,"props":3185,"children":3186},{"style":1245},[3187],{"type":48,"value":3188},"16Gi",{"type":43,"tag":1203,"props":3190,"children":3191},{"style":1210},[3192],{"type":48,"value":1476},{"type":43,"tag":1203,"props":3194,"children":3195},{"class":1205,"line":2461},[3196],{"type":43,"tag":1203,"props":3197,"children":3198},{"style":1210},[3199],{"type":48,"value":3200},"                },\n",{"type":43,"tag":1203,"props":3202,"children":3203},{"class":1205,"line":2470},[3204,3208,3213,3217,3221],{"type":43,"tag":1203,"props":3205,"children":3206},{"style":1210},[3207],{"type":48,"value":2983},{"type":43,"tag":1203,"props":3209,"children":3210},{"style":2986},[3211],{"type":48,"value":3212},"startup_cpu_boost",{"type":43,"tag":1203,"props":3214,"children":3215},{"style":1210},[3216],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3218,"children":3219},{"style":1210},[3220],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3222,"children":3223},{"style":1210},[3224],{"type":48,"value":3225}," false\n",{"type":43,"tag":1203,"props":3227,"children":3229},{"class":1205,"line":3228},24,[3230],{"type":43,"tag":1203,"props":3231,"children":3232},{"style":1210},[3233],{"type":48,"value":3234},"              }\n",{"type":43,"tag":1203,"props":3236,"children":3238},{"class":1205,"line":3237},25,[3239],{"type":43,"tag":1203,"props":3240,"children":3241},{"style":1210},[3242],{"type":48,"value":3243},"            }\n",{"type":43,"tag":1203,"props":3245,"children":3247},{"class":1205,"line":3246},26,[3248],{"type":43,"tag":1203,"props":3249,"children":3250},{"style":1210},[3251],{"type":48,"value":2432},{"type":43,"tag":1203,"props":3253,"children":3255},{"class":1205,"line":3254},27,[3256],{"type":43,"tag":1203,"props":3257,"children":3258},{"style":1210},[3259],{"type":48,"value":2440},{"type":43,"tag":1203,"props":3261,"children":3263},{"class":1205,"line":3262},28,[3264],{"type":43,"tag":1203,"props":3265,"children":3266},{"style":1210},[3267],{"type":48,"value":2449},{"type":43,"tag":1203,"props":3269,"children":3271},{"class":1205,"line":3270},29,[3272],{"type":43,"tag":1203,"props":3273,"children":3274},{"style":1210},[3275],{"type":48,"value":2458},{"type":43,"tag":1203,"props":3277,"children":3279},{"class":1205,"line":3278},30,[3280],{"type":43,"tag":1203,"props":3281,"children":3282},{"style":1210},[3283],{"type":48,"value":3284},"  ],\n",{"type":43,"tag":1203,"props":3286,"children":3288},{"class":1205,"line":3287},31,[3289,3293,3297,3301,3305,3309,3313,3317],{"type":43,"tag":1203,"props":3290,"children":3291},{"style":1210},[3292],{"type":48,"value":1222},{"type":43,"tag":1203,"props":3294,"children":3295},{"style":1225},[3296],{"type":48,"value":1381},{"type":43,"tag":1203,"props":3298,"children":3299},{"style":1210},[3300],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3302,"children":3303},{"style":1210},[3304],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3306,"children":3307},{"style":1210},[3308],{"type":48,"value":1242},{"type":43,"tag":1203,"props":3310,"children":3311},{"style":1245},[3312],{"type":48,"value":2594},{"type":43,"tag":1203,"props":3314,"children":3315},{"style":1210},[3316],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3318,"children":3319},{"style":1210},[3320],{"type":48,"value":1257},{"type":43,"tag":1203,"props":3322,"children":3324},{"class":1205,"line":3323},32,[3325,3329,3333,3337,3341,3345,3350],{"type":43,"tag":1203,"props":3326,"children":3327},{"style":1210},[3328],{"type":48,"value":1222},{"type":43,"tag":1203,"props":3330,"children":3331},{"style":1225},[3332],{"type":48,"value":2627},{"type":43,"tag":1203,"props":3334,"children":3335},{"style":1210},[3336],{"type":48,"value":1232},{"type":43,"tag":1203,"props":3338,"children":3339},{"style":1210},[3340],{"type":48,"value":1237},{"type":43,"tag":1203,"props":3342,"children":3343},{"style":1210},[3344],{"type":48,"value":1242},{"type":43,"tag":1203,"props":3346,"children":3347},{"style":1245},[3348],{"type":48,"value":3349},"projects\u002Fmy-project\u002Flocations\u002Fus-central1\u002Fspaces\u002Fmy-space",{"type":43,"tag":1203,"props":3351,"children":3352},{"style":1210},[3353],{"type":48,"value":1476},{"type":43,"tag":1203,"props":3355,"children":3357},{"class":1205,"line":3356},33,[3358],{"type":43,"tag":1203,"props":3359,"children":3360},{"style":1210},[3361],{"type":48,"value":1485},{"type":43,"tag":62,"props":3363,"children":3364},{},[3365,3370,3371],{"type":43,"tag":164,"props":3366,"children":3367},{},[3368],{"type":48,"value":3369},"Retry Deployment",{"type":48,"value":367},{"type":43,"tag":200,"props":3372,"children":3373},{},[3374,3384,3397],{"type":43,"tag":62,"props":3375,"children":3376},{},[3377,3382],{"type":43,"tag":164,"props":3378,"children":3379},{},[3380],{"type":48,"value":3381},"Action",{"type":48,"value":3383},": Attempt to deploy the application again.",{"type":43,"tag":62,"props":3385,"children":3386},{},[3387,3391,3392],{"type":43,"tag":164,"props":3388,"children":3389},{},[3390],{"type":48,"value":2606},{"type":48,"value":1048},{"type":43,"tag":147,"props":3393,"children":3395},{"className":3394},[],[3396],{"type":48,"value":1108},{"type":43,"tag":62,"props":3398,"children":3399},{},[3400,3404,3405,3410,3411,3416,3417,3422,3423,3428,3429,3434,3435,3440,3442,3447,3448],{"type":43,"tag":164,"props":3401,"children":3402},{},[3403],{"type":48,"value":2620},{"type":48,"value":1048},{"type":43,"tag":147,"props":3406,"children":3408},{"className":3407},[],[3409],{"type":48,"value":593},{"type":48,"value":477},{"type":43,"tag":147,"props":3412,"children":3414},{"className":3413},[],[3415],{"type":48,"value":1142},{"type":48,"value":477},{"type":43,"tag":147,"props":3418,"children":3420},{"className":3419},[],[3421],{"type":48,"value":1149},{"type":48,"value":477},{"type":43,"tag":147,"props":3424,"children":3426},{"className":3425},[],[3427],{"type":48,"value":1156},{"type":48,"value":477},{"type":43,"tag":147,"props":3430,"children":3432},{"className":3431},[],[3433],{"type":48,"value":1163},{"type":48,"value":477},{"type":43,"tag":147,"props":3436,"children":3438},{"className":3437},[],[3439],{"type":48,"value":1170},{"type":48,"value":3441},". ",{"type":43,"tag":147,"props":3443,"children":3445},{"className":3444},[],[3446],{"type":48,"value":1381},{"type":48,"value":2648},{"type":43,"tag":147,"props":3449,"children":3451},{"className":3450},[],[3452],{"type":48,"value":1116},{"type":43,"tag":62,"props":3454,"children":3455},{},[3456,3461,3463],{"type":43,"tag":164,"props":3457,"children":3458},{},[3459],{"type":48,"value":3460},"Iterate if Necessary",{"type":48,"value":3462},": If deployment fails again, repeat troubleshooting steps up to 5 times. Report the history to the user if the limit is reached.\n",{"type":43,"tag":164,"props":3464,"children":3465},{},[3466],{"type":48,"value":3467},"Operational Notes:",{"type":43,"tag":200,"props":3469,"children":3470},{},[3471,3476,3481,3486,3499,3504,3509],{"type":43,"tag":62,"props":3472,"children":3473},{},[3474],{"type":48,"value":3475},"Mutating tool calls often return an LRO.",{"type":43,"tag":62,"props":3477,"children":3478},{},[3479],{"type":48,"value":3480},"Always poll LROs on behalf of the user; do not ask the user to run the polling command.",{"type":43,"tag":62,"props":3482,"children":3483},{},[3484],{"type":48,"value":3485},"Do not sleep during deployment status polling. Poll actively every 30-60 seconds until the LRO is done.",{"type":43,"tag":62,"props":3487,"children":3488},{},[3489,3491,3497],{"type":48,"value":3490},"Apply ",{"type":43,"tag":147,"props":3492,"children":3494},{"className":3493},[],[3495],{"type":48,"value":3496},"debug_deployment",{"type":48,"value":3498}," responses exactly as provided.",{"type":43,"tag":62,"props":3500,"children":3501},{},[3502],{"type":48,"value":3503},"For retries, disregard previous attempts and start from Step 2 again.",{"type":43,"tag":62,"props":3505,"children":3506},{},[3507],{"type":48,"value":3508},"Handle bad-gateway errors during commit with jittered retries and verify the template revision.",{"type":43,"tag":62,"props":3510,"children":3511},{},[3512,3514,3520],{"type":48,"value":3513},"Exclude ",{"type":43,"tag":147,"props":3515,"children":3517},{"className":3516},[],[3518],{"type":48,"value":3519},"PORT",{"type":48,"value":3521}," from being explicitly set as a Cloud Run environment variables as it is a reserved name.",{"type":43,"tag":333,"props":3523,"children":3525},{"id":3524},"phase-6-verification-e2e-testing",[3526],{"type":48,"value":134},{"type":43,"tag":141,"props":3528,"children":3529},{},[3530],{"type":48,"value":3531},"Following a successful deployment:",{"type":43,"tag":200,"props":3533,"children":3534},{},[3535,3540],{"type":43,"tag":62,"props":3536,"children":3537},{},[3538],{"type":48,"value":3539},"Verify that services are using correct container image URLs and that each component is healthy.",{"type":43,"tag":62,"props":3541,"children":3542},{},[3543],{"type":48,"value":3544},"Conduct a simple demo test to ensure E2E functionality and validate the hosted services are working as expected.",{"type":43,"tag":3546,"props":3547,"children":3548},"style",{},[3549],{"type":48,"value":3550},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3552,"total":1216},[3553,3560],{"slug":4,"name":4,"fn":5,"description":6,"org":3554,"tags":3555,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3556,3557,3558,3559],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},{"name":21,"slug":22,"type":16},{"slug":3561,"name":3561,"fn":3562,"description":3563,"org":3564,"tags":3565,"stars":24,"repoUrl":25,"updatedAt":3576},"operating-google-cloud","manage Google Cloud and Kubernetes resources","Comprehensive management of GCP resources and Kubernetes. Supports direct tool delegation for assistance, infrastructure design, troubleshooting, cost optimization, and resource mutations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3566,3569,3570,3573],{"name":3567,"slug":3568,"type":16},"Cost Optimization","cost-optimization",{"name":9,"slug":8,"type":16},{"name":3571,"slug":3572,"type":16},"Kubernetes","kubernetes",{"name":3574,"slug":3575,"type":16},"Operations","operations","2026-07-12T07:40:34.4699",{"items":3578,"total":3763},[3579,3597,3613,3635,3649,3658,3672,3689,3706,3719,3735,3745],{"slug":3580,"name":3580,"fn":3581,"description":3582,"org":3583,"tags":3584,"stars":3594,"repoUrl":3595,"updatedAt":3596},"kb-search","search and extract local knowledge base documents","Allows listing, searching and extracting information from local knowledge base documents for information about tables\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3585,3588,3591],{"name":3586,"slug":3587,"type":16},"Documentation","documentation",{"name":3589,"slug":3590,"type":16},"Knowledge Base","knowledge-base",{"name":3592,"slug":3593,"type":16},"Search","search",6749,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fknowledge-catalog","2026-07-12T07:38:52.157375",{"slug":3598,"name":3599,"fn":3600,"description":3601,"org":3602,"tags":3603,"stars":3594,"repoUrl":3595,"updatedAt":3612},"knowledgecatalogdiscoveryagent","knowledge_catalog_discovery_agent","search and rank Knowledge Catalog data entries","Analyzes user queries, extracts relevant predicates, and utilizes Knowledge Catalog Search to find and rank the most relevant data entries. Engages with the user throughout the process.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3604,3607,3608,3611],{"name":3605,"slug":3606,"type":16},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":16},{"name":3609,"slug":3610,"type":16},"Knowledge Management","knowledge-management",{"name":3592,"slug":3593,"type":16},"2026-07-12T07:38:22.196851",{"slug":3614,"name":3614,"fn":3615,"description":3616,"org":3617,"tags":3618,"stars":3632,"repoUrl":3633,"updatedAt":3634},"contributing","contribute to Cloud Foundation Fabric","End-to-end workflow for contributing to Cloud Foundation Fabric: triaging GitHub issues, proactive feature development, validating with tests and Policy Troubleshooter, and submitting sanitized Pull Requests. Use when addressing a Fabric GitHub issue, developing a module or FAST stage change, or preparing a branch for a pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3619,3622,3625,3628,3629],{"name":3620,"slug":3621,"type":16},"Automation","automation",{"name":3623,"slug":3624,"type":16},"Engineering","engineering",{"name":3626,"slug":3627,"type":16},"GitHub","github",{"name":9,"slug":8,"type":16},{"name":3630,"slug":3631,"type":16},"Pull Requests","pull-requests",2062,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fcloud-foundation-fabric","2026-07-31T06:23:36.935005",{"slug":3636,"name":3636,"fn":3637,"description":3638,"org":3639,"tags":3640,"stars":3632,"repoUrl":3633,"updatedAt":3648},"fabric-builder","generate Terraform code for Google Cloud","Generates idiomatic Cloud Foundation Fabric (CFF) Terraform code using CFF modules. Use when users ask to create GCP resources, use Fabric modules, or generate Terraform code for Google Cloud.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3641,3642,3645],{"name":9,"slug":8,"type":16},{"name":3643,"slug":3644,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":3646,"slug":3647,"type":16},"Terraform","terraform","2026-07-12T07:38:23.514555",{"slug":3650,"name":3650,"fn":3651,"description":3652,"org":3653,"tags":3654,"stars":3632,"repoUrl":3633,"updatedAt":3657},"fast-0-org-setup-prereqs","prepare prerequisites for FAST 0-org-setup","Guides the user step-by-step through the prerequisites for the FAST 0-org-setup stage, supporting both Standard GCP and Google Cloud Dedicated (GCD) environments. Use when a user asks to prepare or run prerequisites for 0-org-setup or bootstrap the FAST landing zone.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3655,3656],{"name":9,"slug":8,"type":16},{"name":3574,"slug":3575,"type":16},"2026-07-12T07:38:28.127148",{"slug":3659,"name":3659,"fn":3660,"description":3661,"org":3662,"tags":3663,"stars":3669,"repoUrl":3670,"updatedAt":3671},"agent-aware-cli","design agent-aware command-line interfaces","Guide for designing and implementing command-line interfaces (CLIs) that are equally usable by human developers and automated coding agents. Use when the user wants to build a CLI, apply CLI best practices, or use Go with Cobra and Viper.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3664,3667,3668],{"name":3665,"slug":3666,"type":16},"CLI","cli",{"name":3623,"slug":3624,"type":16},{"name":9,"slug":8,"type":16},1150,"https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fvertex-ai-creative-studio","2026-07-12T07:39:08.41406",{"slug":3673,"name":3673,"fn":3674,"description":3675,"org":3676,"tags":3677,"stars":3669,"repoUrl":3670,"updatedAt":3688},"build-mcp-genmedia","build and configure GenAI MCP servers","Builds the mcp-genmedia Go MCP servers (nanobanana, veo, lyria, gemini-multimodal, chirp3-hd, avtool) from source and wires them into settings.json. Use this skill whenever the MCP tools are missing or broken — typically at the start of a new session, after a container restart, or when \u002Ftmp has been wiped. The prebuilt binaries in \u002Fworkspace\u002F.local\u002Fbin\u002F have no exec bit and live on a noexec mount; this skill compiles fresh executables into \u002Ftmp\u002Fbin\u002F where execution is allowed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3678,3681,3682,3685],{"name":3679,"slug":3680,"type":16},"API Development","api-development",{"name":9,"slug":8,"type":16},{"name":3683,"slug":3684,"type":16},"LLM","llm",{"name":3686,"slug":3687,"type":16},"MCP","mcp","2026-07-12T07:39:10.911302",{"slug":3690,"name":3690,"fn":3691,"description":3692,"org":3693,"tags":3694,"stars":3669,"repoUrl":3670,"updatedAt":3705},"genmedia-audio-engineer","synthesize and mix audio content","Expert in audio synthesis, music generation, and mixing. Use when creating podcasts, background scores, or multi-track audio layering using mcp-chirp3-go, mcp-lyria-go, mcp-gemini-go, mcp-nanobanana-go, and mcp-avtool-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3695,3698,3701,3702],{"name":3696,"slug":3697,"type":16},"Audio","audio",{"name":3699,"slug":3700,"type":16},"Creative","creative",{"name":9,"slug":8,"type":16},{"name":3703,"slug":3704,"type":16},"Vertex AI","vertex-ai","2026-07-12T07:39:16.623879",{"slug":3707,"name":3707,"fn":3708,"description":3709,"org":3710,"tags":3711,"stars":3669,"repoUrl":3670,"updatedAt":3718},"genmedia-image-artist","generate and edit AI images","Expert in AI image generation and editing. Use when the user needs high-quality textures, character-consistent visuals, or image-to-image editing using mcp-nanobanana-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3712,3713,3714,3717],{"name":3699,"slug":3700,"type":16},{"name":9,"slug":8,"type":16},{"name":3715,"slug":3716,"type":16},"Image Generation","image-generation",{"name":3703,"slug":3704,"type":16},"2026-07-12T07:39:15.372822",{"slug":3720,"name":3720,"fn":3721,"description":3722,"org":3723,"tags":3724,"stars":3669,"repoUrl":3670,"updatedAt":3734},"genmedia-producer","produce multi-step media content","Expert media production assistant. Use when requested to help with storyboarding, podcast creation, audio assembly, or complex multi-step media workflows using the GenMedia MCP servers (Veo, Lyria, Gemini TTS, NanoBanana).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3725,3726,3727,3728,3731],{"name":3696,"slug":3697,"type":16},{"name":3699,"slug":3700,"type":16},{"name":9,"slug":8,"type":16},{"name":3729,"slug":3730,"type":16},"Media","media",{"name":3732,"slug":3733,"type":16},"Video","video","2026-07-12T07:39:09.672849",{"slug":3736,"name":3736,"fn":3737,"description":3738,"org":3739,"tags":3740,"stars":3669,"repoUrl":3670,"updatedAt":3744},"genmedia-video-editor","edit and compose video content","Expert in video composition, editing, and format conversion. Use when the user wants to generate high-quality video, overlay images on video, concatenate clips, create GIFs, or sync audio to video using mcp-avtool-go and mcp-veo-go.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3741,3742,3743],{"name":3699,"slug":3700,"type":16},{"name":9,"slug":8,"type":16},{"name":3732,"slug":3733,"type":16},"2026-07-12T07:39:13.749081",{"slug":3746,"name":3746,"fn":3747,"description":3748,"org":3749,"tags":3750,"stars":3669,"repoUrl":3670,"updatedAt":3762},"genmedia-voice-director","generate expressive text-to-speech with Gemini","Expert in casting, directing, and generating expressive text-to-speech using Gemini TTS. Use this when the user needs virtual voice actor personas, expressive speech generation, or multiple variations of a voiceover (like \"take 3 on the bounce\").",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3751,3752,3753,3756,3759],{"name":3696,"slug":3697,"type":16},{"name":3699,"slug":3700,"type":16},{"name":3754,"slug":3755,"type":16},"Gemini","gemini",{"name":3757,"slug":3758,"type":16},"Speech","speech",{"name":3760,"slug":3761,"type":16},"Text-to-Speech","text-to-speech","2026-07-12T07:39:17.86673",80]