[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-pulumi-pulumi-automation-api":3,"mdc--k1lksv-key":33,"related-repo-pulumi-pulumi-automation-api":4932,"related-org-pulumi-pulumi-automation-api":5026},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"pulumi-automation-api","run Pulumi programs via Automation API","Load this skill when a user asks how to run Pulumi programmatically, embed Pulumi in an application, orchestrate multiple stacks in code, build a self-service infrastructure portal, replace pulumi CLI shell scripts with code, or use the Pulumi Automation API (LocalWorkspace, createOrSelectStack, inline programs). Also load for questions about multi-stack sequencing, parallel deployments, or passing outputs between stacks via code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"pulumi","Pulumi","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fpulumi.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Automation","automation","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"API Development","api-development",{"name":21,"slug":22,"type":15},"Infrastructure as Code","infrastructure-as-code",63,"https:\u002F\u002Fgithub.com\u002Fpulumi\u002Fagent-skills","2026-06-04T07:59:00.113998",null,4,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fpulumi\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fpulumi\u002Fskills\u002Fpulumi-automation-api","---\nname: pulumi-automation-api\nversion: 1.0.0\ndescription: Load this skill when a user asks how to run Pulumi programmatically, embed Pulumi in an application, orchestrate multiple stacks in code, build a self-service infrastructure portal, replace pulumi CLI shell scripts with code, or use the Pulumi Automation API (LocalWorkspace, createOrSelectStack, inline programs). Also load for questions about multi-stack sequencing, parallel deployments, or passing outputs between stacks via code.\n---\n\n# Pulumi Automation API\n\n## When to Use This Skill\n\nInvoke this skill when:\n\n- Orchestrating deployments across multiple Pulumi stacks\n- Embedding Pulumi operations in custom applications\n- Building self-service infrastructure platforms\n- Replacing fragile Bash\u002FMakefile orchestration scripts\n- Creating custom CLIs for infrastructure management\n- Building web applications that provision infrastructure\n\n## What is Automation API\n\nAutomation API provides programmatic access to Pulumi operations. Instead of running `pulumi up` from the CLI, you call functions in your code that perform the same operations.\n\n```typescript\nimport * as automation from \"@pulumi\u002Fpulumi\u002Fautomation\";\n\n\u002F\u002F Create or select a stack\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    projectName: \"my-project\",\n    program: async () => {\n        \u002F\u002F Your Pulumi program here\n    },\n});\n\n\u002F\u002F Run pulumi up programmatically\nconst upResult = await stack.up({ onOutput: console.log });\nconsole.log(`Update summary: ${JSON.stringify(upResult.summary)}`);\n```\n\n## When to Use Automation API\n\n### Good Use Cases\n\n**Multi-stack orchestration:**\n\nWhen you split infrastructure into multiple focused projects, Automation API helps offset the added complexity by orchestrating operations across stacks:\n\n```text\ninfrastructure → platform → application\n     ↓              ↓            ↓\n   (VPC)      (Kubernetes)   (Services)\n```\n\nAutomation API ensures correct sequencing without manual intervention.\n\n**Self-service platforms:**\n\nBuild internal tools where developers request infrastructure without learning Pulumi:\n\n- Web portals for environment provisioning\n- Slack bots that create\u002Fdestroy resources\n- Custom CLIs tailored to your organization\n\n**Embedded infrastructure:**\n\nApplications that provision their own infrastructure:\n\n- SaaS platforms creating per-tenant resources\n- Testing frameworks spinning up test environments\n- CI\u002FCD systems with dynamic infrastructure needs\n\n**Replacing fragile scripts:**\n\nIf you have Bash scripts or Makefiles stitching together multiple `pulumi` commands, Automation API provides:\n\n- Proper error handling\n- Type safety\n- Programmatic access to outputs\n\n### When NOT to Use\n\n- Single project with standard deployment needs\n- When you don't need programmatic control over operations\n\n## Architecture Choices\n\n### Local Source vs Inline Source\n\n**Local Source** - Pulumi program in separate files:\n\n```typescript\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    workDir: \".\u002Finfrastructure\",  \u002F\u002F Points to existing Pulumi project\n});\n```\n\n**When to use:**\n\n- Different teams maintain orchestrator vs Pulumi programs\n- Pulumi programs already exist\n- Want independent version control and release cycles\n- Platform team orchestrating application team's infrastructure\n\n**Inline Source** - Pulumi program embedded in orchestrator:\n\n```typescript\nimport * as aws from \"@pulumi\u002Faws\";\n\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    projectName: \"my-project\",\n    program: async () => {\n        const bucket = new aws.s3.Bucket(\"my-bucket\");\n        return { bucketName: bucket.id };\n    },\n});\n```\n\n**When to use:**\n\n- Single team owns everything\n- Tight coupling between orchestration and infrastructure is desired\n- Distributing as compiled binary (no source files needed)\n- Simpler deployment artifact\n\n### Language Independence\n\nThe Automation API program can use a different language than the Pulumi programs it orchestrates:\n\n```text\nOrchestrator (Go) → manages → Pulumi Program (TypeScript)\n```\n\nThis enables platform teams to use their preferred language while application teams use theirs.\n\n## Common Patterns\n\n### Multi-Stack Orchestration\n\nDeploy multiple stacks in dependency order:\n\n```typescript\nimport * as automation from \"@pulumi\u002Fpulumi\u002Fautomation\";\n\nasync function deploy() {\n    const stacks = [\n        { name: \"infrastructure\", dir: \".\u002Finfra\" },\n        { name: \"platform\", dir: \".\u002Fplatform\" },\n        { name: \"application\", dir: \".\u002Fapp\" },\n    ];\n\n    for (const stackInfo of stacks) {\n        console.log(`Deploying ${stackInfo.name}...`);\n\n        const stack = await automation.LocalWorkspace.createOrSelectStack({\n            stackName: \"prod\",\n            workDir: stackInfo.dir,\n        });\n\n        await stack.up({ onOutput: console.log });\n        console.log(`${stackInfo.name} deployed successfully`);\n    }\n}\n\nasync function destroy() {\n    \u002F\u002F Destroy in reverse order\n    const stacks = [\n        { name: \"application\", dir: \".\u002Fapp\" },\n        { name: \"platform\", dir: \".\u002Fplatform\" },\n        { name: \"infrastructure\", dir: \".\u002Finfra\" },\n    ];\n\n    for (const stackInfo of stacks) {\n        console.log(`Destroying ${stackInfo.name}...`);\n\n        const stack = await automation.LocalWorkspace.selectStack({\n            stackName: \"prod\",\n            workDir: stackInfo.dir,\n        });\n\n        await stack.destroy({ onOutput: console.log });\n    }\n}\n```\n\n### Passing Configuration\n\nSet stack configuration programmatically:\n\n```typescript\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    workDir: \".\u002Finfrastructure\",\n});\n\n\u002F\u002F Set configuration values\nawait stack.setConfig(\"aws:region\", { value: \"us-west-2\" });\nawait stack.setConfig(\"dbPassword\", { value: \"secret\", secret: true });\n\n\u002F\u002F Then deploy\nawait stack.up();\n```\n\n### Reading Outputs\n\nAccess stack outputs after deployment:\n\n```typescript\nconst upResult = await stack.up();\n\n\u002F\u002F Get all outputs\nconst outputs = await stack.outputs();\nconsole.log(`VPC ID: ${outputs[\"vpcId\"].value}`);\n\n\u002F\u002F Or from the up result\nconsole.log(`Outputs: ${JSON.stringify(upResult.outputs)}`);\n```\n\n### Error Handling\n\nHandle deployment failures gracefully:\n\n```typescript\ntry {\n    const result = await stack.up({ onOutput: console.log });\n\n    if (result.summary.result === \"failed\") {\n        console.error(\"Deployment failed\");\n        process.exit(1);\n    }\n} catch (error) {\n    console.error(`Deployment error: ${error}`);\n    throw error;\n}\n```\n\n### Parallel Stack Operations\n\nWhen stacks are independent, deploy in parallel:\n\n```typescript\nconst independentStacks = [\n    { name: \"service-a\", dir: \".\u002Fservice-a\" },\n    { name: \"service-b\", dir: \".\u002Fservice-b\" },\n    { name: \"service-c\", dir: \".\u002Fservice-c\" },\n];\n\nawait Promise.all(independentStacks.map(async (stackInfo) => {\n    const stack = await automation.LocalWorkspace.createOrSelectStack({\n        stackName: \"prod\",\n        workDir: stackInfo.dir,\n    });\n    return stack.up({ onOutput: (msg) => console.log(`[${stackInfo.name}] ${msg}`) });\n}));\n```\n\n## Best Practices\n\n### Separate Configuration from Code\n\nExternalize configuration into files or environment variables:\n\n```typescript\nimport * as fs from \"fs\";\n\ninterface DeployConfig {\n    stacks: Array\u003C{ name: string; dir: string; }>;\n    environment: string;\n}\n\nconst config: DeployConfig = JSON.parse(\n    fs.readFileSync(\".\u002Fdeploy-config.json\", \"utf-8\")\n);\n\nfor (const stackInfo of config.stacks) {\n    const stack = await automation.LocalWorkspace.createOrSelectStack({\n        stackName: config.environment,\n        workDir: stackInfo.dir,\n    });\n    await stack.up();\n}\n```\n\nThis enables distributing compiled binaries without exposing source code.\n\n### Stream Output for Long Operations\n\nUse `onOutput` callback for real-time feedback:\n\n```typescript\nawait stack.up({\n    onOutput: (message) => {\n        process.stdout.write(message);\n        \u002F\u002F Or send to logging system, websocket, etc.\n    },\n});\n```\n\n## Quick Reference\n\n| Scenario | Approach |\n| --- | --- |\n| Existing Pulumi projects | Local source with workDir |\n| New embedded infrastructure | Inline source with program function |\n| Different teams | Local source for independence |\n| Compiled binary distribution | Inline source or bundled local |\n| Multi-stack dependencies | Sequential deployment in order |\n| Independent stacks | Parallel deployment with Promise.all |\n\n## Related Skills\n\n- **pulumi-best-practices**: Code-level patterns for Pulumi programs\n\n## References\n\n- https:\u002F\u002Fwww.pulumi.com\u002Fdocs\u002Fusing-pulumi\u002Fautomation-api\u002F\n- https:\u002F\u002Fwww.pulumi.com\u002Fdocs\u002Fusing-pulumi\u002Fautomation-api\u002Fconcepts-terminology\u002F\n- https:\u002F\u002Fwww.pulumi.com\u002Fblog\u002Fiac-recommended-practices-using-automation-api\u002F\n",{"data":34,"body":36},{"name":4,"version":35,"description":6},"1.0.0",{"type":37,"children":38},"root",[39,47,54,60,95,101,115,566,572,579,588,593,603,608,616,621,639,647,652,670,678,690,708,714,727,733,739,749,880,888,911,921,1237,1244,1267,1273,1278,1287,1292,1298,1304,1309,2554,2560,2565,2921,2927,2932,3194,3200,3205,3540,3546,3551,4099,4105,4111,4116,4595,4600,4606,4619,4757,4763,4869,4875,4888,4894,4926],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","Pulumi Automation API",{"type":40,"tag":48,"props":49,"children":51},"h2",{"id":50},"when-to-use-this-skill",[52],{"type":45,"value":53},"When to Use This Skill",{"type":40,"tag":55,"props":56,"children":57},"p",{},[58],{"type":45,"value":59},"Invoke this skill when:",{"type":40,"tag":61,"props":62,"children":63},"ul",{},[64,70,75,80,85,90],{"type":40,"tag":65,"props":66,"children":67},"li",{},[68],{"type":45,"value":69},"Orchestrating deployments across multiple Pulumi stacks",{"type":40,"tag":65,"props":71,"children":72},{},[73],{"type":45,"value":74},"Embedding Pulumi operations in custom applications",{"type":40,"tag":65,"props":76,"children":77},{},[78],{"type":45,"value":79},"Building self-service infrastructure platforms",{"type":40,"tag":65,"props":81,"children":82},{},[83],{"type":45,"value":84},"Replacing fragile Bash\u002FMakefile orchestration scripts",{"type":40,"tag":65,"props":86,"children":87},{},[88],{"type":45,"value":89},"Creating custom CLIs for infrastructure management",{"type":40,"tag":65,"props":91,"children":92},{},[93],{"type":45,"value":94},"Building web applications that provision infrastructure",{"type":40,"tag":48,"props":96,"children":98},{"id":97},"what-is-automation-api",[99],{"type":45,"value":100},"What is Automation API",{"type":40,"tag":55,"props":102,"children":103},{},[104,106,113],{"type":45,"value":105},"Automation API provides programmatic access to Pulumi operations. Instead of running ",{"type":40,"tag":107,"props":108,"children":110},"code",{"className":109},[],[111],{"type":45,"value":112},"pulumi up",{"type":45,"value":114}," from the CLI, you call functions in your code that perform the same operations.",{"type":40,"tag":116,"props":117,"children":122},"pre",{"className":118,"code":119,"language":120,"meta":121,"style":121},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import * as automation from \"@pulumi\u002Fpulumi\u002Fautomation\";\n\n\u002F\u002F Create or select a stack\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    projectName: \"my-project\",\n    program: async () => {\n        \u002F\u002F Your Pulumi program here\n    },\n});\n\n\u002F\u002F Run pulumi up programmatically\nconst upResult = await stack.up({ onOutput: console.log });\nconsole.log(`Update summary: ${JSON.stringify(upResult.summary)}`);\n","typescript","",[123],{"type":40,"tag":107,"props":124,"children":125},{"__ignoreMap":121},[126,181,191,201,260,293,323,356,365,374,392,400,409,488],{"type":40,"tag":127,"props":128,"children":131},"span",{"class":129,"line":130},"line",1,[132,138,144,149,155,160,165,171,176],{"type":40,"tag":127,"props":133,"children":135},{"style":134},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[136],{"type":45,"value":137},"import",{"type":40,"tag":127,"props":139,"children":141},{"style":140},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[142],{"type":45,"value":143}," *",{"type":40,"tag":127,"props":145,"children":146},{"style":134},[147],{"type":45,"value":148}," as",{"type":40,"tag":127,"props":150,"children":152},{"style":151},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[153],{"type":45,"value":154}," automation ",{"type":40,"tag":127,"props":156,"children":157},{"style":134},[158],{"type":45,"value":159},"from",{"type":40,"tag":127,"props":161,"children":162},{"style":140},[163],{"type":45,"value":164}," \"",{"type":40,"tag":127,"props":166,"children":168},{"style":167},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[169],{"type":45,"value":170},"@pulumi\u002Fpulumi\u002Fautomation",{"type":40,"tag":127,"props":172,"children":173},{"style":140},[174],{"type":45,"value":175},"\"",{"type":40,"tag":127,"props":177,"children":178},{"style":140},[179],{"type":45,"value":180},";\n",{"type":40,"tag":127,"props":182,"children":184},{"class":129,"line":183},2,[185],{"type":40,"tag":127,"props":186,"children":188},{"emptyLinePlaceholder":187},true,[189],{"type":45,"value":190},"\n",{"type":40,"tag":127,"props":192,"children":194},{"class":129,"line":193},3,[195],{"type":40,"tag":127,"props":196,"children":198},{"style":197},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[199],{"type":45,"value":200},"\u002F\u002F Create or select a stack\n",{"type":40,"tag":127,"props":202,"children":203},{"class":129,"line":27},[204,210,215,220,225,230,235,240,244,250,255],{"type":40,"tag":127,"props":205,"children":207},{"style":206},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[208],{"type":45,"value":209},"const",{"type":40,"tag":127,"props":211,"children":212},{"style":151},[213],{"type":45,"value":214}," stack ",{"type":40,"tag":127,"props":216,"children":217},{"style":140},[218],{"type":45,"value":219},"=",{"type":40,"tag":127,"props":221,"children":222},{"style":134},[223],{"type":45,"value":224}," await",{"type":40,"tag":127,"props":226,"children":227},{"style":151},[228],{"type":45,"value":229}," automation",{"type":40,"tag":127,"props":231,"children":232},{"style":140},[233],{"type":45,"value":234},".",{"type":40,"tag":127,"props":236,"children":237},{"style":151},[238],{"type":45,"value":239},"LocalWorkspace",{"type":40,"tag":127,"props":241,"children":242},{"style":140},[243],{"type":45,"value":234},{"type":40,"tag":127,"props":245,"children":247},{"style":246},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[248],{"type":45,"value":249},"createOrSelectStack",{"type":40,"tag":127,"props":251,"children":252},{"style":151},[253],{"type":45,"value":254},"(",{"type":40,"tag":127,"props":256,"children":257},{"style":140},[258],{"type":45,"value":259},"{\n",{"type":40,"tag":127,"props":261,"children":263},{"class":129,"line":262},5,[264,270,275,279,284,288],{"type":40,"tag":127,"props":265,"children":267},{"style":266},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[268],{"type":45,"value":269},"    stackName",{"type":40,"tag":127,"props":271,"children":272},{"style":140},[273],{"type":45,"value":274},":",{"type":40,"tag":127,"props":276,"children":277},{"style":140},[278],{"type":45,"value":164},{"type":40,"tag":127,"props":280,"children":281},{"style":167},[282],{"type":45,"value":283},"dev",{"type":40,"tag":127,"props":285,"children":286},{"style":140},[287],{"type":45,"value":175},{"type":40,"tag":127,"props":289,"children":290},{"style":140},[291],{"type":45,"value":292},",\n",{"type":40,"tag":127,"props":294,"children":296},{"class":129,"line":295},6,[297,302,306,310,315,319],{"type":40,"tag":127,"props":298,"children":299},{"style":266},[300],{"type":45,"value":301},"    projectName",{"type":40,"tag":127,"props":303,"children":304},{"style":140},[305],{"type":45,"value":274},{"type":40,"tag":127,"props":307,"children":308},{"style":140},[309],{"type":45,"value":164},{"type":40,"tag":127,"props":311,"children":312},{"style":167},[313],{"type":45,"value":314},"my-project",{"type":40,"tag":127,"props":316,"children":317},{"style":140},[318],{"type":45,"value":175},{"type":40,"tag":127,"props":320,"children":321},{"style":140},[322],{"type":45,"value":292},{"type":40,"tag":127,"props":324,"children":326},{"class":129,"line":325},7,[327,332,336,341,346,351],{"type":40,"tag":127,"props":328,"children":329},{"style":246},[330],{"type":45,"value":331},"    program",{"type":40,"tag":127,"props":333,"children":334},{"style":140},[335],{"type":45,"value":274},{"type":40,"tag":127,"props":337,"children":338},{"style":206},[339],{"type":45,"value":340}," async",{"type":40,"tag":127,"props":342,"children":343},{"style":140},[344],{"type":45,"value":345}," ()",{"type":40,"tag":127,"props":347,"children":348},{"style":206},[349],{"type":45,"value":350}," =>",{"type":40,"tag":127,"props":352,"children":353},{"style":140},[354],{"type":45,"value":355}," {\n",{"type":40,"tag":127,"props":357,"children":359},{"class":129,"line":358},8,[360],{"type":40,"tag":127,"props":361,"children":362},{"style":197},[363],{"type":45,"value":364},"        \u002F\u002F Your Pulumi program here\n",{"type":40,"tag":127,"props":366,"children":368},{"class":129,"line":367},9,[369],{"type":40,"tag":127,"props":370,"children":371},{"style":140},[372],{"type":45,"value":373},"    },\n",{"type":40,"tag":127,"props":375,"children":377},{"class":129,"line":376},10,[378,383,388],{"type":40,"tag":127,"props":379,"children":380},{"style":140},[381],{"type":45,"value":382},"}",{"type":40,"tag":127,"props":384,"children":385},{"style":151},[386],{"type":45,"value":387},")",{"type":40,"tag":127,"props":389,"children":390},{"style":140},[391],{"type":45,"value":180},{"type":40,"tag":127,"props":393,"children":395},{"class":129,"line":394},11,[396],{"type":40,"tag":127,"props":397,"children":398},{"emptyLinePlaceholder":187},[399],{"type":45,"value":190},{"type":40,"tag":127,"props":401,"children":403},{"class":129,"line":402},12,[404],{"type":40,"tag":127,"props":405,"children":406},{"style":197},[407],{"type":45,"value":408},"\u002F\u002F Run pulumi up programmatically\n",{"type":40,"tag":127,"props":410,"children":412},{"class":129,"line":411},13,[413,417,422,426,430,435,439,444,448,453,458,462,467,471,476,480,484],{"type":40,"tag":127,"props":414,"children":415},{"style":206},[416],{"type":45,"value":209},{"type":40,"tag":127,"props":418,"children":419},{"style":151},[420],{"type":45,"value":421}," upResult ",{"type":40,"tag":127,"props":423,"children":424},{"style":140},[425],{"type":45,"value":219},{"type":40,"tag":127,"props":427,"children":428},{"style":134},[429],{"type":45,"value":224},{"type":40,"tag":127,"props":431,"children":432},{"style":151},[433],{"type":45,"value":434}," stack",{"type":40,"tag":127,"props":436,"children":437},{"style":140},[438],{"type":45,"value":234},{"type":40,"tag":127,"props":440,"children":441},{"style":246},[442],{"type":45,"value":443},"up",{"type":40,"tag":127,"props":445,"children":446},{"style":151},[447],{"type":45,"value":254},{"type":40,"tag":127,"props":449,"children":450},{"style":140},[451],{"type":45,"value":452},"{",{"type":40,"tag":127,"props":454,"children":455},{"style":266},[456],{"type":45,"value":457}," onOutput",{"type":40,"tag":127,"props":459,"children":460},{"style":140},[461],{"type":45,"value":274},{"type":40,"tag":127,"props":463,"children":464},{"style":151},[465],{"type":45,"value":466}," console",{"type":40,"tag":127,"props":468,"children":469},{"style":140},[470],{"type":45,"value":234},{"type":40,"tag":127,"props":472,"children":473},{"style":151},[474],{"type":45,"value":475},"log ",{"type":40,"tag":127,"props":477,"children":478},{"style":140},[479],{"type":45,"value":382},{"type":40,"tag":127,"props":481,"children":482},{"style":151},[483],{"type":45,"value":387},{"type":40,"tag":127,"props":485,"children":486},{"style":140},[487],{"type":45,"value":180},{"type":40,"tag":127,"props":489,"children":491},{"class":129,"line":490},14,[492,497,501,506,510,515,520,525,530,534,539,544,548,553,558,562],{"type":40,"tag":127,"props":493,"children":494},{"style":151},[495],{"type":45,"value":496},"console",{"type":40,"tag":127,"props":498,"children":499},{"style":140},[500],{"type":45,"value":234},{"type":40,"tag":127,"props":502,"children":503},{"style":246},[504],{"type":45,"value":505},"log",{"type":40,"tag":127,"props":507,"children":508},{"style":151},[509],{"type":45,"value":254},{"type":40,"tag":127,"props":511,"children":512},{"style":140},[513],{"type":45,"value":514},"`",{"type":40,"tag":127,"props":516,"children":517},{"style":167},[518],{"type":45,"value":519},"Update summary: ",{"type":40,"tag":127,"props":521,"children":522},{"style":140},[523],{"type":45,"value":524},"${",{"type":40,"tag":127,"props":526,"children":527},{"style":151},[528],{"type":45,"value":529},"JSON",{"type":40,"tag":127,"props":531,"children":532},{"style":140},[533],{"type":45,"value":234},{"type":40,"tag":127,"props":535,"children":536},{"style":246},[537],{"type":45,"value":538},"stringify",{"type":40,"tag":127,"props":540,"children":541},{"style":151},[542],{"type":45,"value":543},"(upResult",{"type":40,"tag":127,"props":545,"children":546},{"style":140},[547],{"type":45,"value":234},{"type":40,"tag":127,"props":549,"children":550},{"style":151},[551],{"type":45,"value":552},"summary)",{"type":40,"tag":127,"props":554,"children":555},{"style":140},[556],{"type":45,"value":557},"}`",{"type":40,"tag":127,"props":559,"children":560},{"style":151},[561],{"type":45,"value":387},{"type":40,"tag":127,"props":563,"children":564},{"style":140},[565],{"type":45,"value":180},{"type":40,"tag":48,"props":567,"children":569},{"id":568},"when-to-use-automation-api",[570],{"type":45,"value":571},"When to Use Automation API",{"type":40,"tag":573,"props":574,"children":576},"h3",{"id":575},"good-use-cases",[577],{"type":45,"value":578},"Good Use Cases",{"type":40,"tag":55,"props":580,"children":581},{},[582],{"type":40,"tag":583,"props":584,"children":585},"strong",{},[586],{"type":45,"value":587},"Multi-stack orchestration:",{"type":40,"tag":55,"props":589,"children":590},{},[591],{"type":45,"value":592},"When you split infrastructure into multiple focused projects, Automation API helps offset the added complexity by orchestrating operations across stacks:",{"type":40,"tag":116,"props":594,"children":598},{"className":595,"code":597,"language":45,"meta":121},[596],"language-text","infrastructure → platform → application\n     ↓              ↓            ↓\n   (VPC)      (Kubernetes)   (Services)\n",[599],{"type":40,"tag":107,"props":600,"children":601},{"__ignoreMap":121},[602],{"type":45,"value":597},{"type":40,"tag":55,"props":604,"children":605},{},[606],{"type":45,"value":607},"Automation API ensures correct sequencing without manual intervention.",{"type":40,"tag":55,"props":609,"children":610},{},[611],{"type":40,"tag":583,"props":612,"children":613},{},[614],{"type":45,"value":615},"Self-service platforms:",{"type":40,"tag":55,"props":617,"children":618},{},[619],{"type":45,"value":620},"Build internal tools where developers request infrastructure without learning Pulumi:",{"type":40,"tag":61,"props":622,"children":623},{},[624,629,634],{"type":40,"tag":65,"props":625,"children":626},{},[627],{"type":45,"value":628},"Web portals for environment provisioning",{"type":40,"tag":65,"props":630,"children":631},{},[632],{"type":45,"value":633},"Slack bots that create\u002Fdestroy resources",{"type":40,"tag":65,"props":635,"children":636},{},[637],{"type":45,"value":638},"Custom CLIs tailored to your organization",{"type":40,"tag":55,"props":640,"children":641},{},[642],{"type":40,"tag":583,"props":643,"children":644},{},[645],{"type":45,"value":646},"Embedded infrastructure:",{"type":40,"tag":55,"props":648,"children":649},{},[650],{"type":45,"value":651},"Applications that provision their own infrastructure:",{"type":40,"tag":61,"props":653,"children":654},{},[655,660,665],{"type":40,"tag":65,"props":656,"children":657},{},[658],{"type":45,"value":659},"SaaS platforms creating per-tenant resources",{"type":40,"tag":65,"props":661,"children":662},{},[663],{"type":45,"value":664},"Testing frameworks spinning up test environments",{"type":40,"tag":65,"props":666,"children":667},{},[668],{"type":45,"value":669},"CI\u002FCD systems with dynamic infrastructure needs",{"type":40,"tag":55,"props":671,"children":672},{},[673],{"type":40,"tag":583,"props":674,"children":675},{},[676],{"type":45,"value":677},"Replacing fragile scripts:",{"type":40,"tag":55,"props":679,"children":680},{},[681,683,688],{"type":45,"value":682},"If you have Bash scripts or Makefiles stitching together multiple ",{"type":40,"tag":107,"props":684,"children":686},{"className":685},[],[687],{"type":45,"value":8},{"type":45,"value":689}," commands, Automation API provides:",{"type":40,"tag":61,"props":691,"children":692},{},[693,698,703],{"type":40,"tag":65,"props":694,"children":695},{},[696],{"type":45,"value":697},"Proper error handling",{"type":40,"tag":65,"props":699,"children":700},{},[701],{"type":45,"value":702},"Type safety",{"type":40,"tag":65,"props":704,"children":705},{},[706],{"type":45,"value":707},"Programmatic access to outputs",{"type":40,"tag":573,"props":709,"children":711},{"id":710},"when-not-to-use",[712],{"type":45,"value":713},"When NOT to Use",{"type":40,"tag":61,"props":715,"children":716},{},[717,722],{"type":40,"tag":65,"props":718,"children":719},{},[720],{"type":45,"value":721},"Single project with standard deployment needs",{"type":40,"tag":65,"props":723,"children":724},{},[725],{"type":45,"value":726},"When you don't need programmatic control over operations",{"type":40,"tag":48,"props":728,"children":730},{"id":729},"architecture-choices",[731],{"type":45,"value":732},"Architecture Choices",{"type":40,"tag":573,"props":734,"children":736},{"id":735},"local-source-vs-inline-source",[737],{"type":45,"value":738},"Local Source vs Inline Source",{"type":40,"tag":55,"props":740,"children":741},{},[742,747],{"type":40,"tag":583,"props":743,"children":744},{},[745],{"type":45,"value":746},"Local Source",{"type":45,"value":748}," - Pulumi program in separate files:",{"type":40,"tag":116,"props":750,"children":752},{"className":118,"code":751,"language":120,"meta":121,"style":121},"const stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    workDir: \".\u002Finfrastructure\",  \u002F\u002F Points to existing Pulumi project\n});\n",[753],{"type":40,"tag":107,"props":754,"children":755},{"__ignoreMap":121},[756,803,830,865],{"type":40,"tag":127,"props":757,"children":758},{"class":129,"line":130},[759,763,767,771,775,779,783,787,791,795,799],{"type":40,"tag":127,"props":760,"children":761},{"style":206},[762],{"type":45,"value":209},{"type":40,"tag":127,"props":764,"children":765},{"style":151},[766],{"type":45,"value":214},{"type":40,"tag":127,"props":768,"children":769},{"style":140},[770],{"type":45,"value":219},{"type":40,"tag":127,"props":772,"children":773},{"style":134},[774],{"type":45,"value":224},{"type":40,"tag":127,"props":776,"children":777},{"style":151},[778],{"type":45,"value":229},{"type":40,"tag":127,"props":780,"children":781},{"style":140},[782],{"type":45,"value":234},{"type":40,"tag":127,"props":784,"children":785},{"style":151},[786],{"type":45,"value":239},{"type":40,"tag":127,"props":788,"children":789},{"style":140},[790],{"type":45,"value":234},{"type":40,"tag":127,"props":792,"children":793},{"style":246},[794],{"type":45,"value":249},{"type":40,"tag":127,"props":796,"children":797},{"style":151},[798],{"type":45,"value":254},{"type":40,"tag":127,"props":800,"children":801},{"style":140},[802],{"type":45,"value":259},{"type":40,"tag":127,"props":804,"children":805},{"class":129,"line":183},[806,810,814,818,822,826],{"type":40,"tag":127,"props":807,"children":808},{"style":266},[809],{"type":45,"value":269},{"type":40,"tag":127,"props":811,"children":812},{"style":140},[813],{"type":45,"value":274},{"type":40,"tag":127,"props":815,"children":816},{"style":140},[817],{"type":45,"value":164},{"type":40,"tag":127,"props":819,"children":820},{"style":167},[821],{"type":45,"value":283},{"type":40,"tag":127,"props":823,"children":824},{"style":140},[825],{"type":45,"value":175},{"type":40,"tag":127,"props":827,"children":828},{"style":140},[829],{"type":45,"value":292},{"type":40,"tag":127,"props":831,"children":832},{"class":129,"line":193},[833,838,842,846,851,855,860],{"type":40,"tag":127,"props":834,"children":835},{"style":266},[836],{"type":45,"value":837},"    workDir",{"type":40,"tag":127,"props":839,"children":840},{"style":140},[841],{"type":45,"value":274},{"type":40,"tag":127,"props":843,"children":844},{"style":140},[845],{"type":45,"value":164},{"type":40,"tag":127,"props":847,"children":848},{"style":167},[849],{"type":45,"value":850},".\u002Finfrastructure",{"type":40,"tag":127,"props":852,"children":853},{"style":140},[854],{"type":45,"value":175},{"type":40,"tag":127,"props":856,"children":857},{"style":140},[858],{"type":45,"value":859},",",{"type":40,"tag":127,"props":861,"children":862},{"style":197},[863],{"type":45,"value":864},"  \u002F\u002F Points to existing Pulumi project\n",{"type":40,"tag":127,"props":866,"children":867},{"class":129,"line":27},[868,872,876],{"type":40,"tag":127,"props":869,"children":870},{"style":140},[871],{"type":45,"value":382},{"type":40,"tag":127,"props":873,"children":874},{"style":151},[875],{"type":45,"value":387},{"type":40,"tag":127,"props":877,"children":878},{"style":140},[879],{"type":45,"value":180},{"type":40,"tag":55,"props":881,"children":882},{},[883],{"type":40,"tag":583,"props":884,"children":885},{},[886],{"type":45,"value":887},"When to use:",{"type":40,"tag":61,"props":889,"children":890},{},[891,896,901,906],{"type":40,"tag":65,"props":892,"children":893},{},[894],{"type":45,"value":895},"Different teams maintain orchestrator vs Pulumi programs",{"type":40,"tag":65,"props":897,"children":898},{},[899],{"type":45,"value":900},"Pulumi programs already exist",{"type":40,"tag":65,"props":902,"children":903},{},[904],{"type":45,"value":905},"Want independent version control and release cycles",{"type":40,"tag":65,"props":907,"children":908},{},[909],{"type":45,"value":910},"Platform team orchestrating application team's infrastructure",{"type":40,"tag":55,"props":912,"children":913},{},[914,919],{"type":40,"tag":583,"props":915,"children":916},{},[917],{"type":45,"value":918},"Inline Source",{"type":45,"value":920}," - Pulumi program embedded in orchestrator:",{"type":40,"tag":116,"props":922,"children":924},{"className":118,"code":923,"language":120,"meta":121,"style":121},"import * as aws from \"@pulumi\u002Faws\";\n\nconst stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    projectName: \"my-project\",\n    program: async () => {\n        const bucket = new aws.s3.Bucket(\"my-bucket\");\n        return { bucketName: bucket.id };\n    },\n});\n",[925],{"type":40,"tag":107,"props":926,"children":927},{"__ignoreMap":121},[928,969,976,1023,1050,1077,1104,1175,1215,1222],{"type":40,"tag":127,"props":929,"children":930},{"class":129,"line":130},[931,935,939,943,948,952,956,961,965],{"type":40,"tag":127,"props":932,"children":933},{"style":134},[934],{"type":45,"value":137},{"type":40,"tag":127,"props":936,"children":937},{"style":140},[938],{"type":45,"value":143},{"type":40,"tag":127,"props":940,"children":941},{"style":134},[942],{"type":45,"value":148},{"type":40,"tag":127,"props":944,"children":945},{"style":151},[946],{"type":45,"value":947}," aws ",{"type":40,"tag":127,"props":949,"children":950},{"style":134},[951],{"type":45,"value":159},{"type":40,"tag":127,"props":953,"children":954},{"style":140},[955],{"type":45,"value":164},{"type":40,"tag":127,"props":957,"children":958},{"style":167},[959],{"type":45,"value":960},"@pulumi\u002Faws",{"type":40,"tag":127,"props":962,"children":963},{"style":140},[964],{"type":45,"value":175},{"type":40,"tag":127,"props":966,"children":967},{"style":140},[968],{"type":45,"value":180},{"type":40,"tag":127,"props":970,"children":971},{"class":129,"line":183},[972],{"type":40,"tag":127,"props":973,"children":974},{"emptyLinePlaceholder":187},[975],{"type":45,"value":190},{"type":40,"tag":127,"props":977,"children":978},{"class":129,"line":193},[979,983,987,991,995,999,1003,1007,1011,1015,1019],{"type":40,"tag":127,"props":980,"children":981},{"style":206},[982],{"type":45,"value":209},{"type":40,"tag":127,"props":984,"children":985},{"style":151},[986],{"type":45,"value":214},{"type":40,"tag":127,"props":988,"children":989},{"style":140},[990],{"type":45,"value":219},{"type":40,"tag":127,"props":992,"children":993},{"style":134},[994],{"type":45,"value":224},{"type":40,"tag":127,"props":996,"children":997},{"style":151},[998],{"type":45,"value":229},{"type":40,"tag":127,"props":1000,"children":1001},{"style":140},[1002],{"type":45,"value":234},{"type":40,"tag":127,"props":1004,"children":1005},{"style":151},[1006],{"type":45,"value":239},{"type":40,"tag":127,"props":1008,"children":1009},{"style":140},[1010],{"type":45,"value":234},{"type":40,"tag":127,"props":1012,"children":1013},{"style":246},[1014],{"type":45,"value":249},{"type":40,"tag":127,"props":1016,"children":1017},{"style":151},[1018],{"type":45,"value":254},{"type":40,"tag":127,"props":1020,"children":1021},{"style":140},[1022],{"type":45,"value":259},{"type":40,"tag":127,"props":1024,"children":1025},{"class":129,"line":27},[1026,1030,1034,1038,1042,1046],{"type":40,"tag":127,"props":1027,"children":1028},{"style":266},[1029],{"type":45,"value":269},{"type":40,"tag":127,"props":1031,"children":1032},{"style":140},[1033],{"type":45,"value":274},{"type":40,"tag":127,"props":1035,"children":1036},{"style":140},[1037],{"type":45,"value":164},{"type":40,"tag":127,"props":1039,"children":1040},{"style":167},[1041],{"type":45,"value":283},{"type":40,"tag":127,"props":1043,"children":1044},{"style":140},[1045],{"type":45,"value":175},{"type":40,"tag":127,"props":1047,"children":1048},{"style":140},[1049],{"type":45,"value":292},{"type":40,"tag":127,"props":1051,"children":1052},{"class":129,"line":262},[1053,1057,1061,1065,1069,1073],{"type":40,"tag":127,"props":1054,"children":1055},{"style":266},[1056],{"type":45,"value":301},{"type":40,"tag":127,"props":1058,"children":1059},{"style":140},[1060],{"type":45,"value":274},{"type":40,"tag":127,"props":1062,"children":1063},{"style":140},[1064],{"type":45,"value":164},{"type":40,"tag":127,"props":1066,"children":1067},{"style":167},[1068],{"type":45,"value":314},{"type":40,"tag":127,"props":1070,"children":1071},{"style":140},[1072],{"type":45,"value":175},{"type":40,"tag":127,"props":1074,"children":1075},{"style":140},[1076],{"type":45,"value":292},{"type":40,"tag":127,"props":1078,"children":1079},{"class":129,"line":295},[1080,1084,1088,1092,1096,1100],{"type":40,"tag":127,"props":1081,"children":1082},{"style":246},[1083],{"type":45,"value":331},{"type":40,"tag":127,"props":1085,"children":1086},{"style":140},[1087],{"type":45,"value":274},{"type":40,"tag":127,"props":1089,"children":1090},{"style":206},[1091],{"type":45,"value":340},{"type":40,"tag":127,"props":1093,"children":1094},{"style":140},[1095],{"type":45,"value":345},{"type":40,"tag":127,"props":1097,"children":1098},{"style":206},[1099],{"type":45,"value":350},{"type":40,"tag":127,"props":1101,"children":1102},{"style":140},[1103],{"type":45,"value":355},{"type":40,"tag":127,"props":1105,"children":1106},{"class":129,"line":325},[1107,1112,1117,1122,1127,1132,1136,1141,1145,1150,1154,1158,1163,1167,1171],{"type":40,"tag":127,"props":1108,"children":1109},{"style":206},[1110],{"type":45,"value":1111},"        const",{"type":40,"tag":127,"props":1113,"children":1114},{"style":151},[1115],{"type":45,"value":1116}," bucket",{"type":40,"tag":127,"props":1118,"children":1119},{"style":140},[1120],{"type":45,"value":1121}," =",{"type":40,"tag":127,"props":1123,"children":1124},{"style":140},[1125],{"type":45,"value":1126}," new",{"type":40,"tag":127,"props":1128,"children":1129},{"style":151},[1130],{"type":45,"value":1131}," aws",{"type":40,"tag":127,"props":1133,"children":1134},{"style":140},[1135],{"type":45,"value":234},{"type":40,"tag":127,"props":1137,"children":1138},{"style":151},[1139],{"type":45,"value":1140},"s3",{"type":40,"tag":127,"props":1142,"children":1143},{"style":140},[1144],{"type":45,"value":234},{"type":40,"tag":127,"props":1146,"children":1147},{"style":246},[1148],{"type":45,"value":1149},"Bucket",{"type":40,"tag":127,"props":1151,"children":1152},{"style":266},[1153],{"type":45,"value":254},{"type":40,"tag":127,"props":1155,"children":1156},{"style":140},[1157],{"type":45,"value":175},{"type":40,"tag":127,"props":1159,"children":1160},{"style":167},[1161],{"type":45,"value":1162},"my-bucket",{"type":40,"tag":127,"props":1164,"children":1165},{"style":140},[1166],{"type":45,"value":175},{"type":40,"tag":127,"props":1168,"children":1169},{"style":266},[1170],{"type":45,"value":387},{"type":40,"tag":127,"props":1172,"children":1173},{"style":140},[1174],{"type":45,"value":180},{"type":40,"tag":127,"props":1176,"children":1177},{"class":129,"line":358},[1178,1183,1188,1193,1197,1201,1205,1210],{"type":40,"tag":127,"props":1179,"children":1180},{"style":134},[1181],{"type":45,"value":1182},"        return",{"type":40,"tag":127,"props":1184,"children":1185},{"style":140},[1186],{"type":45,"value":1187}," {",{"type":40,"tag":127,"props":1189,"children":1190},{"style":266},[1191],{"type":45,"value":1192}," bucketName",{"type":40,"tag":127,"props":1194,"children":1195},{"style":140},[1196],{"type":45,"value":274},{"type":40,"tag":127,"props":1198,"children":1199},{"style":151},[1200],{"type":45,"value":1116},{"type":40,"tag":127,"props":1202,"children":1203},{"style":140},[1204],{"type":45,"value":234},{"type":40,"tag":127,"props":1206,"children":1207},{"style":151},[1208],{"type":45,"value":1209},"id",{"type":40,"tag":127,"props":1211,"children":1212},{"style":140},[1213],{"type":45,"value":1214}," };\n",{"type":40,"tag":127,"props":1216,"children":1217},{"class":129,"line":367},[1218],{"type":40,"tag":127,"props":1219,"children":1220},{"style":140},[1221],{"type":45,"value":373},{"type":40,"tag":127,"props":1223,"children":1224},{"class":129,"line":376},[1225,1229,1233],{"type":40,"tag":127,"props":1226,"children":1227},{"style":140},[1228],{"type":45,"value":382},{"type":40,"tag":127,"props":1230,"children":1231},{"style":151},[1232],{"type":45,"value":387},{"type":40,"tag":127,"props":1234,"children":1235},{"style":140},[1236],{"type":45,"value":180},{"type":40,"tag":55,"props":1238,"children":1239},{},[1240],{"type":40,"tag":583,"props":1241,"children":1242},{},[1243],{"type":45,"value":887},{"type":40,"tag":61,"props":1245,"children":1246},{},[1247,1252,1257,1262],{"type":40,"tag":65,"props":1248,"children":1249},{},[1250],{"type":45,"value":1251},"Single team owns everything",{"type":40,"tag":65,"props":1253,"children":1254},{},[1255],{"type":45,"value":1256},"Tight coupling between orchestration and infrastructure is desired",{"type":40,"tag":65,"props":1258,"children":1259},{},[1260],{"type":45,"value":1261},"Distributing as compiled binary (no source files needed)",{"type":40,"tag":65,"props":1263,"children":1264},{},[1265],{"type":45,"value":1266},"Simpler deployment artifact",{"type":40,"tag":573,"props":1268,"children":1270},{"id":1269},"language-independence",[1271],{"type":45,"value":1272},"Language Independence",{"type":40,"tag":55,"props":1274,"children":1275},{},[1276],{"type":45,"value":1277},"The Automation API program can use a different language than the Pulumi programs it orchestrates:",{"type":40,"tag":116,"props":1279,"children":1282},{"className":1280,"code":1281,"language":45,"meta":121},[596],"Orchestrator (Go) → manages → Pulumi Program (TypeScript)\n",[1283],{"type":40,"tag":107,"props":1284,"children":1285},{"__ignoreMap":121},[1286],{"type":45,"value":1281},{"type":40,"tag":55,"props":1288,"children":1289},{},[1290],{"type":45,"value":1291},"This enables platform teams to use their preferred language while application teams use theirs.",{"type":40,"tag":48,"props":1293,"children":1295},{"id":1294},"common-patterns",[1296],{"type":45,"value":1297},"Common Patterns",{"type":40,"tag":573,"props":1299,"children":1301},{"id":1300},"multi-stack-orchestration",[1302],{"type":45,"value":1303},"Multi-Stack Orchestration",{"type":40,"tag":55,"props":1305,"children":1306},{},[1307],{"type":45,"value":1308},"Deploy multiple stacks in dependency order:",{"type":40,"tag":116,"props":1310,"children":1312},{"className":118,"code":1311,"language":120,"meta":121,"style":121},"import * as automation from \"@pulumi\u002Fpulumi\u002Fautomation\";\n\nasync function deploy() {\n    const stacks = [\n        { name: \"infrastructure\", dir: \".\u002Finfra\" },\n        { name: \"platform\", dir: \".\u002Fplatform\" },\n        { name: \"application\", dir: \".\u002Fapp\" },\n    ];\n\n    for (const stackInfo of stacks) {\n        console.log(`Deploying ${stackInfo.name}...`);\n\n        const stack = await automation.LocalWorkspace.createOrSelectStack({\n            stackName: \"prod\",\n            workDir: stackInfo.dir,\n        });\n\n        await stack.up({ onOutput: console.log });\n        console.log(`${stackInfo.name} deployed successfully`);\n    }\n}\n\nasync function destroy() {\n    \u002F\u002F Destroy in reverse order\n    const stacks = [\n        { name: \"application\", dir: \".\u002Fapp\" },\n        { name: \"platform\", dir: \".\u002Fplatform\" },\n        { name: \"infrastructure\", dir: \".\u002Finfra\" },\n    ];\n\n    for (const stackInfo of stacks) {\n        console.log(`Destroying ${stackInfo.name}...`);\n\n        const stack = await automation.LocalWorkspace.selectStack({\n            stackName: \"prod\",\n            workDir: stackInfo.dir,\n        });\n\n        await stack.destroy({ onOutput: console.log });\n    }\n}\n",[1313],{"type":40,"tag":107,"props":1314,"children":1315},{"__ignoreMap":121},[1316,1355,1362,1389,1411,1472,1529,1586,1598,1605,1645,1713,1720,1767,1796,1826,1843,1851,1913,1971,1980,1989,1997,2022,2031,2051,2107,2163,2219,2231,2239,2275,2340,2348,2397,2425,2453,2469,2477,2538,2546],{"type":40,"tag":127,"props":1317,"children":1318},{"class":129,"line":130},[1319,1323,1327,1331,1335,1339,1343,1347,1351],{"type":40,"tag":127,"props":1320,"children":1321},{"style":134},[1322],{"type":45,"value":137},{"type":40,"tag":127,"props":1324,"children":1325},{"style":140},[1326],{"type":45,"value":143},{"type":40,"tag":127,"props":1328,"children":1329},{"style":134},[1330],{"type":45,"value":148},{"type":40,"tag":127,"props":1332,"children":1333},{"style":151},[1334],{"type":45,"value":154},{"type":40,"tag":127,"props":1336,"children":1337},{"style":134},[1338],{"type":45,"value":159},{"type":40,"tag":127,"props":1340,"children":1341},{"style":140},[1342],{"type":45,"value":164},{"type":40,"tag":127,"props":1344,"children":1345},{"style":167},[1346],{"type":45,"value":170},{"type":40,"tag":127,"props":1348,"children":1349},{"style":140},[1350],{"type":45,"value":175},{"type":40,"tag":127,"props":1352,"children":1353},{"style":140},[1354],{"type":45,"value":180},{"type":40,"tag":127,"props":1356,"children":1357},{"class":129,"line":183},[1358],{"type":40,"tag":127,"props":1359,"children":1360},{"emptyLinePlaceholder":187},[1361],{"type":45,"value":190},{"type":40,"tag":127,"props":1363,"children":1364},{"class":129,"line":193},[1365,1370,1375,1380,1385],{"type":40,"tag":127,"props":1366,"children":1367},{"style":206},[1368],{"type":45,"value":1369},"async",{"type":40,"tag":127,"props":1371,"children":1372},{"style":206},[1373],{"type":45,"value":1374}," function",{"type":40,"tag":127,"props":1376,"children":1377},{"style":246},[1378],{"type":45,"value":1379}," deploy",{"type":40,"tag":127,"props":1381,"children":1382},{"style":140},[1383],{"type":45,"value":1384},"()",{"type":40,"tag":127,"props":1386,"children":1387},{"style":140},[1388],{"type":45,"value":355},{"type":40,"tag":127,"props":1390,"children":1391},{"class":129,"line":27},[1392,1397,1402,1406],{"type":40,"tag":127,"props":1393,"children":1394},{"style":206},[1395],{"type":45,"value":1396},"    const",{"type":40,"tag":127,"props":1398,"children":1399},{"style":151},[1400],{"type":45,"value":1401}," stacks",{"type":40,"tag":127,"props":1403,"children":1404},{"style":140},[1405],{"type":45,"value":1121},{"type":40,"tag":127,"props":1407,"children":1408},{"style":266},[1409],{"type":45,"value":1410}," [\n",{"type":40,"tag":127,"props":1412,"children":1413},{"class":129,"line":262},[1414,1419,1424,1428,1432,1437,1441,1445,1450,1454,1458,1463,1467],{"type":40,"tag":127,"props":1415,"children":1416},{"style":140},[1417],{"type":45,"value":1418},"        {",{"type":40,"tag":127,"props":1420,"children":1421},{"style":266},[1422],{"type":45,"value":1423}," name",{"type":40,"tag":127,"props":1425,"children":1426},{"style":140},[1427],{"type":45,"value":274},{"type":40,"tag":127,"props":1429,"children":1430},{"style":140},[1431],{"type":45,"value":164},{"type":40,"tag":127,"props":1433,"children":1434},{"style":167},[1435],{"type":45,"value":1436},"infrastructure",{"type":40,"tag":127,"props":1438,"children":1439},{"style":140},[1440],{"type":45,"value":175},{"type":40,"tag":127,"props":1442,"children":1443},{"style":140},[1444],{"type":45,"value":859},{"type":40,"tag":127,"props":1446,"children":1447},{"style":266},[1448],{"type":45,"value":1449}," dir",{"type":40,"tag":127,"props":1451,"children":1452},{"style":140},[1453],{"type":45,"value":274},{"type":40,"tag":127,"props":1455,"children":1456},{"style":140},[1457],{"type":45,"value":164},{"type":40,"tag":127,"props":1459,"children":1460},{"style":167},[1461],{"type":45,"value":1462},".\u002Finfra",{"type":40,"tag":127,"props":1464,"children":1465},{"style":140},[1466],{"type":45,"value":175},{"type":40,"tag":127,"props":1468,"children":1469},{"style":140},[1470],{"type":45,"value":1471}," },\n",{"type":40,"tag":127,"props":1473,"children":1474},{"class":129,"line":295},[1475,1479,1483,1487,1491,1496,1500,1504,1508,1512,1516,1521,1525],{"type":40,"tag":127,"props":1476,"children":1477},{"style":140},[1478],{"type":45,"value":1418},{"type":40,"tag":127,"props":1480,"children":1481},{"style":266},[1482],{"type":45,"value":1423},{"type":40,"tag":127,"props":1484,"children":1485},{"style":140},[1486],{"type":45,"value":274},{"type":40,"tag":127,"props":1488,"children":1489},{"style":140},[1490],{"type":45,"value":164},{"type":40,"tag":127,"props":1492,"children":1493},{"style":167},[1494],{"type":45,"value":1495},"platform",{"type":40,"tag":127,"props":1497,"children":1498},{"style":140},[1499],{"type":45,"value":175},{"type":40,"tag":127,"props":1501,"children":1502},{"style":140},[1503],{"type":45,"value":859},{"type":40,"tag":127,"props":1505,"children":1506},{"style":266},[1507],{"type":45,"value":1449},{"type":40,"tag":127,"props":1509,"children":1510},{"style":140},[1511],{"type":45,"value":274},{"type":40,"tag":127,"props":1513,"children":1514},{"style":140},[1515],{"type":45,"value":164},{"type":40,"tag":127,"props":1517,"children":1518},{"style":167},[1519],{"type":45,"value":1520},".\u002Fplatform",{"type":40,"tag":127,"props":1522,"children":1523},{"style":140},[1524],{"type":45,"value":175},{"type":40,"tag":127,"props":1526,"children":1527},{"style":140},[1528],{"type":45,"value":1471},{"type":40,"tag":127,"props":1530,"children":1531},{"class":129,"line":325},[1532,1536,1540,1544,1548,1553,1557,1561,1565,1569,1573,1578,1582],{"type":40,"tag":127,"props":1533,"children":1534},{"style":140},[1535],{"type":45,"value":1418},{"type":40,"tag":127,"props":1537,"children":1538},{"style":266},[1539],{"type":45,"value":1423},{"type":40,"tag":127,"props":1541,"children":1542},{"style":140},[1543],{"type":45,"value":274},{"type":40,"tag":127,"props":1545,"children":1546},{"style":140},[1547],{"type":45,"value":164},{"type":40,"tag":127,"props":1549,"children":1550},{"style":167},[1551],{"type":45,"value":1552},"application",{"type":40,"tag":127,"props":1554,"children":1555},{"style":140},[1556],{"type":45,"value":175},{"type":40,"tag":127,"props":1558,"children":1559},{"style":140},[1560],{"type":45,"value":859},{"type":40,"tag":127,"props":1562,"children":1563},{"style":266},[1564],{"type":45,"value":1449},{"type":40,"tag":127,"props":1566,"children":1567},{"style":140},[1568],{"type":45,"value":274},{"type":40,"tag":127,"props":1570,"children":1571},{"style":140},[1572],{"type":45,"value":164},{"type":40,"tag":127,"props":1574,"children":1575},{"style":167},[1576],{"type":45,"value":1577},".\u002Fapp",{"type":40,"tag":127,"props":1579,"children":1580},{"style":140},[1581],{"type":45,"value":175},{"type":40,"tag":127,"props":1583,"children":1584},{"style":140},[1585],{"type":45,"value":1471},{"type":40,"tag":127,"props":1587,"children":1588},{"class":129,"line":358},[1589,1594],{"type":40,"tag":127,"props":1590,"children":1591},{"style":266},[1592],{"type":45,"value":1593},"    ]",{"type":40,"tag":127,"props":1595,"children":1596},{"style":140},[1597],{"type":45,"value":180},{"type":40,"tag":127,"props":1599,"children":1600},{"class":129,"line":367},[1601],{"type":40,"tag":127,"props":1602,"children":1603},{"emptyLinePlaceholder":187},[1604],{"type":45,"value":190},{"type":40,"tag":127,"props":1606,"children":1607},{"class":129,"line":376},[1608,1613,1618,1622,1627,1632,1636,1641],{"type":40,"tag":127,"props":1609,"children":1610},{"style":134},[1611],{"type":45,"value":1612},"    for",{"type":40,"tag":127,"props":1614,"children":1615},{"style":266},[1616],{"type":45,"value":1617}," (",{"type":40,"tag":127,"props":1619,"children":1620},{"style":206},[1621],{"type":45,"value":209},{"type":40,"tag":127,"props":1623,"children":1624},{"style":151},[1625],{"type":45,"value":1626}," stackInfo",{"type":40,"tag":127,"props":1628,"children":1629},{"style":140},[1630],{"type":45,"value":1631}," of",{"type":40,"tag":127,"props":1633,"children":1634},{"style":151},[1635],{"type":45,"value":1401},{"type":40,"tag":127,"props":1637,"children":1638},{"style":266},[1639],{"type":45,"value":1640},") ",{"type":40,"tag":127,"props":1642,"children":1643},{"style":140},[1644],{"type":45,"value":259},{"type":40,"tag":127,"props":1646,"children":1647},{"class":129,"line":394},[1648,1653,1657,1661,1665,1669,1674,1678,1683,1687,1692,1696,1701,1705,1709],{"type":40,"tag":127,"props":1649,"children":1650},{"style":151},[1651],{"type":45,"value":1652},"        console",{"type":40,"tag":127,"props":1654,"children":1655},{"style":140},[1656],{"type":45,"value":234},{"type":40,"tag":127,"props":1658,"children":1659},{"style":246},[1660],{"type":45,"value":505},{"type":40,"tag":127,"props":1662,"children":1663},{"style":266},[1664],{"type":45,"value":254},{"type":40,"tag":127,"props":1666,"children":1667},{"style":140},[1668],{"type":45,"value":514},{"type":40,"tag":127,"props":1670,"children":1671},{"style":167},[1672],{"type":45,"value":1673},"Deploying ",{"type":40,"tag":127,"props":1675,"children":1676},{"style":140},[1677],{"type":45,"value":524},{"type":40,"tag":127,"props":1679,"children":1680},{"style":151},[1681],{"type":45,"value":1682},"stackInfo",{"type":40,"tag":127,"props":1684,"children":1685},{"style":140},[1686],{"type":45,"value":234},{"type":40,"tag":127,"props":1688,"children":1689},{"style":151},[1690],{"type":45,"value":1691},"name",{"type":40,"tag":127,"props":1693,"children":1694},{"style":140},[1695],{"type":45,"value":382},{"type":40,"tag":127,"props":1697,"children":1698},{"style":167},[1699],{"type":45,"value":1700},"...",{"type":40,"tag":127,"props":1702,"children":1703},{"style":140},[1704],{"type":45,"value":514},{"type":40,"tag":127,"props":1706,"children":1707},{"style":266},[1708],{"type":45,"value":387},{"type":40,"tag":127,"props":1710,"children":1711},{"style":140},[1712],{"type":45,"value":180},{"type":40,"tag":127,"props":1714,"children":1715},{"class":129,"line":402},[1716],{"type":40,"tag":127,"props":1717,"children":1718},{"emptyLinePlaceholder":187},[1719],{"type":45,"value":190},{"type":40,"tag":127,"props":1721,"children":1722},{"class":129,"line":411},[1723,1727,1731,1735,1739,1743,1747,1751,1755,1759,1763],{"type":40,"tag":127,"props":1724,"children":1725},{"style":206},[1726],{"type":45,"value":1111},{"type":40,"tag":127,"props":1728,"children":1729},{"style":151},[1730],{"type":45,"value":434},{"type":40,"tag":127,"props":1732,"children":1733},{"style":140},[1734],{"type":45,"value":1121},{"type":40,"tag":127,"props":1736,"children":1737},{"style":134},[1738],{"type":45,"value":224},{"type":40,"tag":127,"props":1740,"children":1741},{"style":151},[1742],{"type":45,"value":229},{"type":40,"tag":127,"props":1744,"children":1745},{"style":140},[1746],{"type":45,"value":234},{"type":40,"tag":127,"props":1748,"children":1749},{"style":151},[1750],{"type":45,"value":239},{"type":40,"tag":127,"props":1752,"children":1753},{"style":140},[1754],{"type":45,"value":234},{"type":40,"tag":127,"props":1756,"children":1757},{"style":246},[1758],{"type":45,"value":249},{"type":40,"tag":127,"props":1760,"children":1761},{"style":266},[1762],{"type":45,"value":254},{"type":40,"tag":127,"props":1764,"children":1765},{"style":140},[1766],{"type":45,"value":259},{"type":40,"tag":127,"props":1768,"children":1769},{"class":129,"line":490},[1770,1775,1779,1783,1788,1792],{"type":40,"tag":127,"props":1771,"children":1772},{"style":266},[1773],{"type":45,"value":1774},"            stackName",{"type":40,"tag":127,"props":1776,"children":1777},{"style":140},[1778],{"type":45,"value":274},{"type":40,"tag":127,"props":1780,"children":1781},{"style":140},[1782],{"type":45,"value":164},{"type":40,"tag":127,"props":1784,"children":1785},{"style":167},[1786],{"type":45,"value":1787},"prod",{"type":40,"tag":127,"props":1789,"children":1790},{"style":140},[1791],{"type":45,"value":175},{"type":40,"tag":127,"props":1793,"children":1794},{"style":140},[1795],{"type":45,"value":292},{"type":40,"tag":127,"props":1797,"children":1799},{"class":129,"line":1798},15,[1800,1805,1809,1813,1817,1822],{"type":40,"tag":127,"props":1801,"children":1802},{"style":266},[1803],{"type":45,"value":1804},"            workDir",{"type":40,"tag":127,"props":1806,"children":1807},{"style":140},[1808],{"type":45,"value":274},{"type":40,"tag":127,"props":1810,"children":1811},{"style":151},[1812],{"type":45,"value":1626},{"type":40,"tag":127,"props":1814,"children":1815},{"style":140},[1816],{"type":45,"value":234},{"type":40,"tag":127,"props":1818,"children":1819},{"style":151},[1820],{"type":45,"value":1821},"dir",{"type":40,"tag":127,"props":1823,"children":1824},{"style":140},[1825],{"type":45,"value":292},{"type":40,"tag":127,"props":1827,"children":1829},{"class":129,"line":1828},16,[1830,1835,1839],{"type":40,"tag":127,"props":1831,"children":1832},{"style":140},[1833],{"type":45,"value":1834},"        }",{"type":40,"tag":127,"props":1836,"children":1837},{"style":266},[1838],{"type":45,"value":387},{"type":40,"tag":127,"props":1840,"children":1841},{"style":140},[1842],{"type":45,"value":180},{"type":40,"tag":127,"props":1844,"children":1846},{"class":129,"line":1845},17,[1847],{"type":40,"tag":127,"props":1848,"children":1849},{"emptyLinePlaceholder":187},[1850],{"type":45,"value":190},{"type":40,"tag":127,"props":1852,"children":1854},{"class":129,"line":1853},18,[1855,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896,1900,1905,1909],{"type":40,"tag":127,"props":1856,"children":1857},{"style":134},[1858],{"type":45,"value":1859},"        await",{"type":40,"tag":127,"props":1861,"children":1862},{"style":151},[1863],{"type":45,"value":434},{"type":40,"tag":127,"props":1865,"children":1866},{"style":140},[1867],{"type":45,"value":234},{"type":40,"tag":127,"props":1869,"children":1870},{"style":246},[1871],{"type":45,"value":443},{"type":40,"tag":127,"props":1873,"children":1874},{"style":266},[1875],{"type":45,"value":254},{"type":40,"tag":127,"props":1877,"children":1878},{"style":140},[1879],{"type":45,"value":452},{"type":40,"tag":127,"props":1881,"children":1882},{"style":266},[1883],{"type":45,"value":457},{"type":40,"tag":127,"props":1885,"children":1886},{"style":140},[1887],{"type":45,"value":274},{"type":40,"tag":127,"props":1889,"children":1890},{"style":151},[1891],{"type":45,"value":466},{"type":40,"tag":127,"props":1893,"children":1894},{"style":140},[1895],{"type":45,"value":234},{"type":40,"tag":127,"props":1897,"children":1898},{"style":151},[1899],{"type":45,"value":505},{"type":40,"tag":127,"props":1901,"children":1902},{"style":140},[1903],{"type":45,"value":1904}," }",{"type":40,"tag":127,"props":1906,"children":1907},{"style":266},[1908],{"type":45,"value":387},{"type":40,"tag":127,"props":1910,"children":1911},{"style":140},[1912],{"type":45,"value":180},{"type":40,"tag":127,"props":1914,"children":1916},{"class":129,"line":1915},19,[1917,1921,1925,1929,1933,1938,1942,1946,1950,1954,1959,1963,1967],{"type":40,"tag":127,"props":1918,"children":1919},{"style":151},[1920],{"type":45,"value":1652},{"type":40,"tag":127,"props":1922,"children":1923},{"style":140},[1924],{"type":45,"value":234},{"type":40,"tag":127,"props":1926,"children":1927},{"style":246},[1928],{"type":45,"value":505},{"type":40,"tag":127,"props":1930,"children":1931},{"style":266},[1932],{"type":45,"value":254},{"type":40,"tag":127,"props":1934,"children":1935},{"style":140},[1936],{"type":45,"value":1937},"`${",{"type":40,"tag":127,"props":1939,"children":1940},{"style":151},[1941],{"type":45,"value":1682},{"type":40,"tag":127,"props":1943,"children":1944},{"style":140},[1945],{"type":45,"value":234},{"type":40,"tag":127,"props":1947,"children":1948},{"style":151},[1949],{"type":45,"value":1691},{"type":40,"tag":127,"props":1951,"children":1952},{"style":140},[1953],{"type":45,"value":382},{"type":40,"tag":127,"props":1955,"children":1956},{"style":167},[1957],{"type":45,"value":1958}," deployed successfully",{"type":40,"tag":127,"props":1960,"children":1961},{"style":140},[1962],{"type":45,"value":514},{"type":40,"tag":127,"props":1964,"children":1965},{"style":266},[1966],{"type":45,"value":387},{"type":40,"tag":127,"props":1968,"children":1969},{"style":140},[1970],{"type":45,"value":180},{"type":40,"tag":127,"props":1972,"children":1974},{"class":129,"line":1973},20,[1975],{"type":40,"tag":127,"props":1976,"children":1977},{"style":140},[1978],{"type":45,"value":1979},"    }\n",{"type":40,"tag":127,"props":1981,"children":1983},{"class":129,"line":1982},21,[1984],{"type":40,"tag":127,"props":1985,"children":1986},{"style":140},[1987],{"type":45,"value":1988},"}\n",{"type":40,"tag":127,"props":1990,"children":1992},{"class":129,"line":1991},22,[1993],{"type":40,"tag":127,"props":1994,"children":1995},{"emptyLinePlaceholder":187},[1996],{"type":45,"value":190},{"type":40,"tag":127,"props":1998,"children":2000},{"class":129,"line":1999},23,[2001,2005,2009,2014,2018],{"type":40,"tag":127,"props":2002,"children":2003},{"style":206},[2004],{"type":45,"value":1369},{"type":40,"tag":127,"props":2006,"children":2007},{"style":206},[2008],{"type":45,"value":1374},{"type":40,"tag":127,"props":2010,"children":2011},{"style":246},[2012],{"type":45,"value":2013}," destroy",{"type":40,"tag":127,"props":2015,"children":2016},{"style":140},[2017],{"type":45,"value":1384},{"type":40,"tag":127,"props":2019,"children":2020},{"style":140},[2021],{"type":45,"value":355},{"type":40,"tag":127,"props":2023,"children":2025},{"class":129,"line":2024},24,[2026],{"type":40,"tag":127,"props":2027,"children":2028},{"style":197},[2029],{"type":45,"value":2030},"    \u002F\u002F Destroy in reverse order\n",{"type":40,"tag":127,"props":2032,"children":2034},{"class":129,"line":2033},25,[2035,2039,2043,2047],{"type":40,"tag":127,"props":2036,"children":2037},{"style":206},[2038],{"type":45,"value":1396},{"type":40,"tag":127,"props":2040,"children":2041},{"style":151},[2042],{"type":45,"value":1401},{"type":40,"tag":127,"props":2044,"children":2045},{"style":140},[2046],{"type":45,"value":1121},{"type":40,"tag":127,"props":2048,"children":2049},{"style":266},[2050],{"type":45,"value":1410},{"type":40,"tag":127,"props":2052,"children":2054},{"class":129,"line":2053},26,[2055,2059,2063,2067,2071,2075,2079,2083,2087,2091,2095,2099,2103],{"type":40,"tag":127,"props":2056,"children":2057},{"style":140},[2058],{"type":45,"value":1418},{"type":40,"tag":127,"props":2060,"children":2061},{"style":266},[2062],{"type":45,"value":1423},{"type":40,"tag":127,"props":2064,"children":2065},{"style":140},[2066],{"type":45,"value":274},{"type":40,"tag":127,"props":2068,"children":2069},{"style":140},[2070],{"type":45,"value":164},{"type":40,"tag":127,"props":2072,"children":2073},{"style":167},[2074],{"type":45,"value":1552},{"type":40,"tag":127,"props":2076,"children":2077},{"style":140},[2078],{"type":45,"value":175},{"type":40,"tag":127,"props":2080,"children":2081},{"style":140},[2082],{"type":45,"value":859},{"type":40,"tag":127,"props":2084,"children":2085},{"style":266},[2086],{"type":45,"value":1449},{"type":40,"tag":127,"props":2088,"children":2089},{"style":140},[2090],{"type":45,"value":274},{"type":40,"tag":127,"props":2092,"children":2093},{"style":140},[2094],{"type":45,"value":164},{"type":40,"tag":127,"props":2096,"children":2097},{"style":167},[2098],{"type":45,"value":1577},{"type":40,"tag":127,"props":2100,"children":2101},{"style":140},[2102],{"type":45,"value":175},{"type":40,"tag":127,"props":2104,"children":2105},{"style":140},[2106],{"type":45,"value":1471},{"type":40,"tag":127,"props":2108,"children":2110},{"class":129,"line":2109},27,[2111,2115,2119,2123,2127,2131,2135,2139,2143,2147,2151,2155,2159],{"type":40,"tag":127,"props":2112,"children":2113},{"style":140},[2114],{"type":45,"value":1418},{"type":40,"tag":127,"props":2116,"children":2117},{"style":266},[2118],{"type":45,"value":1423},{"type":40,"tag":127,"props":2120,"children":2121},{"style":140},[2122],{"type":45,"value":274},{"type":40,"tag":127,"props":2124,"children":2125},{"style":140},[2126],{"type":45,"value":164},{"type":40,"tag":127,"props":2128,"children":2129},{"style":167},[2130],{"type":45,"value":1495},{"type":40,"tag":127,"props":2132,"children":2133},{"style":140},[2134],{"type":45,"value":175},{"type":40,"tag":127,"props":2136,"children":2137},{"style":140},[2138],{"type":45,"value":859},{"type":40,"tag":127,"props":2140,"children":2141},{"style":266},[2142],{"type":45,"value":1449},{"type":40,"tag":127,"props":2144,"children":2145},{"style":140},[2146],{"type":45,"value":274},{"type":40,"tag":127,"props":2148,"children":2149},{"style":140},[2150],{"type":45,"value":164},{"type":40,"tag":127,"props":2152,"children":2153},{"style":167},[2154],{"type":45,"value":1520},{"type":40,"tag":127,"props":2156,"children":2157},{"style":140},[2158],{"type":45,"value":175},{"type":40,"tag":127,"props":2160,"children":2161},{"style":140},[2162],{"type":45,"value":1471},{"type":40,"tag":127,"props":2164,"children":2166},{"class":129,"line":2165},28,[2167,2171,2175,2179,2183,2187,2191,2195,2199,2203,2207,2211,2215],{"type":40,"tag":127,"props":2168,"children":2169},{"style":140},[2170],{"type":45,"value":1418},{"type":40,"tag":127,"props":2172,"children":2173},{"style":266},[2174],{"type":45,"value":1423},{"type":40,"tag":127,"props":2176,"children":2177},{"style":140},[2178],{"type":45,"value":274},{"type":40,"tag":127,"props":2180,"children":2181},{"style":140},[2182],{"type":45,"value":164},{"type":40,"tag":127,"props":2184,"children":2185},{"style":167},[2186],{"type":45,"value":1436},{"type":40,"tag":127,"props":2188,"children":2189},{"style":140},[2190],{"type":45,"value":175},{"type":40,"tag":127,"props":2192,"children":2193},{"style":140},[2194],{"type":45,"value":859},{"type":40,"tag":127,"props":2196,"children":2197},{"style":266},[2198],{"type":45,"value":1449},{"type":40,"tag":127,"props":2200,"children":2201},{"style":140},[2202],{"type":45,"value":274},{"type":40,"tag":127,"props":2204,"children":2205},{"style":140},[2206],{"type":45,"value":164},{"type":40,"tag":127,"props":2208,"children":2209},{"style":167},[2210],{"type":45,"value":1462},{"type":40,"tag":127,"props":2212,"children":2213},{"style":140},[2214],{"type":45,"value":175},{"type":40,"tag":127,"props":2216,"children":2217},{"style":140},[2218],{"type":45,"value":1471},{"type":40,"tag":127,"props":2220,"children":2222},{"class":129,"line":2221},29,[2223,2227],{"type":40,"tag":127,"props":2224,"children":2225},{"style":266},[2226],{"type":45,"value":1593},{"type":40,"tag":127,"props":2228,"children":2229},{"style":140},[2230],{"type":45,"value":180},{"type":40,"tag":127,"props":2232,"children":2234},{"class":129,"line":2233},30,[2235],{"type":40,"tag":127,"props":2236,"children":2237},{"emptyLinePlaceholder":187},[2238],{"type":45,"value":190},{"type":40,"tag":127,"props":2240,"children":2242},{"class":129,"line":2241},31,[2243,2247,2251,2255,2259,2263,2267,2271],{"type":40,"tag":127,"props":2244,"children":2245},{"style":134},[2246],{"type":45,"value":1612},{"type":40,"tag":127,"props":2248,"children":2249},{"style":266},[2250],{"type":45,"value":1617},{"type":40,"tag":127,"props":2252,"children":2253},{"style":206},[2254],{"type":45,"value":209},{"type":40,"tag":127,"props":2256,"children":2257},{"style":151},[2258],{"type":45,"value":1626},{"type":40,"tag":127,"props":2260,"children":2261},{"style":140},[2262],{"type":45,"value":1631},{"type":40,"tag":127,"props":2264,"children":2265},{"style":151},[2266],{"type":45,"value":1401},{"type":40,"tag":127,"props":2268,"children":2269},{"style":266},[2270],{"type":45,"value":1640},{"type":40,"tag":127,"props":2272,"children":2273},{"style":140},[2274],{"type":45,"value":259},{"type":40,"tag":127,"props":2276,"children":2278},{"class":129,"line":2277},32,[2279,2283,2287,2291,2295,2299,2304,2308,2312,2316,2320,2324,2328,2332,2336],{"type":40,"tag":127,"props":2280,"children":2281},{"style":151},[2282],{"type":45,"value":1652},{"type":40,"tag":127,"props":2284,"children":2285},{"style":140},[2286],{"type":45,"value":234},{"type":40,"tag":127,"props":2288,"children":2289},{"style":246},[2290],{"type":45,"value":505},{"type":40,"tag":127,"props":2292,"children":2293},{"style":266},[2294],{"type":45,"value":254},{"type":40,"tag":127,"props":2296,"children":2297},{"style":140},[2298],{"type":45,"value":514},{"type":40,"tag":127,"props":2300,"children":2301},{"style":167},[2302],{"type":45,"value":2303},"Destroying ",{"type":40,"tag":127,"props":2305,"children":2306},{"style":140},[2307],{"type":45,"value":524},{"type":40,"tag":127,"props":2309,"children":2310},{"style":151},[2311],{"type":45,"value":1682},{"type":40,"tag":127,"props":2313,"children":2314},{"style":140},[2315],{"type":45,"value":234},{"type":40,"tag":127,"props":2317,"children":2318},{"style":151},[2319],{"type":45,"value":1691},{"type":40,"tag":127,"props":2321,"children":2322},{"style":140},[2323],{"type":45,"value":382},{"type":40,"tag":127,"props":2325,"children":2326},{"style":167},[2327],{"type":45,"value":1700},{"type":40,"tag":127,"props":2329,"children":2330},{"style":140},[2331],{"type":45,"value":514},{"type":40,"tag":127,"props":2333,"children":2334},{"style":266},[2335],{"type":45,"value":387},{"type":40,"tag":127,"props":2337,"children":2338},{"style":140},[2339],{"type":45,"value":180},{"type":40,"tag":127,"props":2341,"children":2343},{"class":129,"line":2342},33,[2344],{"type":40,"tag":127,"props":2345,"children":2346},{"emptyLinePlaceholder":187},[2347],{"type":45,"value":190},{"type":40,"tag":127,"props":2349,"children":2351},{"class":129,"line":2350},34,[2352,2356,2360,2364,2368,2372,2376,2380,2384,2389,2393],{"type":40,"tag":127,"props":2353,"children":2354},{"style":206},[2355],{"type":45,"value":1111},{"type":40,"tag":127,"props":2357,"children":2358},{"style":151},[2359],{"type":45,"value":434},{"type":40,"tag":127,"props":2361,"children":2362},{"style":140},[2363],{"type":45,"value":1121},{"type":40,"tag":127,"props":2365,"children":2366},{"style":134},[2367],{"type":45,"value":224},{"type":40,"tag":127,"props":2369,"children":2370},{"style":151},[2371],{"type":45,"value":229},{"type":40,"tag":127,"props":2373,"children":2374},{"style":140},[2375],{"type":45,"value":234},{"type":40,"tag":127,"props":2377,"children":2378},{"style":151},[2379],{"type":45,"value":239},{"type":40,"tag":127,"props":2381,"children":2382},{"style":140},[2383],{"type":45,"value":234},{"type":40,"tag":127,"props":2385,"children":2386},{"style":246},[2387],{"type":45,"value":2388},"selectStack",{"type":40,"tag":127,"props":2390,"children":2391},{"style":266},[2392],{"type":45,"value":254},{"type":40,"tag":127,"props":2394,"children":2395},{"style":140},[2396],{"type":45,"value":259},{"type":40,"tag":127,"props":2398,"children":2400},{"class":129,"line":2399},35,[2401,2405,2409,2413,2417,2421],{"type":40,"tag":127,"props":2402,"children":2403},{"style":266},[2404],{"type":45,"value":1774},{"type":40,"tag":127,"props":2406,"children":2407},{"style":140},[2408],{"type":45,"value":274},{"type":40,"tag":127,"props":2410,"children":2411},{"style":140},[2412],{"type":45,"value":164},{"type":40,"tag":127,"props":2414,"children":2415},{"style":167},[2416],{"type":45,"value":1787},{"type":40,"tag":127,"props":2418,"children":2419},{"style":140},[2420],{"type":45,"value":175},{"type":40,"tag":127,"props":2422,"children":2423},{"style":140},[2424],{"type":45,"value":292},{"type":40,"tag":127,"props":2426,"children":2428},{"class":129,"line":2427},36,[2429,2433,2437,2441,2445,2449],{"type":40,"tag":127,"props":2430,"children":2431},{"style":266},[2432],{"type":45,"value":1804},{"type":40,"tag":127,"props":2434,"children":2435},{"style":140},[2436],{"type":45,"value":274},{"type":40,"tag":127,"props":2438,"children":2439},{"style":151},[2440],{"type":45,"value":1626},{"type":40,"tag":127,"props":2442,"children":2443},{"style":140},[2444],{"type":45,"value":234},{"type":40,"tag":127,"props":2446,"children":2447},{"style":151},[2448],{"type":45,"value":1821},{"type":40,"tag":127,"props":2450,"children":2451},{"style":140},[2452],{"type":45,"value":292},{"type":40,"tag":127,"props":2454,"children":2456},{"class":129,"line":2455},37,[2457,2461,2465],{"type":40,"tag":127,"props":2458,"children":2459},{"style":140},[2460],{"type":45,"value":1834},{"type":40,"tag":127,"props":2462,"children":2463},{"style":266},[2464],{"type":45,"value":387},{"type":40,"tag":127,"props":2466,"children":2467},{"style":140},[2468],{"type":45,"value":180},{"type":40,"tag":127,"props":2470,"children":2472},{"class":129,"line":2471},38,[2473],{"type":40,"tag":127,"props":2474,"children":2475},{"emptyLinePlaceholder":187},[2476],{"type":45,"value":190},{"type":40,"tag":127,"props":2478,"children":2480},{"class":129,"line":2479},39,[2481,2485,2489,2493,2498,2502,2506,2510,2514,2518,2522,2526,2530,2534],{"type":40,"tag":127,"props":2482,"children":2483},{"style":134},[2484],{"type":45,"value":1859},{"type":40,"tag":127,"props":2486,"children":2487},{"style":151},[2488],{"type":45,"value":434},{"type":40,"tag":127,"props":2490,"children":2491},{"style":140},[2492],{"type":45,"value":234},{"type":40,"tag":127,"props":2494,"children":2495},{"style":246},[2496],{"type":45,"value":2497},"destroy",{"type":40,"tag":127,"props":2499,"children":2500},{"style":266},[2501],{"type":45,"value":254},{"type":40,"tag":127,"props":2503,"children":2504},{"style":140},[2505],{"type":45,"value":452},{"type":40,"tag":127,"props":2507,"children":2508},{"style":266},[2509],{"type":45,"value":457},{"type":40,"tag":127,"props":2511,"children":2512},{"style":140},[2513],{"type":45,"value":274},{"type":40,"tag":127,"props":2515,"children":2516},{"style":151},[2517],{"type":45,"value":466},{"type":40,"tag":127,"props":2519,"children":2520},{"style":140},[2521],{"type":45,"value":234},{"type":40,"tag":127,"props":2523,"children":2524},{"style":151},[2525],{"type":45,"value":505},{"type":40,"tag":127,"props":2527,"children":2528},{"style":140},[2529],{"type":45,"value":1904},{"type":40,"tag":127,"props":2531,"children":2532},{"style":266},[2533],{"type":45,"value":387},{"type":40,"tag":127,"props":2535,"children":2536},{"style":140},[2537],{"type":45,"value":180},{"type":40,"tag":127,"props":2539,"children":2541},{"class":129,"line":2540},40,[2542],{"type":40,"tag":127,"props":2543,"children":2544},{"style":140},[2545],{"type":45,"value":1979},{"type":40,"tag":127,"props":2547,"children":2549},{"class":129,"line":2548},41,[2550],{"type":40,"tag":127,"props":2551,"children":2552},{"style":140},[2553],{"type":45,"value":1988},{"type":40,"tag":573,"props":2555,"children":2557},{"id":2556},"passing-configuration",[2558],{"type":45,"value":2559},"Passing Configuration",{"type":40,"tag":55,"props":2561,"children":2562},{},[2563],{"type":45,"value":2564},"Set stack configuration programmatically:",{"type":40,"tag":116,"props":2566,"children":2568},{"className":118,"code":2567,"language":120,"meta":121,"style":121},"const stack = await automation.LocalWorkspace.createOrSelectStack({\n    stackName: \"dev\",\n    workDir: \".\u002Finfrastructure\",\n});\n\n\u002F\u002F Set configuration values\nawait stack.setConfig(\"aws:region\", { value: \"us-west-2\" });\nawait stack.setConfig(\"dbPassword\", { value: \"secret\", secret: true });\n\n\u002F\u002F Then deploy\nawait stack.up();\n",[2569],{"type":40,"tag":107,"props":2570,"children":2571},{"__ignoreMap":121},[2572,2619,2646,2673,2688,2695,2703,2783,2879,2886,2894],{"type":40,"tag":127,"props":2573,"children":2574},{"class":129,"line":130},[2575,2579,2583,2587,2591,2595,2599,2603,2607,2611,2615],{"type":40,"tag":127,"props":2576,"children":2577},{"style":206},[2578],{"type":45,"value":209},{"type":40,"tag":127,"props":2580,"children":2581},{"style":151},[2582],{"type":45,"value":214},{"type":40,"tag":127,"props":2584,"children":2585},{"style":140},[2586],{"type":45,"value":219},{"type":40,"tag":127,"props":2588,"children":2589},{"style":134},[2590],{"type":45,"value":224},{"type":40,"tag":127,"props":2592,"children":2593},{"style":151},[2594],{"type":45,"value":229},{"type":40,"tag":127,"props":2596,"children":2597},{"style":140},[2598],{"type":45,"value":234},{"type":40,"tag":127,"props":2600,"children":2601},{"style":151},[2602],{"type":45,"value":239},{"type":40,"tag":127,"props":2604,"children":2605},{"style":140},[2606],{"type":45,"value":234},{"type":40,"tag":127,"props":2608,"children":2609},{"style":246},[2610],{"type":45,"value":249},{"type":40,"tag":127,"props":2612,"children":2613},{"style":151},[2614],{"type":45,"value":254},{"type":40,"tag":127,"props":2616,"children":2617},{"style":140},[2618],{"type":45,"value":259},{"type":40,"tag":127,"props":2620,"children":2621},{"class":129,"line":183},[2622,2626,2630,2634,2638,2642],{"type":40,"tag":127,"props":2623,"children":2624},{"style":266},[2625],{"type":45,"value":269},{"type":40,"tag":127,"props":2627,"children":2628},{"style":140},[2629],{"type":45,"value":274},{"type":40,"tag":127,"props":2631,"children":2632},{"style":140},[2633],{"type":45,"value":164},{"type":40,"tag":127,"props":2635,"children":2636},{"style":167},[2637],{"type":45,"value":283},{"type":40,"tag":127,"props":2639,"children":2640},{"style":140},[2641],{"type":45,"value":175},{"type":40,"tag":127,"props":2643,"children":2644},{"style":140},[2645],{"type":45,"value":292},{"type":40,"tag":127,"props":2647,"children":2648},{"class":129,"line":193},[2649,2653,2657,2661,2665,2669],{"type":40,"tag":127,"props":2650,"children":2651},{"style":266},[2652],{"type":45,"value":837},{"type":40,"tag":127,"props":2654,"children":2655},{"style":140},[2656],{"type":45,"value":274},{"type":40,"tag":127,"props":2658,"children":2659},{"style":140},[2660],{"type":45,"value":164},{"type":40,"tag":127,"props":2662,"children":2663},{"style":167},[2664],{"type":45,"value":850},{"type":40,"tag":127,"props":2666,"children":2667},{"style":140},[2668],{"type":45,"value":175},{"type":40,"tag":127,"props":2670,"children":2671},{"style":140},[2672],{"type":45,"value":292},{"type":40,"tag":127,"props":2674,"children":2675},{"class":129,"line":27},[2676,2680,2684],{"type":40,"tag":127,"props":2677,"children":2678},{"style":140},[2679],{"type":45,"value":382},{"type":40,"tag":127,"props":2681,"children":2682},{"style":151},[2683],{"type":45,"value":387},{"type":40,"tag":127,"props":2685,"children":2686},{"style":140},[2687],{"type":45,"value":180},{"type":40,"tag":127,"props":2689,"children":2690},{"class":129,"line":262},[2691],{"type":40,"tag":127,"props":2692,"children":2693},{"emptyLinePlaceholder":187},[2694],{"type":45,"value":190},{"type":40,"tag":127,"props":2696,"children":2697},{"class":129,"line":295},[2698],{"type":40,"tag":127,"props":2699,"children":2700},{"style":197},[2701],{"type":45,"value":2702},"\u002F\u002F Set configuration values\n",{"type":40,"tag":127,"props":2704,"children":2705},{"class":129,"line":325},[2706,2711,2715,2719,2724,2728,2732,2737,2741,2745,2749,2754,2758,2762,2767,2771,2775,2779],{"type":40,"tag":127,"props":2707,"children":2708},{"style":134},[2709],{"type":45,"value":2710},"await",{"type":40,"tag":127,"props":2712,"children":2713},{"style":151},[2714],{"type":45,"value":434},{"type":40,"tag":127,"props":2716,"children":2717},{"style":140},[2718],{"type":45,"value":234},{"type":40,"tag":127,"props":2720,"children":2721},{"style":246},[2722],{"type":45,"value":2723},"setConfig",{"type":40,"tag":127,"props":2725,"children":2726},{"style":151},[2727],{"type":45,"value":254},{"type":40,"tag":127,"props":2729,"children":2730},{"style":140},[2731],{"type":45,"value":175},{"type":40,"tag":127,"props":2733,"children":2734},{"style":167},[2735],{"type":45,"value":2736},"aws:region",{"type":40,"tag":127,"props":2738,"children":2739},{"style":140},[2740],{"type":45,"value":175},{"type":40,"tag":127,"props":2742,"children":2743},{"style":140},[2744],{"type":45,"value":859},{"type":40,"tag":127,"props":2746,"children":2747},{"style":140},[2748],{"type":45,"value":1187},{"type":40,"tag":127,"props":2750,"children":2751},{"style":266},[2752],{"type":45,"value":2753}," value",{"type":40,"tag":127,"props":2755,"children":2756},{"style":140},[2757],{"type":45,"value":274},{"type":40,"tag":127,"props":2759,"children":2760},{"style":140},[2761],{"type":45,"value":164},{"type":40,"tag":127,"props":2763,"children":2764},{"style":167},[2765],{"type":45,"value":2766},"us-west-2",{"type":40,"tag":127,"props":2768,"children":2769},{"style":140},[2770],{"type":45,"value":175},{"type":40,"tag":127,"props":2772,"children":2773},{"style":140},[2774],{"type":45,"value":1904},{"type":40,"tag":127,"props":2776,"children":2777},{"style":151},[2778],{"type":45,"value":387},{"type":40,"tag":127,"props":2780,"children":2781},{"style":140},[2782],{"type":45,"value":180},{"type":40,"tag":127,"props":2784,"children":2785},{"class":129,"line":358},[2786,2790,2794,2798,2802,2806,2810,2815,2819,2823,2827,2831,2835,2839,2844,2848,2852,2857,2861,2867,2871,2875],{"type":40,"tag":127,"props":2787,"children":2788},{"style":134},[2789],{"type":45,"value":2710},{"type":40,"tag":127,"props":2791,"children":2792},{"style":151},[2793],{"type":45,"value":434},{"type":40,"tag":127,"props":2795,"children":2796},{"style":140},[2797],{"type":45,"value":234},{"type":40,"tag":127,"props":2799,"children":2800},{"style":246},[2801],{"type":45,"value":2723},{"type":40,"tag":127,"props":2803,"children":2804},{"style":151},[2805],{"type":45,"value":254},{"type":40,"tag":127,"props":2807,"children":2808},{"style":140},[2809],{"type":45,"value":175},{"type":40,"tag":127,"props":2811,"children":2812},{"style":167},[2813],{"type":45,"value":2814},"dbPassword",{"type":40,"tag":127,"props":2816,"children":2817},{"style":140},[2818],{"type":45,"value":175},{"type":40,"tag":127,"props":2820,"children":2821},{"style":140},[2822],{"type":45,"value":859},{"type":40,"tag":127,"props":2824,"children":2825},{"style":140},[2826],{"type":45,"value":1187},{"type":40,"tag":127,"props":2828,"children":2829},{"style":266},[2830],{"type":45,"value":2753},{"type":40,"tag":127,"props":2832,"children":2833},{"style":140},[2834],{"type":45,"value":274},{"type":40,"tag":127,"props":2836,"children":2837},{"style":140},[2838],{"type":45,"value":164},{"type":40,"tag":127,"props":2840,"children":2841},{"style":167},[2842],{"type":45,"value":2843},"secret",{"type":40,"tag":127,"props":2845,"children":2846},{"style":140},[2847],{"type":45,"value":175},{"type":40,"tag":127,"props":2849,"children":2850},{"style":140},[2851],{"type":45,"value":859},{"type":40,"tag":127,"props":2853,"children":2854},{"style":266},[2855],{"type":45,"value":2856}," secret",{"type":40,"tag":127,"props":2858,"children":2859},{"style":140},[2860],{"type":45,"value":274},{"type":40,"tag":127,"props":2862,"children":2864},{"style":2863},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2865],{"type":45,"value":2866}," true",{"type":40,"tag":127,"props":2868,"children":2869},{"style":140},[2870],{"type":45,"value":1904},{"type":40,"tag":127,"props":2872,"children":2873},{"style":151},[2874],{"type":45,"value":387},{"type":40,"tag":127,"props":2876,"children":2877},{"style":140},[2878],{"type":45,"value":180},{"type":40,"tag":127,"props":2880,"children":2881},{"class":129,"line":367},[2882],{"type":40,"tag":127,"props":2883,"children":2884},{"emptyLinePlaceholder":187},[2885],{"type":45,"value":190},{"type":40,"tag":127,"props":2887,"children":2888},{"class":129,"line":376},[2889],{"type":40,"tag":127,"props":2890,"children":2891},{"style":197},[2892],{"type":45,"value":2893},"\u002F\u002F Then deploy\n",{"type":40,"tag":127,"props":2895,"children":2896},{"class":129,"line":394},[2897,2901,2905,2909,2913,2917],{"type":40,"tag":127,"props":2898,"children":2899},{"style":134},[2900],{"type":45,"value":2710},{"type":40,"tag":127,"props":2902,"children":2903},{"style":151},[2904],{"type":45,"value":434},{"type":40,"tag":127,"props":2906,"children":2907},{"style":140},[2908],{"type":45,"value":234},{"type":40,"tag":127,"props":2910,"children":2911},{"style":246},[2912],{"type":45,"value":443},{"type":40,"tag":127,"props":2914,"children":2915},{"style":151},[2916],{"type":45,"value":1384},{"type":40,"tag":127,"props":2918,"children":2919},{"style":140},[2920],{"type":45,"value":180},{"type":40,"tag":573,"props":2922,"children":2924},{"id":2923},"reading-outputs",[2925],{"type":45,"value":2926},"Reading Outputs",{"type":40,"tag":55,"props":2928,"children":2929},{},[2930],{"type":45,"value":2931},"Access stack outputs after deployment:",{"type":40,"tag":116,"props":2933,"children":2935},{"className":118,"code":2934,"language":120,"meta":121,"style":121},"const upResult = await stack.up();\n\n\u002F\u002F Get all outputs\nconst outputs = await stack.outputs();\nconsole.log(`VPC ID: ${outputs[\"vpcId\"].value}`);\n\n\u002F\u002F Or from the up result\nconsole.log(`Outputs: ${JSON.stringify(upResult.outputs)}`);\n",[2936],{"type":40,"tag":107,"props":2937,"children":2938},{"__ignoreMap":121},[2939,2978,2985,2993,3034,3110,3117,3125],{"type":40,"tag":127,"props":2940,"children":2941},{"class":129,"line":130},[2942,2946,2950,2954,2958,2962,2966,2970,2974],{"type":40,"tag":127,"props":2943,"children":2944},{"style":206},[2945],{"type":45,"value":209},{"type":40,"tag":127,"props":2947,"children":2948},{"style":151},[2949],{"type":45,"value":421},{"type":40,"tag":127,"props":2951,"children":2952},{"style":140},[2953],{"type":45,"value":219},{"type":40,"tag":127,"props":2955,"children":2956},{"style":134},[2957],{"type":45,"value":224},{"type":40,"tag":127,"props":2959,"children":2960},{"style":151},[2961],{"type":45,"value":434},{"type":40,"tag":127,"props":2963,"children":2964},{"style":140},[2965],{"type":45,"value":234},{"type":40,"tag":127,"props":2967,"children":2968},{"style":246},[2969],{"type":45,"value":443},{"type":40,"tag":127,"props":2971,"children":2972},{"style":151},[2973],{"type":45,"value":1384},{"type":40,"tag":127,"props":2975,"children":2976},{"style":140},[2977],{"type":45,"value":180},{"type":40,"tag":127,"props":2979,"children":2980},{"class":129,"line":183},[2981],{"type":40,"tag":127,"props":2982,"children":2983},{"emptyLinePlaceholder":187},[2984],{"type":45,"value":190},{"type":40,"tag":127,"props":2986,"children":2987},{"class":129,"line":193},[2988],{"type":40,"tag":127,"props":2989,"children":2990},{"style":197},[2991],{"type":45,"value":2992},"\u002F\u002F Get all outputs\n",{"type":40,"tag":127,"props":2994,"children":2995},{"class":129,"line":27},[2996,3000,3005,3009,3013,3017,3021,3026,3030],{"type":40,"tag":127,"props":2997,"children":2998},{"style":206},[2999],{"type":45,"value":209},{"type":40,"tag":127,"props":3001,"children":3002},{"style":151},[3003],{"type":45,"value":3004}," outputs ",{"type":40,"tag":127,"props":3006,"children":3007},{"style":140},[3008],{"type":45,"value":219},{"type":40,"tag":127,"props":3010,"children":3011},{"style":134},[3012],{"type":45,"value":224},{"type":40,"tag":127,"props":3014,"children":3015},{"style":151},[3016],{"type":45,"value":434},{"type":40,"tag":127,"props":3018,"children":3019},{"style":140},[3020],{"type":45,"value":234},{"type":40,"tag":127,"props":3022,"children":3023},{"style":246},[3024],{"type":45,"value":3025},"outputs",{"type":40,"tag":127,"props":3027,"children":3028},{"style":151},[3029],{"type":45,"value":1384},{"type":40,"tag":127,"props":3031,"children":3032},{"style":140},[3033],{"type":45,"value":180},{"type":40,"tag":127,"props":3035,"children":3036},{"class":129,"line":262},[3037,3041,3045,3049,3053,3057,3062,3066,3071,3075,3080,3084,3089,3093,3098,3102,3106],{"type":40,"tag":127,"props":3038,"children":3039},{"style":151},[3040],{"type":45,"value":496},{"type":40,"tag":127,"props":3042,"children":3043},{"style":140},[3044],{"type":45,"value":234},{"type":40,"tag":127,"props":3046,"children":3047},{"style":246},[3048],{"type":45,"value":505},{"type":40,"tag":127,"props":3050,"children":3051},{"style":151},[3052],{"type":45,"value":254},{"type":40,"tag":127,"props":3054,"children":3055},{"style":140},[3056],{"type":45,"value":514},{"type":40,"tag":127,"props":3058,"children":3059},{"style":167},[3060],{"type":45,"value":3061},"VPC ID: ",{"type":40,"tag":127,"props":3063,"children":3064},{"style":140},[3065],{"type":45,"value":524},{"type":40,"tag":127,"props":3067,"children":3068},{"style":151},[3069],{"type":45,"value":3070},"outputs[",{"type":40,"tag":127,"props":3072,"children":3073},{"style":140},[3074],{"type":45,"value":175},{"type":40,"tag":127,"props":3076,"children":3077},{"style":167},[3078],{"type":45,"value":3079},"vpcId",{"type":40,"tag":127,"props":3081,"children":3082},{"style":140},[3083],{"type":45,"value":175},{"type":40,"tag":127,"props":3085,"children":3086},{"style":151},[3087],{"type":45,"value":3088},"]",{"type":40,"tag":127,"props":3090,"children":3091},{"style":140},[3092],{"type":45,"value":234},{"type":40,"tag":127,"props":3094,"children":3095},{"style":151},[3096],{"type":45,"value":3097},"value",{"type":40,"tag":127,"props":3099,"children":3100},{"style":140},[3101],{"type":45,"value":557},{"type":40,"tag":127,"props":3103,"children":3104},{"style":151},[3105],{"type":45,"value":387},{"type":40,"tag":127,"props":3107,"children":3108},{"style":140},[3109],{"type":45,"value":180},{"type":40,"tag":127,"props":3111,"children":3112},{"class":129,"line":295},[3113],{"type":40,"tag":127,"props":3114,"children":3115},{"emptyLinePlaceholder":187},[3116],{"type":45,"value":190},{"type":40,"tag":127,"props":3118,"children":3119},{"class":129,"line":325},[3120],{"type":40,"tag":127,"props":3121,"children":3122},{"style":197},[3123],{"type":45,"value":3124},"\u002F\u002F Or from the up result\n",{"type":40,"tag":127,"props":3126,"children":3127},{"class":129,"line":358},[3128,3132,3136,3140,3144,3148,3153,3157,3161,3165,3169,3173,3177,3182,3186,3190],{"type":40,"tag":127,"props":3129,"children":3130},{"style":151},[3131],{"type":45,"value":496},{"type":40,"tag":127,"props":3133,"children":3134},{"style":140},[3135],{"type":45,"value":234},{"type":40,"tag":127,"props":3137,"children":3138},{"style":246},[3139],{"type":45,"value":505},{"type":40,"tag":127,"props":3141,"children":3142},{"style":151},[3143],{"type":45,"value":254},{"type":40,"tag":127,"props":3145,"children":3146},{"style":140},[3147],{"type":45,"value":514},{"type":40,"tag":127,"props":3149,"children":3150},{"style":167},[3151],{"type":45,"value":3152},"Outputs: ",{"type":40,"tag":127,"props":3154,"children":3155},{"style":140},[3156],{"type":45,"value":524},{"type":40,"tag":127,"props":3158,"children":3159},{"style":151},[3160],{"type":45,"value":529},{"type":40,"tag":127,"props":3162,"children":3163},{"style":140},[3164],{"type":45,"value":234},{"type":40,"tag":127,"props":3166,"children":3167},{"style":246},[3168],{"type":45,"value":538},{"type":40,"tag":127,"props":3170,"children":3171},{"style":151},[3172],{"type":45,"value":543},{"type":40,"tag":127,"props":3174,"children":3175},{"style":140},[3176],{"type":45,"value":234},{"type":40,"tag":127,"props":3178,"children":3179},{"style":151},[3180],{"type":45,"value":3181},"outputs)",{"type":40,"tag":127,"props":3183,"children":3184},{"style":140},[3185],{"type":45,"value":557},{"type":40,"tag":127,"props":3187,"children":3188},{"style":151},[3189],{"type":45,"value":387},{"type":40,"tag":127,"props":3191,"children":3192},{"style":140},[3193],{"type":45,"value":180},{"type":40,"tag":573,"props":3195,"children":3197},{"id":3196},"error-handling",[3198],{"type":45,"value":3199},"Error Handling",{"type":40,"tag":55,"props":3201,"children":3202},{},[3203],{"type":45,"value":3204},"Handle deployment failures gracefully:",{"type":40,"tag":116,"props":3206,"children":3208},{"className":118,"code":3207,"language":120,"meta":121,"style":121},"try {\n    const result = await stack.up({ onOutput: console.log });\n\n    if (result.summary.result === \"failed\") {\n        console.error(\"Deployment failed\");\n        process.exit(1);\n    }\n} catch (error) {\n    console.error(`Deployment error: ${error}`);\n    throw error;\n}\n",[3209],{"type":40,"tag":107,"props":3210,"children":3211},{"__ignoreMap":121},[3212,3224,3296,3303,3363,3404,3439,3446,3467,3516,3533],{"type":40,"tag":127,"props":3213,"children":3214},{"class":129,"line":130},[3215,3220],{"type":40,"tag":127,"props":3216,"children":3217},{"style":134},[3218],{"type":45,"value":3219},"try",{"type":40,"tag":127,"props":3221,"children":3222},{"style":140},[3223],{"type":45,"value":355},{"type":40,"tag":127,"props":3225,"children":3226},{"class":129,"line":183},[3227,3231,3236,3240,3244,3248,3252,3256,3260,3264,3268,3272,3276,3280,3284,3288,3292],{"type":40,"tag":127,"props":3228,"children":3229},{"style":206},[3230],{"type":45,"value":1396},{"type":40,"tag":127,"props":3232,"children":3233},{"style":151},[3234],{"type":45,"value":3235}," result",{"type":40,"tag":127,"props":3237,"children":3238},{"style":140},[3239],{"type":45,"value":1121},{"type":40,"tag":127,"props":3241,"children":3242},{"style":134},[3243],{"type":45,"value":224},{"type":40,"tag":127,"props":3245,"children":3246},{"style":151},[3247],{"type":45,"value":434},{"type":40,"tag":127,"props":3249,"children":3250},{"style":140},[3251],{"type":45,"value":234},{"type":40,"tag":127,"props":3253,"children":3254},{"style":246},[3255],{"type":45,"value":443},{"type":40,"tag":127,"props":3257,"children":3258},{"style":266},[3259],{"type":45,"value":254},{"type":40,"tag":127,"props":3261,"children":3262},{"style":140},[3263],{"type":45,"value":452},{"type":40,"tag":127,"props":3265,"children":3266},{"style":266},[3267],{"type":45,"value":457},{"type":40,"tag":127,"props":3269,"children":3270},{"style":140},[3271],{"type":45,"value":274},{"type":40,"tag":127,"props":3273,"children":3274},{"style":151},[3275],{"type":45,"value":466},{"type":40,"tag":127,"props":3277,"children":3278},{"style":140},[3279],{"type":45,"value":234},{"type":40,"tag":127,"props":3281,"children":3282},{"style":151},[3283],{"type":45,"value":505},{"type":40,"tag":127,"props":3285,"children":3286},{"style":140},[3287],{"type":45,"value":1904},{"type":40,"tag":127,"props":3289,"children":3290},{"style":266},[3291],{"type":45,"value":387},{"type":40,"tag":127,"props":3293,"children":3294},{"style":140},[3295],{"type":45,"value":180},{"type":40,"tag":127,"props":3297,"children":3298},{"class":129,"line":193},[3299],{"type":40,"tag":127,"props":3300,"children":3301},{"emptyLinePlaceholder":187},[3302],{"type":45,"value":190},{"type":40,"tag":127,"props":3304,"children":3305},{"class":129,"line":27},[3306,3311,3315,3320,3324,3329,3333,3337,3342,3346,3351,3355,3359],{"type":40,"tag":127,"props":3307,"children":3308},{"style":134},[3309],{"type":45,"value":3310},"    if",{"type":40,"tag":127,"props":3312,"children":3313},{"style":266},[3314],{"type":45,"value":1617},{"type":40,"tag":127,"props":3316,"children":3317},{"style":151},[3318],{"type":45,"value":3319},"result",{"type":40,"tag":127,"props":3321,"children":3322},{"style":140},[3323],{"type":45,"value":234},{"type":40,"tag":127,"props":3325,"children":3326},{"style":151},[3327],{"type":45,"value":3328},"summary",{"type":40,"tag":127,"props":3330,"children":3331},{"style":140},[3332],{"type":45,"value":234},{"type":40,"tag":127,"props":3334,"children":3335},{"style":151},[3336],{"type":45,"value":3319},{"type":40,"tag":127,"props":3338,"children":3339},{"style":140},[3340],{"type":45,"value":3341}," ===",{"type":40,"tag":127,"props":3343,"children":3344},{"style":140},[3345],{"type":45,"value":164},{"type":40,"tag":127,"props":3347,"children":3348},{"style":167},[3349],{"type":45,"value":3350},"failed",{"type":40,"tag":127,"props":3352,"children":3353},{"style":140},[3354],{"type":45,"value":175},{"type":40,"tag":127,"props":3356,"children":3357},{"style":266},[3358],{"type":45,"value":1640},{"type":40,"tag":127,"props":3360,"children":3361},{"style":140},[3362],{"type":45,"value":259},{"type":40,"tag":127,"props":3364,"children":3365},{"class":129,"line":262},[3366,3370,3374,3379,3383,3387,3392,3396,3400],{"type":40,"tag":127,"props":3367,"children":3368},{"style":151},[3369],{"type":45,"value":1652},{"type":40,"tag":127,"props":3371,"children":3372},{"style":140},[3373],{"type":45,"value":234},{"type":40,"tag":127,"props":3375,"children":3376},{"style":246},[3377],{"type":45,"value":3378},"error",{"type":40,"tag":127,"props":3380,"children":3381},{"style":266},[3382],{"type":45,"value":254},{"type":40,"tag":127,"props":3384,"children":3385},{"style":140},[3386],{"type":45,"value":175},{"type":40,"tag":127,"props":3388,"children":3389},{"style":167},[3390],{"type":45,"value":3391},"Deployment failed",{"type":40,"tag":127,"props":3393,"children":3394},{"style":140},[3395],{"type":45,"value":175},{"type":40,"tag":127,"props":3397,"children":3398},{"style":266},[3399],{"type":45,"value":387},{"type":40,"tag":127,"props":3401,"children":3402},{"style":140},[3403],{"type":45,"value":180},{"type":40,"tag":127,"props":3405,"children":3406},{"class":129,"line":295},[3407,3412,3416,3421,3425,3431,3435],{"type":40,"tag":127,"props":3408,"children":3409},{"style":151},[3410],{"type":45,"value":3411},"        process",{"type":40,"tag":127,"props":3413,"children":3414},{"style":140},[3415],{"type":45,"value":234},{"type":40,"tag":127,"props":3417,"children":3418},{"style":246},[3419],{"type":45,"value":3420},"exit",{"type":40,"tag":127,"props":3422,"children":3423},{"style":266},[3424],{"type":45,"value":254},{"type":40,"tag":127,"props":3426,"children":3428},{"style":3427},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[3429],{"type":45,"value":3430},"1",{"type":40,"tag":127,"props":3432,"children":3433},{"style":266},[3434],{"type":45,"value":387},{"type":40,"tag":127,"props":3436,"children":3437},{"style":140},[3438],{"type":45,"value":180},{"type":40,"tag":127,"props":3440,"children":3441},{"class":129,"line":325},[3442],{"type":40,"tag":127,"props":3443,"children":3444},{"style":140},[3445],{"type":45,"value":1979},{"type":40,"tag":127,"props":3447,"children":3448},{"class":129,"line":358},[3449,3453,3458,3463],{"type":40,"tag":127,"props":3450,"children":3451},{"style":140},[3452],{"type":45,"value":382},{"type":40,"tag":127,"props":3454,"children":3455},{"style":134},[3456],{"type":45,"value":3457}," catch",{"type":40,"tag":127,"props":3459,"children":3460},{"style":151},[3461],{"type":45,"value":3462}," (error) ",{"type":40,"tag":127,"props":3464,"children":3465},{"style":140},[3466],{"type":45,"value":259},{"type":40,"tag":127,"props":3468,"children":3469},{"class":129,"line":367},[3470,3475,3479,3483,3487,3491,3496,3500,3504,3508,3512],{"type":40,"tag":127,"props":3471,"children":3472},{"style":151},[3473],{"type":45,"value":3474},"    console",{"type":40,"tag":127,"props":3476,"children":3477},{"style":140},[3478],{"type":45,"value":234},{"type":40,"tag":127,"props":3480,"children":3481},{"style":246},[3482],{"type":45,"value":3378},{"type":40,"tag":127,"props":3484,"children":3485},{"style":266},[3486],{"type":45,"value":254},{"type":40,"tag":127,"props":3488,"children":3489},{"style":140},[3490],{"type":45,"value":514},{"type":40,"tag":127,"props":3492,"children":3493},{"style":167},[3494],{"type":45,"value":3495},"Deployment error: ",{"type":40,"tag":127,"props":3497,"children":3498},{"style":140},[3499],{"type":45,"value":524},{"type":40,"tag":127,"props":3501,"children":3502},{"style":151},[3503],{"type":45,"value":3378},{"type":40,"tag":127,"props":3505,"children":3506},{"style":140},[3507],{"type":45,"value":557},{"type":40,"tag":127,"props":3509,"children":3510},{"style":266},[3511],{"type":45,"value":387},{"type":40,"tag":127,"props":3513,"children":3514},{"style":140},[3515],{"type":45,"value":180},{"type":40,"tag":127,"props":3517,"children":3518},{"class":129,"line":376},[3519,3524,3529],{"type":40,"tag":127,"props":3520,"children":3521},{"style":134},[3522],{"type":45,"value":3523},"    throw",{"type":40,"tag":127,"props":3525,"children":3526},{"style":151},[3527],{"type":45,"value":3528}," error",{"type":40,"tag":127,"props":3530,"children":3531},{"style":140},[3532],{"type":45,"value":180},{"type":40,"tag":127,"props":3534,"children":3535},{"class":129,"line":394},[3536],{"type":40,"tag":127,"props":3537,"children":3538},{"style":140},[3539],{"type":45,"value":1988},{"type":40,"tag":573,"props":3541,"children":3543},{"id":3542},"parallel-stack-operations",[3544],{"type":45,"value":3545},"Parallel Stack Operations",{"type":40,"tag":55,"props":3547,"children":3548},{},[3549],{"type":45,"value":3550},"When stacks are independent, deploy in parallel:",{"type":40,"tag":116,"props":3552,"children":3554},{"className":118,"code":3553,"language":120,"meta":121,"style":121},"const independentStacks = [\n    { name: \"service-a\", dir: \".\u002Fservice-a\" },\n    { name: \"service-b\", dir: \".\u002Fservice-b\" },\n    { name: \"service-c\", dir: \".\u002Fservice-c\" },\n];\n\nawait Promise.all(independentStacks.map(async (stackInfo) => {\n    const stack = await automation.LocalWorkspace.createOrSelectStack({\n        stackName: \"prod\",\n        workDir: stackInfo.dir,\n    });\n    return stack.up({ onOutput: (msg) => console.log(`[${stackInfo.name}] ${msg}`) });\n}));\n",[3555],{"type":40,"tag":107,"props":3556,"children":3557},{"__ignoreMap":121},[3558,3578,3636,3693,3750,3761,3768,3833,3880,3908,3936,3952,4083],{"type":40,"tag":127,"props":3559,"children":3560},{"class":129,"line":130},[3561,3565,3570,3574],{"type":40,"tag":127,"props":3562,"children":3563},{"style":206},[3564],{"type":45,"value":209},{"type":40,"tag":127,"props":3566,"children":3567},{"style":151},[3568],{"type":45,"value":3569}," independentStacks ",{"type":40,"tag":127,"props":3571,"children":3572},{"style":140},[3573],{"type":45,"value":219},{"type":40,"tag":127,"props":3575,"children":3576},{"style":151},[3577],{"type":45,"value":1410},{"type":40,"tag":127,"props":3579,"children":3580},{"class":129,"line":183},[3581,3586,3590,3594,3598,3603,3607,3611,3615,3619,3623,3628,3632],{"type":40,"tag":127,"props":3582,"children":3583},{"style":140},[3584],{"type":45,"value":3585},"    {",{"type":40,"tag":127,"props":3587,"children":3588},{"style":266},[3589],{"type":45,"value":1423},{"type":40,"tag":127,"props":3591,"children":3592},{"style":140},[3593],{"type":45,"value":274},{"type":40,"tag":127,"props":3595,"children":3596},{"style":140},[3597],{"type":45,"value":164},{"type":40,"tag":127,"props":3599,"children":3600},{"style":167},[3601],{"type":45,"value":3602},"service-a",{"type":40,"tag":127,"props":3604,"children":3605},{"style":140},[3606],{"type":45,"value":175},{"type":40,"tag":127,"props":3608,"children":3609},{"style":140},[3610],{"type":45,"value":859},{"type":40,"tag":127,"props":3612,"children":3613},{"style":266},[3614],{"type":45,"value":1449},{"type":40,"tag":127,"props":3616,"children":3617},{"style":140},[3618],{"type":45,"value":274},{"type":40,"tag":127,"props":3620,"children":3621},{"style":140},[3622],{"type":45,"value":164},{"type":40,"tag":127,"props":3624,"children":3625},{"style":167},[3626],{"type":45,"value":3627},".\u002Fservice-a",{"type":40,"tag":127,"props":3629,"children":3630},{"style":140},[3631],{"type":45,"value":175},{"type":40,"tag":127,"props":3633,"children":3634},{"style":140},[3635],{"type":45,"value":1471},{"type":40,"tag":127,"props":3637,"children":3638},{"class":129,"line":193},[3639,3643,3647,3651,3655,3660,3664,3668,3672,3676,3680,3685,3689],{"type":40,"tag":127,"props":3640,"children":3641},{"style":140},[3642],{"type":45,"value":3585},{"type":40,"tag":127,"props":3644,"children":3645},{"style":266},[3646],{"type":45,"value":1423},{"type":40,"tag":127,"props":3648,"children":3649},{"style":140},[3650],{"type":45,"value":274},{"type":40,"tag":127,"props":3652,"children":3653},{"style":140},[3654],{"type":45,"value":164},{"type":40,"tag":127,"props":3656,"children":3657},{"style":167},[3658],{"type":45,"value":3659},"service-b",{"type":40,"tag":127,"props":3661,"children":3662},{"style":140},[3663],{"type":45,"value":175},{"type":40,"tag":127,"props":3665,"children":3666},{"style":140},[3667],{"type":45,"value":859},{"type":40,"tag":127,"props":3669,"children":3670},{"style":266},[3671],{"type":45,"value":1449},{"type":40,"tag":127,"props":3673,"children":3674},{"style":140},[3675],{"type":45,"value":274},{"type":40,"tag":127,"props":3677,"children":3678},{"style":140},[3679],{"type":45,"value":164},{"type":40,"tag":127,"props":3681,"children":3682},{"style":167},[3683],{"type":45,"value":3684},".\u002Fservice-b",{"type":40,"tag":127,"props":3686,"children":3687},{"style":140},[3688],{"type":45,"value":175},{"type":40,"tag":127,"props":3690,"children":3691},{"style":140},[3692],{"type":45,"value":1471},{"type":40,"tag":127,"props":3694,"children":3695},{"class":129,"line":27},[3696,3700,3704,3708,3712,3717,3721,3725,3729,3733,3737,3742,3746],{"type":40,"tag":127,"props":3697,"children":3698},{"style":140},[3699],{"type":45,"value":3585},{"type":40,"tag":127,"props":3701,"children":3702},{"style":266},[3703],{"type":45,"value":1423},{"type":40,"tag":127,"props":3705,"children":3706},{"style":140},[3707],{"type":45,"value":274},{"type":40,"tag":127,"props":3709,"children":3710},{"style":140},[3711],{"type":45,"value":164},{"type":40,"tag":127,"props":3713,"children":3714},{"style":167},[3715],{"type":45,"value":3716},"service-c",{"type":40,"tag":127,"props":3718,"children":3719},{"style":140},[3720],{"type":45,"value":175},{"type":40,"tag":127,"props":3722,"children":3723},{"style":140},[3724],{"type":45,"value":859},{"type":40,"tag":127,"props":3726,"children":3727},{"style":266},[3728],{"type":45,"value":1449},{"type":40,"tag":127,"props":3730,"children":3731},{"style":140},[3732],{"type":45,"value":274},{"type":40,"tag":127,"props":3734,"children":3735},{"style":140},[3736],{"type":45,"value":164},{"type":40,"tag":127,"props":3738,"children":3739},{"style":167},[3740],{"type":45,"value":3741},".\u002Fservice-c",{"type":40,"tag":127,"props":3743,"children":3744},{"style":140},[3745],{"type":45,"value":175},{"type":40,"tag":127,"props":3747,"children":3748},{"style":140},[3749],{"type":45,"value":1471},{"type":40,"tag":127,"props":3751,"children":3752},{"class":129,"line":262},[3753,3757],{"type":40,"tag":127,"props":3754,"children":3755},{"style":151},[3756],{"type":45,"value":3088},{"type":40,"tag":127,"props":3758,"children":3759},{"style":140},[3760],{"type":45,"value":180},{"type":40,"tag":127,"props":3762,"children":3763},{"class":129,"line":295},[3764],{"type":40,"tag":127,"props":3765,"children":3766},{"emptyLinePlaceholder":187},[3767],{"type":45,"value":190},{"type":40,"tag":127,"props":3769,"children":3770},{"class":129,"line":325},[3771,3775,3781,3785,3790,3795,3799,3804,3808,3812,3816,3821,3825,3829],{"type":40,"tag":127,"props":3772,"children":3773},{"style":134},[3774],{"type":45,"value":2710},{"type":40,"tag":127,"props":3776,"children":3778},{"style":3777},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[3779],{"type":45,"value":3780}," Promise",{"type":40,"tag":127,"props":3782,"children":3783},{"style":140},[3784],{"type":45,"value":234},{"type":40,"tag":127,"props":3786,"children":3787},{"style":246},[3788],{"type":45,"value":3789},"all",{"type":40,"tag":127,"props":3791,"children":3792},{"style":151},[3793],{"type":45,"value":3794},"(independentStacks",{"type":40,"tag":127,"props":3796,"children":3797},{"style":140},[3798],{"type":45,"value":234},{"type":40,"tag":127,"props":3800,"children":3801},{"style":246},[3802],{"type":45,"value":3803},"map",{"type":40,"tag":127,"props":3805,"children":3806},{"style":151},[3807],{"type":45,"value":254},{"type":40,"tag":127,"props":3809,"children":3810},{"style":206},[3811],{"type":45,"value":1369},{"type":40,"tag":127,"props":3813,"children":3814},{"style":140},[3815],{"type":45,"value":1617},{"type":40,"tag":127,"props":3817,"children":3819},{"style":3818},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[3820],{"type":45,"value":1682},{"type":40,"tag":127,"props":3822,"children":3823},{"style":140},[3824],{"type":45,"value":387},{"type":40,"tag":127,"props":3826,"children":3827},{"style":206},[3828],{"type":45,"value":350},{"type":40,"tag":127,"props":3830,"children":3831},{"style":140},[3832],{"type":45,"value":355},{"type":40,"tag":127,"props":3834,"children":3835},{"class":129,"line":358},[3836,3840,3844,3848,3852,3856,3860,3864,3868,3872,3876],{"type":40,"tag":127,"props":3837,"children":3838},{"style":206},[3839],{"type":45,"value":1396},{"type":40,"tag":127,"props":3841,"children":3842},{"style":151},[3843],{"type":45,"value":434},{"type":40,"tag":127,"props":3845,"children":3846},{"style":140},[3847],{"type":45,"value":1121},{"type":40,"tag":127,"props":3849,"children":3850},{"style":134},[3851],{"type":45,"value":224},{"type":40,"tag":127,"props":3853,"children":3854},{"style":151},[3855],{"type":45,"value":229},{"type":40,"tag":127,"props":3857,"children":3858},{"style":140},[3859],{"type":45,"value":234},{"type":40,"tag":127,"props":3861,"children":3862},{"style":151},[3863],{"type":45,"value":239},{"type":40,"tag":127,"props":3865,"children":3866},{"style":140},[3867],{"type":45,"value":234},{"type":40,"tag":127,"props":3869,"children":3870},{"style":246},[3871],{"type":45,"value":249},{"type":40,"tag":127,"props":3873,"children":3874},{"style":266},[3875],{"type":45,"value":254},{"type":40,"tag":127,"props":3877,"children":3878},{"style":140},[3879],{"type":45,"value":259},{"type":40,"tag":127,"props":3881,"children":3882},{"class":129,"line":367},[3883,3888,3892,3896,3900,3904],{"type":40,"tag":127,"props":3884,"children":3885},{"style":266},[3886],{"type":45,"value":3887},"        stackName",{"type":40,"tag":127,"props":3889,"children":3890},{"style":140},[3891],{"type":45,"value":274},{"type":40,"tag":127,"props":3893,"children":3894},{"style":140},[3895],{"type":45,"value":164},{"type":40,"tag":127,"props":3897,"children":3898},{"style":167},[3899],{"type":45,"value":1787},{"type":40,"tag":127,"props":3901,"children":3902},{"style":140},[3903],{"type":45,"value":175},{"type":40,"tag":127,"props":3905,"children":3906},{"style":140},[3907],{"type":45,"value":292},{"type":40,"tag":127,"props":3909,"children":3910},{"class":129,"line":376},[3911,3916,3920,3924,3928,3932],{"type":40,"tag":127,"props":3912,"children":3913},{"style":266},[3914],{"type":45,"value":3915},"        workDir",{"type":40,"tag":127,"props":3917,"children":3918},{"style":140},[3919],{"type":45,"value":274},{"type":40,"tag":127,"props":3921,"children":3922},{"style":151},[3923],{"type":45,"value":1626},{"type":40,"tag":127,"props":3925,"children":3926},{"style":140},[3927],{"type":45,"value":234},{"type":40,"tag":127,"props":3929,"children":3930},{"style":151},[3931],{"type":45,"value":1821},{"type":40,"tag":127,"props":3933,"children":3934},{"style":140},[3935],{"type":45,"value":292},{"type":40,"tag":127,"props":3937,"children":3938},{"class":129,"line":394},[3939,3944,3948],{"type":40,"tag":127,"props":3940,"children":3941},{"style":140},[3942],{"type":45,"value":3943},"    }",{"type":40,"tag":127,"props":3945,"children":3946},{"style":266},[3947],{"type":45,"value":387},{"type":40,"tag":127,"props":3949,"children":3950},{"style":140},[3951],{"type":45,"value":180},{"type":40,"tag":127,"props":3953,"children":3954},{"class":129,"line":402},[3955,3960,3964,3968,3972,3976,3980,3984,3988,3992,3997,4001,4005,4009,4013,4017,4021,4025,4030,4034,4038,4042,4046,4050,4055,4059,4063,4067,4071,4075,4079],{"type":40,"tag":127,"props":3956,"children":3957},{"style":134},[3958],{"type":45,"value":3959},"    return",{"type":40,"tag":127,"props":3961,"children":3962},{"style":151},[3963],{"type":45,"value":434},{"type":40,"tag":127,"props":3965,"children":3966},{"style":140},[3967],{"type":45,"value":234},{"type":40,"tag":127,"props":3969,"children":3970},{"style":246},[3971],{"type":45,"value":443},{"type":40,"tag":127,"props":3973,"children":3974},{"style":266},[3975],{"type":45,"value":254},{"type":40,"tag":127,"props":3977,"children":3978},{"style":140},[3979],{"type":45,"value":452},{"type":40,"tag":127,"props":3981,"children":3982},{"style":246},[3983],{"type":45,"value":457},{"type":40,"tag":127,"props":3985,"children":3986},{"style":140},[3987],{"type":45,"value":274},{"type":40,"tag":127,"props":3989,"children":3990},{"style":140},[3991],{"type":45,"value":1617},{"type":40,"tag":127,"props":3993,"children":3994},{"style":3818},[3995],{"type":45,"value":3996},"msg",{"type":40,"tag":127,"props":3998,"children":3999},{"style":140},[4000],{"type":45,"value":387},{"type":40,"tag":127,"props":4002,"children":4003},{"style":206},[4004],{"type":45,"value":350},{"type":40,"tag":127,"props":4006,"children":4007},{"style":151},[4008],{"type":45,"value":466},{"type":40,"tag":127,"props":4010,"children":4011},{"style":140},[4012],{"type":45,"value":234},{"type":40,"tag":127,"props":4014,"children":4015},{"style":246},[4016],{"type":45,"value":505},{"type":40,"tag":127,"props":4018,"children":4019},{"style":266},[4020],{"type":45,"value":254},{"type":40,"tag":127,"props":4022,"children":4023},{"style":140},[4024],{"type":45,"value":514},{"type":40,"tag":127,"props":4026,"children":4027},{"style":167},[4028],{"type":45,"value":4029},"[",{"type":40,"tag":127,"props":4031,"children":4032},{"style":140},[4033],{"type":45,"value":524},{"type":40,"tag":127,"props":4035,"children":4036},{"style":151},[4037],{"type":45,"value":1682},{"type":40,"tag":127,"props":4039,"children":4040},{"style":140},[4041],{"type":45,"value":234},{"type":40,"tag":127,"props":4043,"children":4044},{"style":151},[4045],{"type":45,"value":1691},{"type":40,"tag":127,"props":4047,"children":4048},{"style":140},[4049],{"type":45,"value":382},{"type":40,"tag":127,"props":4051,"children":4052},{"style":167},[4053],{"type":45,"value":4054},"] ",{"type":40,"tag":127,"props":4056,"children":4057},{"style":140},[4058],{"type":45,"value":524},{"type":40,"tag":127,"props":4060,"children":4061},{"style":151},[4062],{"type":45,"value":3996},{"type":40,"tag":127,"props":4064,"children":4065},{"style":140},[4066],{"type":45,"value":557},{"type":40,"tag":127,"props":4068,"children":4069},{"style":266},[4070],{"type":45,"value":1640},{"type":40,"tag":127,"props":4072,"children":4073},{"style":140},[4074],{"type":45,"value":382},{"type":40,"tag":127,"props":4076,"children":4077},{"style":266},[4078],{"type":45,"value":387},{"type":40,"tag":127,"props":4080,"children":4081},{"style":140},[4082],{"type":45,"value":180},{"type":40,"tag":127,"props":4084,"children":4085},{"class":129,"line":411},[4086,4090,4095],{"type":40,"tag":127,"props":4087,"children":4088},{"style":140},[4089],{"type":45,"value":382},{"type":40,"tag":127,"props":4091,"children":4092},{"style":151},[4093],{"type":45,"value":4094},"))",{"type":40,"tag":127,"props":4096,"children":4097},{"style":140},[4098],{"type":45,"value":180},{"type":40,"tag":48,"props":4100,"children":4102},{"id":4101},"best-practices",[4103],{"type":45,"value":4104},"Best Practices",{"type":40,"tag":573,"props":4106,"children":4108},{"id":4107},"separate-configuration-from-code",[4109],{"type":45,"value":4110},"Separate Configuration from Code",{"type":40,"tag":55,"props":4112,"children":4113},{},[4114],{"type":45,"value":4115},"Externalize configuration into files or environment variables:",{"type":40,"tag":116,"props":4117,"children":4119},{"className":118,"code":4118,"language":120,"meta":121,"style":121},"import * as fs from \"fs\";\n\ninterface DeployConfig {\n    stacks: Array\u003C{ name: string; dir: string; }>;\n    environment: string;\n}\n\nconst config: DeployConfig = JSON.parse(\n    fs.readFileSync(\".\u002Fdeploy-config.json\", \"utf-8\")\n);\n\nfor (const stackInfo of config.stacks) {\n    const stack = await automation.LocalWorkspace.createOrSelectStack({\n        stackName: config.environment,\n        workDir: stackInfo.dir,\n    });\n    await stack.up();\n}\n",[4120],{"type":40,"tag":107,"props":4121,"children":4122},{"__ignoreMap":121},[4123,4164,4171,4188,4249,4269,4276,4283,4326,4382,4393,4400,4443,4490,4518,4545,4560,4588],{"type":40,"tag":127,"props":4124,"children":4125},{"class":129,"line":130},[4126,4130,4134,4138,4143,4147,4151,4156,4160],{"type":40,"tag":127,"props":4127,"children":4128},{"style":134},[4129],{"type":45,"value":137},{"type":40,"tag":127,"props":4131,"children":4132},{"style":140},[4133],{"type":45,"value":143},{"type":40,"tag":127,"props":4135,"children":4136},{"style":134},[4137],{"type":45,"value":148},{"type":40,"tag":127,"props":4139,"children":4140},{"style":151},[4141],{"type":45,"value":4142}," fs ",{"type":40,"tag":127,"props":4144,"children":4145},{"style":134},[4146],{"type":45,"value":159},{"type":40,"tag":127,"props":4148,"children":4149},{"style":140},[4150],{"type":45,"value":164},{"type":40,"tag":127,"props":4152,"children":4153},{"style":167},[4154],{"type":45,"value":4155},"fs",{"type":40,"tag":127,"props":4157,"children":4158},{"style":140},[4159],{"type":45,"value":175},{"type":40,"tag":127,"props":4161,"children":4162},{"style":140},[4163],{"type":45,"value":180},{"type":40,"tag":127,"props":4165,"children":4166},{"class":129,"line":183},[4167],{"type":40,"tag":127,"props":4168,"children":4169},{"emptyLinePlaceholder":187},[4170],{"type":45,"value":190},{"type":40,"tag":127,"props":4172,"children":4173},{"class":129,"line":193},[4174,4179,4184],{"type":40,"tag":127,"props":4175,"children":4176},{"style":206},[4177],{"type":45,"value":4178},"interface",{"type":40,"tag":127,"props":4180,"children":4181},{"style":3777},[4182],{"type":45,"value":4183}," DeployConfig",{"type":40,"tag":127,"props":4185,"children":4186},{"style":140},[4187],{"type":45,"value":355},{"type":40,"tag":127,"props":4189,"children":4190},{"class":129,"line":27},[4191,4196,4200,4205,4210,4214,4218,4223,4228,4232,4236,4240,4244],{"type":40,"tag":127,"props":4192,"children":4193},{"style":266},[4194],{"type":45,"value":4195},"    stacks",{"type":40,"tag":127,"props":4197,"children":4198},{"style":140},[4199],{"type":45,"value":274},{"type":40,"tag":127,"props":4201,"children":4202},{"style":3777},[4203],{"type":45,"value":4204}," Array",{"type":40,"tag":127,"props":4206,"children":4207},{"style":140},[4208],{"type":45,"value":4209},"\u003C{",{"type":40,"tag":127,"props":4211,"children":4212},{"style":266},[4213],{"type":45,"value":1423},{"type":40,"tag":127,"props":4215,"children":4216},{"style":140},[4217],{"type":45,"value":274},{"type":40,"tag":127,"props":4219,"children":4220},{"style":3777},[4221],{"type":45,"value":4222}," string",{"type":40,"tag":127,"props":4224,"children":4225},{"style":140},[4226],{"type":45,"value":4227},";",{"type":40,"tag":127,"props":4229,"children":4230},{"style":266},[4231],{"type":45,"value":1449},{"type":40,"tag":127,"props":4233,"children":4234},{"style":140},[4235],{"type":45,"value":274},{"type":40,"tag":127,"props":4237,"children":4238},{"style":3777},[4239],{"type":45,"value":4222},{"type":40,"tag":127,"props":4241,"children":4242},{"style":140},[4243],{"type":45,"value":4227},{"type":40,"tag":127,"props":4245,"children":4246},{"style":140},[4247],{"type":45,"value":4248}," }>;\n",{"type":40,"tag":127,"props":4250,"children":4251},{"class":129,"line":262},[4252,4257,4261,4265],{"type":40,"tag":127,"props":4253,"children":4254},{"style":266},[4255],{"type":45,"value":4256},"    environment",{"type":40,"tag":127,"props":4258,"children":4259},{"style":140},[4260],{"type":45,"value":274},{"type":40,"tag":127,"props":4262,"children":4263},{"style":3777},[4264],{"type":45,"value":4222},{"type":40,"tag":127,"props":4266,"children":4267},{"style":140},[4268],{"type":45,"value":180},{"type":40,"tag":127,"props":4270,"children":4271},{"class":129,"line":295},[4272],{"type":40,"tag":127,"props":4273,"children":4274},{"style":140},[4275],{"type":45,"value":1988},{"type":40,"tag":127,"props":4277,"children":4278},{"class":129,"line":325},[4279],{"type":40,"tag":127,"props":4280,"children":4281},{"emptyLinePlaceholder":187},[4282],{"type":45,"value":190},{"type":40,"tag":127,"props":4284,"children":4285},{"class":129,"line":358},[4286,4290,4295,4299,4303,4307,4312,4316,4321],{"type":40,"tag":127,"props":4287,"children":4288},{"style":206},[4289],{"type":45,"value":209},{"type":40,"tag":127,"props":4291,"children":4292},{"style":151},[4293],{"type":45,"value":4294}," config",{"type":40,"tag":127,"props":4296,"children":4297},{"style":140},[4298],{"type":45,"value":274},{"type":40,"tag":127,"props":4300,"children":4301},{"style":3777},[4302],{"type":45,"value":4183},{"type":40,"tag":127,"props":4304,"children":4305},{"style":140},[4306],{"type":45,"value":1121},{"type":40,"tag":127,"props":4308,"children":4309},{"style":151},[4310],{"type":45,"value":4311}," JSON",{"type":40,"tag":127,"props":4313,"children":4314},{"style":140},[4315],{"type":45,"value":234},{"type":40,"tag":127,"props":4317,"children":4318},{"style":246},[4319],{"type":45,"value":4320},"parse",{"type":40,"tag":127,"props":4322,"children":4323},{"style":151},[4324],{"type":45,"value":4325},"(\n",{"type":40,"tag":127,"props":4327,"children":4328},{"class":129,"line":367},[4329,4334,4338,4343,4347,4351,4356,4360,4364,4368,4373,4377],{"type":40,"tag":127,"props":4330,"children":4331},{"style":151},[4332],{"type":45,"value":4333},"    fs",{"type":40,"tag":127,"props":4335,"children":4336},{"style":140},[4337],{"type":45,"value":234},{"type":40,"tag":127,"props":4339,"children":4340},{"style":246},[4341],{"type":45,"value":4342},"readFileSync",{"type":40,"tag":127,"props":4344,"children":4345},{"style":151},[4346],{"type":45,"value":254},{"type":40,"tag":127,"props":4348,"children":4349},{"style":140},[4350],{"type":45,"value":175},{"type":40,"tag":127,"props":4352,"children":4353},{"style":167},[4354],{"type":45,"value":4355},".\u002Fdeploy-config.json",{"type":40,"tag":127,"props":4357,"children":4358},{"style":140},[4359],{"type":45,"value":175},{"type":40,"tag":127,"props":4361,"children":4362},{"style":140},[4363],{"type":45,"value":859},{"type":40,"tag":127,"props":4365,"children":4366},{"style":140},[4367],{"type":45,"value":164},{"type":40,"tag":127,"props":4369,"children":4370},{"style":167},[4371],{"type":45,"value":4372},"utf-8",{"type":40,"tag":127,"props":4374,"children":4375},{"style":140},[4376],{"type":45,"value":175},{"type":40,"tag":127,"props":4378,"children":4379},{"style":151},[4380],{"type":45,"value":4381},")\n",{"type":40,"tag":127,"props":4383,"children":4384},{"class":129,"line":376},[4385,4389],{"type":40,"tag":127,"props":4386,"children":4387},{"style":151},[4388],{"type":45,"value":387},{"type":40,"tag":127,"props":4390,"children":4391},{"style":140},[4392],{"type":45,"value":180},{"type":40,"tag":127,"props":4394,"children":4395},{"class":129,"line":394},[4396],{"type":40,"tag":127,"props":4397,"children":4398},{"emptyLinePlaceholder":187},[4399],{"type":45,"value":190},{"type":40,"tag":127,"props":4401,"children":4402},{"class":129,"line":402},[4403,4408,4412,4416,4421,4426,4430,4434,4439],{"type":40,"tag":127,"props":4404,"children":4405},{"style":134},[4406],{"type":45,"value":4407},"for",{"type":40,"tag":127,"props":4409,"children":4410},{"style":151},[4411],{"type":45,"value":1617},{"type":40,"tag":127,"props":4413,"children":4414},{"style":206},[4415],{"type":45,"value":209},{"type":40,"tag":127,"props":4417,"children":4418},{"style":151},[4419],{"type":45,"value":4420}," stackInfo ",{"type":40,"tag":127,"props":4422,"children":4423},{"style":140},[4424],{"type":45,"value":4425},"of",{"type":40,"tag":127,"props":4427,"children":4428},{"style":151},[4429],{"type":45,"value":4294},{"type":40,"tag":127,"props":4431,"children":4432},{"style":140},[4433],{"type":45,"value":234},{"type":40,"tag":127,"props":4435,"children":4436},{"style":151},[4437],{"type":45,"value":4438},"stacks) ",{"type":40,"tag":127,"props":4440,"children":4441},{"style":140},[4442],{"type":45,"value":259},{"type":40,"tag":127,"props":4444,"children":4445},{"class":129,"line":411},[4446,4450,4454,4458,4462,4466,4470,4474,4478,4482,4486],{"type":40,"tag":127,"props":4447,"children":4448},{"style":206},[4449],{"type":45,"value":1396},{"type":40,"tag":127,"props":4451,"children":4452},{"style":151},[4453],{"type":45,"value":434},{"type":40,"tag":127,"props":4455,"children":4456},{"style":140},[4457],{"type":45,"value":1121},{"type":40,"tag":127,"props":4459,"children":4460},{"style":134},[4461],{"type":45,"value":224},{"type":40,"tag":127,"props":4463,"children":4464},{"style":151},[4465],{"type":45,"value":229},{"type":40,"tag":127,"props":4467,"children":4468},{"style":140},[4469],{"type":45,"value":234},{"type":40,"tag":127,"props":4471,"children":4472},{"style":151},[4473],{"type":45,"value":239},{"type":40,"tag":127,"props":4475,"children":4476},{"style":140},[4477],{"type":45,"value":234},{"type":40,"tag":127,"props":4479,"children":4480},{"style":246},[4481],{"type":45,"value":249},{"type":40,"tag":127,"props":4483,"children":4484},{"style":266},[4485],{"type":45,"value":254},{"type":40,"tag":127,"props":4487,"children":4488},{"style":140},[4489],{"type":45,"value":259},{"type":40,"tag":127,"props":4491,"children":4492},{"class":129,"line":490},[4493,4497,4501,4505,4509,4514],{"type":40,"tag":127,"props":4494,"children":4495},{"style":266},[4496],{"type":45,"value":3887},{"type":40,"tag":127,"props":4498,"children":4499},{"style":140},[4500],{"type":45,"value":274},{"type":40,"tag":127,"props":4502,"children":4503},{"style":151},[4504],{"type":45,"value":4294},{"type":40,"tag":127,"props":4506,"children":4507},{"style":140},[4508],{"type":45,"value":234},{"type":40,"tag":127,"props":4510,"children":4511},{"style":151},[4512],{"type":45,"value":4513},"environment",{"type":40,"tag":127,"props":4515,"children":4516},{"style":140},[4517],{"type":45,"value":292},{"type":40,"tag":127,"props":4519,"children":4520},{"class":129,"line":1798},[4521,4525,4529,4533,4537,4541],{"type":40,"tag":127,"props":4522,"children":4523},{"style":266},[4524],{"type":45,"value":3915},{"type":40,"tag":127,"props":4526,"children":4527},{"style":140},[4528],{"type":45,"value":274},{"type":40,"tag":127,"props":4530,"children":4531},{"style":151},[4532],{"type":45,"value":1626},{"type":40,"tag":127,"props":4534,"children":4535},{"style":140},[4536],{"type":45,"value":234},{"type":40,"tag":127,"props":4538,"children":4539},{"style":151},[4540],{"type":45,"value":1821},{"type":40,"tag":127,"props":4542,"children":4543},{"style":140},[4544],{"type":45,"value":292},{"type":40,"tag":127,"props":4546,"children":4547},{"class":129,"line":1828},[4548,4552,4556],{"type":40,"tag":127,"props":4549,"children":4550},{"style":140},[4551],{"type":45,"value":3943},{"type":40,"tag":127,"props":4553,"children":4554},{"style":266},[4555],{"type":45,"value":387},{"type":40,"tag":127,"props":4557,"children":4558},{"style":140},[4559],{"type":45,"value":180},{"type":40,"tag":127,"props":4561,"children":4562},{"class":129,"line":1845},[4563,4568,4572,4576,4580,4584],{"type":40,"tag":127,"props":4564,"children":4565},{"style":134},[4566],{"type":45,"value":4567},"    await",{"type":40,"tag":127,"props":4569,"children":4570},{"style":151},[4571],{"type":45,"value":434},{"type":40,"tag":127,"props":4573,"children":4574},{"style":140},[4575],{"type":45,"value":234},{"type":40,"tag":127,"props":4577,"children":4578},{"style":246},[4579],{"type":45,"value":443},{"type":40,"tag":127,"props":4581,"children":4582},{"style":266},[4583],{"type":45,"value":1384},{"type":40,"tag":127,"props":4585,"children":4586},{"style":140},[4587],{"type":45,"value":180},{"type":40,"tag":127,"props":4589,"children":4590},{"class":129,"line":1853},[4591],{"type":40,"tag":127,"props":4592,"children":4593},{"style":140},[4594],{"type":45,"value":1988},{"type":40,"tag":55,"props":4596,"children":4597},{},[4598],{"type":45,"value":4599},"This enables distributing compiled binaries without exposing source code.",{"type":40,"tag":573,"props":4601,"children":4603},{"id":4602},"stream-output-for-long-operations",[4604],{"type":45,"value":4605},"Stream Output for Long Operations",{"type":40,"tag":55,"props":4607,"children":4608},{},[4609,4611,4617],{"type":45,"value":4610},"Use ",{"type":40,"tag":107,"props":4612,"children":4614},{"className":4613},[],[4615],{"type":45,"value":4616},"onOutput",{"type":45,"value":4618}," callback for real-time feedback:",{"type":40,"tag":116,"props":4620,"children":4622},{"className":118,"code":4621,"language":120,"meta":121,"style":121},"await stack.up({\n    onOutput: (message) => {\n        process.stdout.write(message);\n        \u002F\u002F Or send to logging system, websocket, etc.\n    },\n});\n",[4623],{"type":40,"tag":107,"props":4624,"children":4625},{"__ignoreMap":121},[4626,4653,4686,4727,4735,4742],{"type":40,"tag":127,"props":4627,"children":4628},{"class":129,"line":130},[4629,4633,4637,4641,4645,4649],{"type":40,"tag":127,"props":4630,"children":4631},{"style":134},[4632],{"type":45,"value":2710},{"type":40,"tag":127,"props":4634,"children":4635},{"style":151},[4636],{"type":45,"value":434},{"type":40,"tag":127,"props":4638,"children":4639},{"style":140},[4640],{"type":45,"value":234},{"type":40,"tag":127,"props":4642,"children":4643},{"style":246},[4644],{"type":45,"value":443},{"type":40,"tag":127,"props":4646,"children":4647},{"style":151},[4648],{"type":45,"value":254},{"type":40,"tag":127,"props":4650,"children":4651},{"style":140},[4652],{"type":45,"value":259},{"type":40,"tag":127,"props":4654,"children":4655},{"class":129,"line":183},[4656,4661,4665,4669,4674,4678,4682],{"type":40,"tag":127,"props":4657,"children":4658},{"style":246},[4659],{"type":45,"value":4660},"    onOutput",{"type":40,"tag":127,"props":4662,"children":4663},{"style":140},[4664],{"type":45,"value":274},{"type":40,"tag":127,"props":4666,"children":4667},{"style":140},[4668],{"type":45,"value":1617},{"type":40,"tag":127,"props":4670,"children":4671},{"style":3818},[4672],{"type":45,"value":4673},"message",{"type":40,"tag":127,"props":4675,"children":4676},{"style":140},[4677],{"type":45,"value":387},{"type":40,"tag":127,"props":4679,"children":4680},{"style":206},[4681],{"type":45,"value":350},{"type":40,"tag":127,"props":4683,"children":4684},{"style":140},[4685],{"type":45,"value":355},{"type":40,"tag":127,"props":4687,"children":4688},{"class":129,"line":193},[4689,4693,4697,4702,4706,4711,4715,4719,4723],{"type":40,"tag":127,"props":4690,"children":4691},{"style":151},[4692],{"type":45,"value":3411},{"type":40,"tag":127,"props":4694,"children":4695},{"style":140},[4696],{"type":45,"value":234},{"type":40,"tag":127,"props":4698,"children":4699},{"style":151},[4700],{"type":45,"value":4701},"stdout",{"type":40,"tag":127,"props":4703,"children":4704},{"style":140},[4705],{"type":45,"value":234},{"type":40,"tag":127,"props":4707,"children":4708},{"style":246},[4709],{"type":45,"value":4710},"write",{"type":40,"tag":127,"props":4712,"children":4713},{"style":266},[4714],{"type":45,"value":254},{"type":40,"tag":127,"props":4716,"children":4717},{"style":151},[4718],{"type":45,"value":4673},{"type":40,"tag":127,"props":4720,"children":4721},{"style":266},[4722],{"type":45,"value":387},{"type":40,"tag":127,"props":4724,"children":4725},{"style":140},[4726],{"type":45,"value":180},{"type":40,"tag":127,"props":4728,"children":4729},{"class":129,"line":27},[4730],{"type":40,"tag":127,"props":4731,"children":4732},{"style":197},[4733],{"type":45,"value":4734},"        \u002F\u002F Or send to logging system, websocket, etc.\n",{"type":40,"tag":127,"props":4736,"children":4737},{"class":129,"line":262},[4738],{"type":40,"tag":127,"props":4739,"children":4740},{"style":140},[4741],{"type":45,"value":373},{"type":40,"tag":127,"props":4743,"children":4744},{"class":129,"line":295},[4745,4749,4753],{"type":40,"tag":127,"props":4746,"children":4747},{"style":140},[4748],{"type":45,"value":382},{"type":40,"tag":127,"props":4750,"children":4751},{"style":151},[4752],{"type":45,"value":387},{"type":40,"tag":127,"props":4754,"children":4755},{"style":140},[4756],{"type":45,"value":180},{"type":40,"tag":48,"props":4758,"children":4760},{"id":4759},"quick-reference",[4761],{"type":45,"value":4762},"Quick Reference",{"type":40,"tag":4764,"props":4765,"children":4766},"table",{},[4767,4786],{"type":40,"tag":4768,"props":4769,"children":4770},"thead",{},[4771],{"type":40,"tag":4772,"props":4773,"children":4774},"tr",{},[4775,4781],{"type":40,"tag":4776,"props":4777,"children":4778},"th",{},[4779],{"type":45,"value":4780},"Scenario",{"type":40,"tag":4776,"props":4782,"children":4783},{},[4784],{"type":45,"value":4785},"Approach",{"type":40,"tag":4787,"props":4788,"children":4789},"tbody",{},[4790,4804,4817,4830,4843,4856],{"type":40,"tag":4772,"props":4791,"children":4792},{},[4793,4799],{"type":40,"tag":4794,"props":4795,"children":4796},"td",{},[4797],{"type":45,"value":4798},"Existing Pulumi projects",{"type":40,"tag":4794,"props":4800,"children":4801},{},[4802],{"type":45,"value":4803},"Local source with workDir",{"type":40,"tag":4772,"props":4805,"children":4806},{},[4807,4812],{"type":40,"tag":4794,"props":4808,"children":4809},{},[4810],{"type":45,"value":4811},"New embedded infrastructure",{"type":40,"tag":4794,"props":4813,"children":4814},{},[4815],{"type":45,"value":4816},"Inline source with program function",{"type":40,"tag":4772,"props":4818,"children":4819},{},[4820,4825],{"type":40,"tag":4794,"props":4821,"children":4822},{},[4823],{"type":45,"value":4824},"Different teams",{"type":40,"tag":4794,"props":4826,"children":4827},{},[4828],{"type":45,"value":4829},"Local source for independence",{"type":40,"tag":4772,"props":4831,"children":4832},{},[4833,4838],{"type":40,"tag":4794,"props":4834,"children":4835},{},[4836],{"type":45,"value":4837},"Compiled binary distribution",{"type":40,"tag":4794,"props":4839,"children":4840},{},[4841],{"type":45,"value":4842},"Inline source or bundled local",{"type":40,"tag":4772,"props":4844,"children":4845},{},[4846,4851],{"type":40,"tag":4794,"props":4847,"children":4848},{},[4849],{"type":45,"value":4850},"Multi-stack dependencies",{"type":40,"tag":4794,"props":4852,"children":4853},{},[4854],{"type":45,"value":4855},"Sequential deployment in order",{"type":40,"tag":4772,"props":4857,"children":4858},{},[4859,4864],{"type":40,"tag":4794,"props":4860,"children":4861},{},[4862],{"type":45,"value":4863},"Independent stacks",{"type":40,"tag":4794,"props":4865,"children":4866},{},[4867],{"type":45,"value":4868},"Parallel deployment with Promise.all",{"type":40,"tag":48,"props":4870,"children":4872},{"id":4871},"related-skills",[4873],{"type":45,"value":4874},"Related Skills",{"type":40,"tag":61,"props":4876,"children":4877},{},[4878],{"type":40,"tag":65,"props":4879,"children":4880},{},[4881,4886],{"type":40,"tag":583,"props":4882,"children":4883},{},[4884],{"type":45,"value":4885},"pulumi-best-practices",{"type":45,"value":4887},": Code-level patterns for Pulumi programs",{"type":40,"tag":48,"props":4889,"children":4891},{"id":4890},"references",[4892],{"type":45,"value":4893},"References",{"type":40,"tag":61,"props":4895,"children":4896},{},[4897,4908,4917],{"type":40,"tag":65,"props":4898,"children":4899},{},[4900],{"type":40,"tag":4901,"props":4902,"children":4906},"a",{"href":4903,"rel":4904},"https:\u002F\u002Fwww.pulumi.com\u002Fdocs\u002Fusing-pulumi\u002Fautomation-api\u002F",[4905],"nofollow",[4907],{"type":45,"value":4903},{"type":40,"tag":65,"props":4909,"children":4910},{},[4911],{"type":40,"tag":4901,"props":4912,"children":4915},{"href":4913,"rel":4914},"https:\u002F\u002Fwww.pulumi.com\u002Fdocs\u002Fusing-pulumi\u002Fautomation-api\u002Fconcepts-terminology\u002F",[4905],[4916],{"type":45,"value":4913},{"type":40,"tag":65,"props":4918,"children":4919},{},[4920],{"type":40,"tag":4901,"props":4921,"children":4924},{"href":4922,"rel":4923},"https:\u002F\u002Fwww.pulumi.com\u002Fblog\u002Fiac-recommended-practices-using-automation-api\u002F",[4905],[4925],{"type":45,"value":4922},{"type":40,"tag":4927,"props":4928,"children":4929},"style",{},[4930],{"type":45,"value":4931},"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":4933,"total":402},[4934,4952,4967,4980,4994,5001,5014],{"slug":4935,"name":4935,"fn":4936,"description":4937,"org":4938,"tags":4939,"stars":23,"repoUrl":24,"updatedAt":4951},"cloudformation-to-pulumi","migrate CloudFormation to Pulumi","Convert, migrate, or import AWS CloudFormation stacks or templates into Pulumi programs. Load this skill whenever a user wants to move from CloudFormation to Pulumi, convert a CFN template, import existing CloudFormation-managed resources into Pulumi, or asks about CloudFormation-to-Pulumi migration in any form. Also load when the user mentions cdk-importer in a migration context.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4940,4943,4946,4947,4950],{"name":4941,"slug":4942,"type":15},"AWS","aws",{"name":4944,"slug":4945,"type":15},"Deployment","deployment",{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-04-06T18:50:36.677615",{"slug":4953,"name":4953,"fn":4954,"description":4955,"org":4956,"tags":4957,"stars":23,"repoUrl":24,"updatedAt":4966},"package-usage","audit Pulumi package usage across stacks","Track which stacks across a Pulumi organization use a specific package and at what versions. Use for cross-stack audits, identifying outdated or unmaintained package versions across many stacks, finding affected stacks before publishing breaking changes to a component package, or planning coordinated upgrade rollouts. Do NOT use for upgrading a cloud provider package (pulumi-aws, pulumi-azure-native, pulumi-gcp, pulumi-kubernetes, etc.) in a single project — use skill `provider-upgrade` instead. Do NOT use for general infrastructure creation, resource provisioning, or how-to questions about a package.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4958,4961,4962,4965],{"name":4959,"slug":4960,"type":15},"Audit","audit",{"name":21,"slug":22,"type":15},{"name":4963,"slug":4964,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},"2026-07-24T05:37:48.019964",{"slug":4968,"name":4968,"fn":4969,"description":4970,"org":4971,"tags":4972,"stars":23,"repoUrl":24,"updatedAt":4979},"provider-upgrade","upgrade and reconcile Pulumi providers","Upgrade any Pulumi provider to a newer version and reconcile the resulting diff. Use when users want to upgrade or update a provider (including editing package.json, requirements.txt, pyproject.toml, go.mod, or Pulumi.yaml to bump a provider SDK), check for breaking changes before or during an upgrade, fix resources that broke after a provider upgrade, or resolve unexpected replacements, creates, or deletes in a post-upgrade preview. Applies to all providers (aws, azure-native, gcp, kubernetes, aws-native, cloudflare, datadog, etc.) — not just Tier 1. Do NOT use for querying which stacks use what package versions; use skill `package-usage` for cross-stack audits. Do NOT use for general infrastructure tasks.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4973,4976,4977,4978],{"name":4974,"slug":4975,"type":15},"DevOps","devops",{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},"2026-06-04T07:58:58.874758",{"slug":4981,"name":4981,"fn":4982,"description":4983,"org":4984,"tags":4985,"stars":23,"repoUrl":24,"updatedAt":4993},"pulumi-arm-to-pulumi","migrate Azure ARM to Pulumi","Convert or migrate Azure ARM (Azure Resource Manager) templates, Bicep templates, or code to Pulumi, including importing existing Azure resources. This skill MUST be loaded whenever a user requests migration, conversion, or import of ARM templates, Bicep templates, ARM code, Bicep code, or Azure resources to Pulumi.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4986,4989,4990,4991,4992],{"name":4987,"slug":4988,"type":15},"Azure","azure",{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:50:35.384851",{"slug":4,"name":4,"fn":5,"description":6,"org":4995,"tags":4996,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4997,4998,4999,5000],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":4885,"name":4885,"fn":5002,"description":5003,"org":5004,"tags":5005,"stars":23,"repoUrl":24,"updatedAt":5013},"apply Pulumi best practices for infrastructure","Load when the user is writing, reviewing, or debugging Pulumi TypeScript\u002FPython programs; asks about Output\u003CT> or apply() usage; wants to create ComponentResource classes; needs to refactor resources without destroying them (aliases); is setting up secrets or config; or is configuring a pulumi preview\u002Fup CI workflow. Also load for questions about resource dependency order, parent\u002Fchild resource relationships, or pulumi.interpolate.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5006,5007,5008,5011],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":5009,"slug":5010,"type":15},"Python","python",{"name":5012,"slug":120,"type":15},"TypeScript","2026-06-03T07:52:43.916562",{"slug":5015,"name":5015,"fn":5016,"description":5017,"org":5018,"tags":5019,"stars":23,"repoUrl":24,"updatedAt":5025},"pulumi-cdk-to-pulumi","migrate AWS CDK to Pulumi","Load this skill when a user wants to migrate, convert, port, translate, or move an AWS CDK application (including CDK stacks, constructs, or CloudFormation-synthesized templates) to Pulumi. Phrases such as \"convert CDK to Pulumi\", \"migrate CDK app\", \"port CDK stacks\", \"replace CDK with Pulumi\", \"stop using CDK\". Do NOT load for general CDK questions, CDK-only help, or CDK vs Pulumi comparisons where no migration is requested.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5020,5021,5022,5023,5024],{"name":4941,"slug":4942,"type":15},{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:50:39.23999",{"items":5027,"total":402},[5028,5036,5043,5050,5058,5065,5072,5080,5095,5108,5123,5133],{"slug":4935,"name":4935,"fn":4936,"description":4937,"org":5029,"tags":5030,"stars":23,"repoUrl":24,"updatedAt":4951},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5031,5032,5033,5034,5035],{"name":4941,"slug":4942,"type":15},{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},{"slug":4953,"name":4953,"fn":4954,"description":4955,"org":5037,"tags":5038,"stars":23,"repoUrl":24,"updatedAt":4966},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5039,5040,5041,5042],{"name":4959,"slug":4960,"type":15},{"name":21,"slug":22,"type":15},{"name":4963,"slug":4964,"type":15},{"name":9,"slug":8,"type":15},{"slug":4968,"name":4968,"fn":4969,"description":4970,"org":5044,"tags":5045,"stars":23,"repoUrl":24,"updatedAt":4979},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5046,5047,5048,5049],{"name":4974,"slug":4975,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},{"slug":4981,"name":4981,"fn":4982,"description":4983,"org":5051,"tags":5052,"stars":23,"repoUrl":24,"updatedAt":4993},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5053,5054,5055,5056,5057],{"name":4987,"slug":4988,"type":15},{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":5059,"tags":5060,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5061,5062,5063,5064],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":4885,"name":4885,"fn":5002,"description":5003,"org":5066,"tags":5067,"stars":23,"repoUrl":24,"updatedAt":5013},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5068,5069,5070,5071],{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":5009,"slug":5010,"type":15},{"name":5012,"slug":120,"type":15},{"slug":5015,"name":5015,"fn":5016,"description":5017,"org":5073,"tags":5074,"stars":23,"repoUrl":24,"updatedAt":5025},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5075,5076,5077,5078,5079],{"name":4941,"slug":4942,"type":15},{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},{"slug":5081,"name":5081,"fn":5082,"description":5083,"org":5084,"tags":5085,"stars":23,"repoUrl":24,"updatedAt":5094},"pulumi-component","author reusable Pulumi component resources","Guide for authoring Pulumi ComponentResource classes. Use when creating reusable infrastructure components, designing component interfaces, setting up multi-language support, or distributing component packages.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5086,5089,5092,5093],{"name":5087,"slug":5088,"type":15},"Architecture","architecture",{"name":5090,"slug":5091,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-06-04T07:58:57.625622",{"slug":5096,"name":5096,"fn":5097,"description":5098,"org":5099,"tags":5100,"stars":23,"repoUrl":24,"updatedAt":5107},"pulumi-debug-failed-operation","debug failed Pulumi operations","Debug a Pulumi update or preview that failed: read the failure Pulumi already\nrecorded, find what caused it, and fix it. Load this skill when the user asks\nto debug, diagnose, or fix a failed update or preview, or points at a failing\n`pulumi up` or `pulumi preview`. Don't load it for authoring new\ninfrastructure, migrations, or provider upgrades; those have their own skills.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5101,5104,5105,5106],{"name":5102,"slug":5103,"type":15},"Debugging","debugging",{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-07-08T05:47:02.688144",{"slug":5109,"name":5109,"fn":5110,"description":5111,"org":5112,"tags":5113,"stars":23,"repoUrl":24,"updatedAt":5122},"pulumi-esc","manage secrets and configuration with Pulumi ESC","Guidance for working with Pulumi ESC (Environments, Secrets, and Configuration). Use when users ask about managing secrets, configuration, environments, short-term credentials, configuring OIDC for AWS, Azure, GCP, integrating with secret stores (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, 1Password), or using ESC with Pulumi stacks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5114,5117,5118,5119],{"name":5115,"slug":5116,"type":15},"Configuration","configuration",{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"name":5120,"slug":5121,"type":15},"Security","security","2026-07-24T05:37:47.044405",{"slug":5124,"name":5124,"fn":5125,"description":5126,"org":5127,"tags":5128,"stars":23,"repoUrl":24,"updatedAt":5132},"pulumi-overview","manage cloud infrastructure with Pulumi","Use this skill for any task that creates, modifies, inspects, or destroys cloud infrastructure or SaaS configuration, from one-off CLI operations to full multi-resource projects, across providers in the Pulumi ecosystem. A typical project spans many providers (AWS or Azure or GCP, Kubernetes, Cloudflare, Auth0, Datadog, Vercel, and others), and Pulumi drives them through one CLI, one state model, and one credential layer. Trigger even when the user does not name Pulumi; phrasings like \"deploy this app,\" \"provision a database,\" \"stand up a VPC,\" \"configure Auth0,\" \"set up Datadog monitoring,\" or \"tear down staging\" qualify. Also trigger for tasks that migrate, port, or convert existing infrastructure code (Terraform, CloudFormation, CDK, Bicep, ARM) to Pulumi. Do not trigger for application runtime code that reads or writes data via cloud SDKs; that is application code, not infrastructure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5129,5130,5131],{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-06-03T07:52:39.333565",{"slug":5134,"name":5134,"fn":5135,"description":5136,"org":5137,"tags":5138,"stars":23,"repoUrl":24,"updatedAt":5146},"pulumi-terraform-to-pulumi","migrate Terraform to Pulumi","Migrate Terraform\u002FOpenTofu projects to Pulumi, including translating HCL source code and\u002For importing Terraform state into a Pulumi stack. Use when a user wants to convert Terraform to Pulumi, migrate from HCL, or import tfstate into Pulumi. Do NOT trigger for general Terraform-vs-Pulumi comparisons or questions about using both tools side-by-side.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5139,5140,5141,5142,5143],{"name":4944,"slug":4945,"type":15},{"name":21,"slug":22,"type":15},{"name":4948,"slug":4949,"type":15},{"name":9,"slug":8,"type":15},{"name":5144,"slug":5145,"type":15},"Terraform","terraform","2026-04-06T18:50:37.954346"]