{"_id":"@adaptiveworx/iac-core","_rev":"8-4746e8166bf186e07bdc1d8ed6c5686d","name":"@adaptiveworx/iac-core","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@adaptiveworx/iac-core","version":"0.1.0","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.1.0","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/flux-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/flux-core/issues"},"dist":{"shasum":"2cb2d2a905ec30b51e35c2ad155ad2223ccea0e3","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.1.0.tgz","fileCount":57,"integrity":"sha512-FrjToKRh1buUcNqqPW4aH/Rs0OtJfGOKQ2oyhS1y7dguxnujOfy5Wm86X0GCdCKYzBXR2uMSjBPiBoZMIOAIZA==","signatures":[{"sig":"MEQCIAVuRInxpT1/rKHNb1mGuA7B1ukkmgez4lizoR5D01+mAiBiK1ndN1Y1+sipe+W43knuEdvIqswjB6AHky2uwMF3Tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":306987},"main":"./dist/index.js","type":"module","_from":"file:adaptiveworx-iac-core-0.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js"}},"_npmUser":{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"},"_resolved":"/tmp/1556c938721625b796665ce04ffafdfd/adaptiveworx-iac-core-0.1.0.tgz","_integrity":"sha512-FrjToKRh1buUcNqqPW4aH/Rs0OtJfGOKQ2oyhS1y7dguxnujOfy5Wm86X0GCdCKYzBXR2uMSjBPiBoZMIOAIZA==","repository":{"url":"git+https://github.com/AdaptiveWorX/flux-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"0.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","@pulumi/aws":"^7.7.0","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.1.0_1777473030206_0.6235174699785351","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adaptiveworx/iac-core","version":"0.1.1","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.1.1","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/flux-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/flux-core/issues"},"dist":{"shasum":"df683c43892d37c1e08a834c8903c0d60c2cab5f","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.1.1.tgz","fileCount":57,"integrity":"sha512-BtcGR7W1EZtY/Iy0tRHvLPPnpsMVk4sXoOj32Ahu9bUwd7ygAqHUR0sC6kU/fDhYjOiGMKWDXGB6TdrTOv8WEw==","signatures":[{"sig":"MEYCIQDsBVEuN04wap7cahvPvGQfIlyMw78cUp3GBQh0g7ku5gIhAPi2WNZZinpfYE+ucuC1zydAF8RDtmXxVS8vB02ieA63","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":307094},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js"}},"gitHead":"b8a8f7d13ad8d3259b1894f42de1dfa3ed465c74","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dafe0a04-257d-4a86-8063-54fadbc49ec4"}},"repository":{"url":"git+https://github.com/AdaptiveWorX/flux-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","@pulumi/aws":"^7.7.0","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.1.1_1777478657054_0.8982462727767122","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@adaptiveworx/iac-core","version":"0.1.2","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.1.2","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"dist":{"shasum":"b61e9ff8b0d431f8bfe840ad57a4bdd859ed3b74","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.1.2.tgz","fileCount":57,"integrity":"sha512-zbSACnO1WwjA1kbKgxJ8CO0/oxzluztAn/i0EW8QP6b0lGPKT6aMnFw3pVl4ztABhIJg8eppZC9chrvBn1I/Hw==","signatures":[{"sig":"MEQCIEi5s6Zdtw6gwa2u5JMtZq0JFij8tkA4w/gzXrWhv60iAiAoEtMjGeCAJSAheuI8xQqZpkStsXf+B8tPIwCGMNUuPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":307190},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js"}},"gitHead":"3a3589ae241cd6ded876591e15157c215f302d42","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"repository":{"url":"git+https://github.com/AdaptiveWorX/iac-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"workspace:*"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","@pulumi/aws":"^7.7.0","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.1.2_1777656628651_0.5077977354118703","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adaptiveworx/iac-core","version":"0.2.0","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.2.0","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"dist":{"shasum":"51ecac1c3bfe290b1caaf39fac9e251323686ddd","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.2.0.tgz","fileCount":57,"integrity":"sha512-af1X4eokzmURMSmovuP4bruNZB4HdAvvgwRql20G4sTJ4pCjWJUfcL5SnspCFRLOoKoA0gvsVxQ5HeOz6AAw+w==","signatures":[{"sig":"MEQCIF4x7NIj8UfMwK+mCTNPMDJrsEvHn5zWERkfZy6aiUTpAiAsd39OYO1kfL1S+At0MdnGe3KauAo+Yt98iDyuK6QbAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":306767},"main":"./dist/index.js","type":"module","_from":"file:adaptiveworx-iac-core-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js"}},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"_resolved":"/home/runner/work/iac-core/iac-core/packages/iac-core/adaptiveworx-iac-core-0.2.0.tgz","_integrity":"sha512-af1X4eokzmURMSmovuP4bruNZB4HdAvvgwRql20G4sTJ4pCjWJUfcL5SnspCFRLOoKoA0gvsVxQ5HeOz6AAw+w==","repository":{"url":"git+https://github.com/AdaptiveWorX/iac-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"^0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.2.0_1777665948586_0.37482914280385504","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@adaptiveworx/iac-core","version":"0.2.1","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.2.1","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"dist":{"shasum":"4fb98f0ff436891a065b7077a37fe09ba78ae459","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.2.1.tgz","fileCount":57,"integrity":"sha512-oIlXxACx7SCssaiMZDr/TKHf0cRsS4T9oUnBYW1pEm0UOoYR45CmM0bCbslo1aj3id1W2utuOpi5MSzsIpCJzA==","signatures":[{"sig":"MEQCIHO3ljcyElYq7YW+f3bbyu/W0srjgsw6RovjEsEFZT07AiBACL+7jAs0vIVMXec+esLbznw/oHBFT24wmnFERJPkWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":308020},"main":"./dist/index.js","type":"module","_from":"file:adaptiveworx-iac-core-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js","default":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js","default":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js","default":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js","default":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js","default":"./dist/validation/*.js"}},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"_resolved":"/home/runner/work/iac-core/iac-core/packages/iac-core/adaptiveworx-iac-core-0.2.1.tgz","_integrity":"sha512-oIlXxACx7SCssaiMZDr/TKHf0cRsS4T9oUnBYW1pEm0UOoYR45CmM0bCbslo1aj3id1W2utuOpi5MSzsIpCJzA==","repository":{"url":"git+https://github.com/AdaptiveWorX/iac-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"^0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.2.1_1777678180549_0.843235394244038","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adaptiveworx/iac-core","version":"0.3.0","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.3.0","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"dist":{"shasum":"dd424786cb41cd8877b212a52bd55ba46c0ef8b6","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.3.0.tgz","fileCount":57,"integrity":"sha512-udtwHnGOZXrOslVamc6VTsay5csn1n49qrF8JO9KycDXkw3m48yoGlAE762t/P9N0AP4meFdPSltLpJ/dTBRrQ==","signatures":[{"sig":"MEUCIQDHjIHVJrwvI1cUDx7P92w8GeT8KVWNvD0uyg1s+L6iyQIgK2BUZN0U1hRgwiO+HIBAt5/X1nKaEpG5q4+x66OWDwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":308843},"main":"./dist/index.js","type":"module","_from":"file:adaptiveworx-iac-core-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js","default":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js","default":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js","default":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js","default":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js","default":"./dist/validation/*.js"}},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"_resolved":"/home/runner/work/iac-core/iac-core/packages/iac-core/adaptiveworx-iac-core-0.3.0.tgz","_integrity":"sha512-udtwHnGOZXrOslVamc6VTsay5csn1n49qrF8JO9KycDXkw3m48yoGlAE762t/P9N0AP4meFdPSltLpJ/dTBRrQ==","repository":{"url":"git+https://github.com/AdaptiveWorX/iac-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"^0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","typescript":"^6.0.0","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","typescript":"^6.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.3.0_1778105799296_0.14199984885256822","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@adaptiveworx/iac-core","version":"0.3.1","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"license":"Apache-2.0","_id":"@adaptiveworx/iac-core@0.3.1","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"dist":{"shasum":"f224559fa0b52b8c154d0fbbbd377a42cfcecb98","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.3.1.tgz","fileCount":57,"integrity":"sha512-FKkTTSu5kSkXMCVaPdB+DuRkjPYz7Bhp150PY4peEJeR5IdC4PQ+V9j+zRzl2P14Z3J8fZ5tIr9Rt7ikneKXVg==","signatures":[{"sig":"MEUCIQDTiqdlKx/s96OxhO5J54Az8vn98Zo+6zz6qdJZPJMAkwIgEWEpWY7o9TnxOJqA5ZGRT2uuXhk2V+G2SQsGIJM1rpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":309160},"main":"./dist/index.js","type":"module","_from":"file:adaptiveworx-iac-core-0.3.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js","default":"./dist/types/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js","default":"./dist/utils/*.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js","default":"./dist/config/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js","default":"./dist/schemas/*.js"},"./package.json":"./package.json","./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js","default":"./dist/validation/*.js"}},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"_resolved":"/home/runner/work/iac-core/iac-core/packages/iac-core/adaptiveworx-iac-core-0.3.1.tgz","_integrity":"sha512-FKkTTSu5kSkXMCVaPdB+DuRkjPYz7Bhp150PY4peEJeR5IdC4PQ+V9j+zRzl2P14Z3J8fZ5tIr9Rt7ikneKXVg==","repository":{"url":"git+https://github.com/AdaptiveWorX/iac-core.git","type":"git","directory":"packages/iac-core"},"_npmVersion":"11.11.0","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@infisical/sdk":"^4.0.6","@adaptiveworx/iac-schemas":"^0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3","typescript":"^6.0.0","@pulumi/pulumi":"^3.200.0","zod-to-json-schema":"^3.24.6"},"peerDependencies":{"zod":"^3.22.0 || ^4.0.0","typescript":"^6.0.0","@pulumi/pulumi":"^3.0.0"},"peerDependenciesMeta":{"typescript":{"optional":true},"@pulumi/pulumi":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/iac-core_0.3.1_1778602839823_0.2517937034198199","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@adaptiveworx/iac-core","version":"0.3.2","type":"module","description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","license":"Apache-2.0","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./config/*":{"types":"./dist/config/*.d.ts","import":"./dist/config/*.js","default":"./dist/config/*.js"},"./utils/*":{"types":"./dist/utils/*.d.ts","import":"./dist/utils/*.js","default":"./dist/utils/*.js"},"./schemas/*":{"types":"./dist/schemas/*.d.ts","import":"./dist/schemas/*.js","default":"./dist/schemas/*.js"},"./types/*":{"types":"./dist/types/*.d.ts","import":"./dist/types/*.js","default":"./dist/types/*.js"},"./validation/*":{"types":"./dist/validation/*.d.ts","import":"./dist/validation/*.js","default":"./dist/validation/*.js"},"./package.json":"./package.json"},"repository":{"type":"git","url":"git+https://github.com/AdaptiveWorX/iac-core.git","directory":"packages/iac-core"},"homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"engines":{"node":">=24.0.0"},"publishConfig":{"access":"public","provenance":true,"registry":"https://registry.npmjs.org/"},"dependencies":{"@infisical/sdk":"^5.0.2","@adaptiveworx/iac-schemas":"^0.1.4"},"peerDependencies":{"@pulumi/pulumi":"^3.0.0","typescript":"^6.0.0","zod":"^3.22.0 || ^4.0.0"},"peerDependenciesMeta":{"@pulumi/pulumi":{"optional":false},"typescript":{"optional":true}},"devDependencies":{"@pulumi/pulumi":"^3.200.0","typescript":"^6.0.0","zod":"^3","zod-to-json-schema":"^3.24.6"},"_id":"@adaptiveworx/iac-core@0.3.2","_integrity":"sha512-TEEL0wQjinruVnoPY1reZpAEMQqHfSMW4OpZyuvz5G2xjgopYwO/lzy2EYPqZ2DP/guDrrzSvRPb2mvHNm+DWw==","_resolved":"/home/runner/work/iac-core/iac-core/packages/iac-core/adaptiveworx-iac-core-0.3.2.tgz","_from":"file:adaptiveworx-iac-core-0.3.2.tgz","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-TEEL0wQjinruVnoPY1reZpAEMQqHfSMW4OpZyuvz5G2xjgopYwO/lzy2EYPqZ2DP/guDrrzSvRPb2mvHNm+DWw==","shasum":"cd9efd49a01860525ca97cafdc3586269cee8b4e","tarball":"https://registry.npmjs.org/@adaptiveworx/iac-core/-/iac-core-0.3.2.tgz","fileCount":57,"unpackedSize":309454,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adaptiveworx%2fiac-core@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA/hubw/bfCFho1SOnbb3MfQ37vzmNTvaWTE4QIsVtDXAiEA42SN84zMOg5UJSRYGgCSdUz3jJNDIwG5rZjk6ByZsb8="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:48e3b276-c8c5-4e46-b3d0-93a3807816f0"}},"directories":{},"maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iac-core_0.3.2_1780956227411_0.9582128711678655"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-29T14:30:29.946Z","modified":"2026-06-08T22:03:47.814Z","0.1.0":"2026-04-29T14:30:30.372Z","0.1.1":"2026-04-29T16:04:17.236Z","0.1.2":"2026-05-01T17:30:28.809Z","0.2.0":"2026-05-01T20:05:48.723Z","0.2.1":"2026-05-01T23:29:40.689Z","0.3.0":"2026-05-06T22:16:39.447Z","0.3.1":"2026-05-12T16:20:40.018Z","0.3.2":"2026-06-08T22:03:47.547Z"},"bugs":{"url":"https://github.com/AdaptiveWorX/iac-core/issues"},"license":"Apache-2.0","homepage":"https://github.com/AdaptiveWorX/iac-core/tree/main/packages/iac-core#readme","keywords":["iac","pulumi","infrastructure-as-code","aws","multi-cloud","typescript","zod","infisical","secrets","stack-context","cidr-allocation","adaptiveworx"],"repository":{"type":"git","url":"git+https://github.com/AdaptiveWorX/iac-core.git","directory":"packages/iac-core"},"description":"Core utilities for AdaptiveWorX™ infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.","maintainers":[{"name":"lloydmangnall","email":"lloyd@adaptiveworx.com"}],"readme":"# @adaptiveworx/iac-core\n\nCore utilities for [AdaptiveWorX™ Flow](https://adaptiveworx.com) infrastructure-as-code: secret management, stack context detection, region resolution, CIDR allocation, and Zod-validated configuration schemas.\n\nThe package is multi-cloud-aware (AWS today; Azure and GCP planned) and is licensed under Apache 2.0 for use in any Pulumi + TypeScript project.\n\n## Install\n\n```bash\npnpm add @adaptiveworx/iac-core\n# or\nyarn add @adaptiveworx/iac-core\n# or\nnpm install @adaptiveworx/iac-core\n```\n\n`zod` is a peer dependency:\n\n```bash\npnpm add zod\n```\n\n## Quick start\n\n```ts\nimport {\n  OrganizationConfig,\n  loadOrganizationOptionsFromEnv,\n  SecretManager,\n  detectStackContext,\n} from \"@adaptiveworx/iac-core\";\n\n// 1. Detect Pulumi stack context (cloud, environment, region, purpose)\nconst ctx = detectStackContext();\n\n// 2. Load organization options from env vars\nconst orgConfig = new OrganizationConfig(loadOrganizationOptionsFromEnv());\n\n// 3. Fetch secrets via Infisical (or env-var fallback)\nconst sm = new SecretManager({ environment: ctx.environment });\nconst dbPassword = await sm.getSecret(\"DB_PASSWORD\");\n```\n\nSubpath imports are supported for tree-shaking-sensitive consumers:\n\n```ts\nimport { SecretManager } from \"@adaptiveworx/iac-core/config/secrets\";\nimport { resolveRegion } from \"@adaptiveworx/iac-core/utils/region-utils\";\n```\n\n## Quick-start guides per cloud\n\n- [AWS quick start](./docs/quickstart-aws.md) — full Pulumi + AWS deploy walkthrough; covers OrganizationConfig, AWSAccountRegistry, CIDR, and policy-pack integration\n- [Azure quick start](./docs/quickstart-azure.md) — Azure-shaped OrganizationConfig + region resolution + secrets; what works and what doesn't (yet)\n- [GCP quick start](./docs/quickstart-gcp.md) — GCP-shaped OrganizationConfig + region resolution; lighter-weight than AWS\n\n## Public API\n\n### `config/`\n\n- **`SecretManager`** — fetches secrets from Infisical (mandatory in production paths) with `.env.{env}` file fallback. Public methods: `getSecret`, `getOptionalSecret`, `getBooleanSecret`, `getDeploymentConfiguration`, `healthCheck`.\n- **`OrganizationConfig`** — pure consumer of `OrganizationOptions`. Construct via `new OrganizationConfig(opts)`; load options via `loadOrganizationOptionsFromEnv()` (generic) or `loadAdaptiveOrganizationDefaults()` (AdaptiveWorX-internal).\n- **`AWSAccountRegistry`** — discovers per-environment AWS accounts from `SecretManager`, optionally merged with caller-supplied \"foundation accounts\" (master, audit, log-archive, etc.).\n\n### `utils/`\n\n- **`stack-utils`** — `detectStackContext`, `parseStackName`, `generateStackName`, `validateStackContext`, `getEnvironmentConfig`, `getComplianceRequirements`, `validateCrossAccountOperation`.\n- **`region-utils`** — `resolveRegion`, `getRegionAliases`, `isValidRegion`, `validateAvailabilityZones` (loads region aliases from `@adaptiveworx/iac-schemas`).\n- **`cidr-allocation`** — `calculateVpcCidr`, `getVpcCidr` for non-overlapping CIDR allocation across environments + regions.\n- **`stack-readme`** — `generateStackReadme`, `exportStackReadme` for auto-documenting Pulumi stacks.\n\n### `schemas/`\n\n- **`SCHEMA_CONFIG`, `SCHEMA_BASE_URL`** — canonical metadata for the IaC schema namespace.\n- **`schemas/core/core-schemas`** — Zod validators (`StackContextSchema`, `DeploymentConfigSchema`, `AwsRegionSchema`, etc.).\n\n### `validation/`\n\n- **`AgentValidationService`, `ValidationPatterns`** — runtime guardrails for agent-driven IaC operations.\n- **`ConfigurationValidator`** — config-shape validators for stack/environment/component constraints.\n\n### `types/`\n\n- All shared infrastructure types: `CloudProvider`, `Environment`, `StackContext`, `DeploymentConfig`, `ComplianceRequirement`, `AccountConfig`, `CidrAllocation`, etc.\n\n## Configuration via environment variables\n\nThe package follows a \"config-in, behavior-out\" pattern. Classes consume validated options; adapter helpers source those options. The library never reads `process.env` from a class constructor — only from the explicit `loadXxxFromEnv()` helpers.\n\n### Required (when calling `loadOrganizationOptionsFromEnv()`)\n\n| Variable | Purpose |\n|---|---|\n| `ORG_NAME` | Display name of your organization |\n| `ORG_TENANT` | Short tenant identifier (kebab-case) |\n| `ORG_DOMAIN` | Primary DNS domain (e.g. `example.com`) |\n\n### AWS-organization specifics\n\n`iac-core` is cloud-agnostic — AWS-organization config (org ID, master/security accounts, primary/DR region lists) lives in [`@adaptiveworx/iac-aws`](../iac-aws) as `AwsOrganizationConfig`, with its own `AWS_*` env-var loaders. See the [AWS quick start](./docs/quickstart-aws.md) for the two-class composition pattern.\n\n### Schema metadata overrides\n\n| Variable | Purpose | Default |\n|---|---|---|\n| `IAC_SCHEMA_BASE_URL` | Schema publish URL | `https://schemas.adaptiveworx.com/iac` |\n| `IAC_SCHEMA_CONTACT_NAME` | Schema contact name | `Adaptive Intelligence, LLC` |\n| `IAC_SCHEMA_CONTACT_URL` | Schema contact URL | `https://adaptiveworx.com` |\n\n### SecretManager / Infisical\n\n| Variable | Purpose |\n|---|---|\n| `INFISICAL_CLIENT_ID` | Infisical Universal Auth client ID |\n| `INFISICAL_CLIENT_SECRET` | Infisical Universal Auth client secret |\n| `INFISICAL_PROJECT_ID` | Infisical project ID |\n| `INFISICAL_SITE_URL` | Self-hosted Infisical URL (defaults to public Infisical) |\n\nWhen Infisical credentials are absent, `SecretManager` falls back to `.env.{IAC_ENV}` files for local development.\n\n## Multi-tenant override pattern\n\n`OrganizationConfig` is a pure consumer of validated options. Three loading patterns cover the common cases:\n\n### 1. AdaptiveWorX-internal — convenience helper\n\nFor deployments inside AdaptiveWorX. Uses canonical defaults with env-var overrides on top.\n\n```ts\nimport {\n  OrganizationConfig,\n  loadAdaptiveOrganizationDefaults,\n} from \"@adaptiveworx/iac-core\";\n\nconst orgConfig = new OrganizationConfig(loadAdaptiveOrganizationDefaults());\n// orgName: \"AdaptiveWorX\" (or process.env.ORG_NAME)\n// tenant:  \"worx\"          (or process.env.ORG_TENANT)\n// orgDomain: \"adaptiveworx.com\" (or process.env.ORG_DOMAIN)\n```\n\nFor the AWS-organization specifics (org ID, accounts, regions), compose with `AwsOrganizationConfig` from [`@adaptiveworx/iac-aws`](../iac-aws).\n\n### 2. External consumer (Azure) — explicit construction\n\nFor an Azure-only consumer. No AdaptiveWorX defaults leak in.\n\n```ts\nimport { OrganizationConfig } from \"@adaptiveworx/iac-core\";\n\nconst orgConfig = new OrganizationConfig({\n  orgName: \"Acme Health\",\n  tenant: \"care\",\n  orgDomain: \"acme.example\",\n});\n```\n\n`OrganizationConfig` carries cloud-agnostic identity, environments, stack naming, and network strategy. Cloud-specific organization config (Management Groups, Tenants, Subscriptions) is not yet modeled — apply Azure-shaped values directly to your Pulumi resources for now.\n\n### 3. External consumer (AWS) — env-var-driven, two-class composition\n\nFor an external AWS-based consumer. `iac-core` loads org identity from `ORG_*`; [`@adaptiveworx/iac-aws`](../iac-aws) loads AWS-org specifics from `AWS_*`. No AdaptiveWorX defaults applied — every value comes from the environment.\n\n```ts\nimport {\n  OrganizationConfig,\n  loadOrganizationOptionsFromEnv,\n} from \"@adaptiveworx/iac-core\";\nimport {\n  AwsOrganizationConfig,\n  loadAwsOrganizationOptionsFromEnv,\n} from \"@adaptiveworx/iac-aws\";\n\n// Acme Co's deploy environment:\n//   ORG_NAME=\"Acme Co\"\n//   ORG_TENANT=\"acme\"\n//   ORG_DOMAIN=\"acme.example\"\n//   AWS_ORG_ID=\"123456789012\"\n//   AWS_MASTER_ACCOUNT=\"acme-master\"\n//   AWS_SECURITY_ACCOUNT=\"acme-secops\"\n//   AWS_PRIMARY_REGIONS=\"us-east-2,us-west-1\"\n//   AWS_DR_REGIONS=\"eu-west-1\"\n\nconst orgConfig = new OrganizationConfig(loadOrganizationOptionsFromEnv());\nconst awsConfig = new AwsOrganizationConfig(loadAwsOrganizationOptionsFromEnv());\n\norgConfig.orgName;                  // \"Acme Co\"\nawsConfig.awsOrganizationId;        // \"123456789012\"\nawsConfig.primaryRegions;           // [\"us-east-2\", \"us-west-1\"]\n```\n\n### Picking your loader\n\n| Loader | When to use | Throws if missing |\n|---|---|---|\n| `loadAdaptiveOrganizationDefaults()` | You're AdaptiveWorX-internal and want canonical defaults | No (defaults applied) |\n| `loadOrganizationOptionsFromEnv()` | You manage your own env-var contract, no AdaptiveWorX defaults wanted | Yes, on missing `ORG_NAME` / `ORG_TENANT` / `ORG_DOMAIN` |\n| Direct `new OrganizationConfig({...})` | You're constructing options from a config file, secrets manager, or test fixture | Yes, if any of `orgName` / `tenant` / `orgDomain` is empty |\n\nThe same pattern applies to `AWSAccountRegistry` — see the `loadAdaptiveFoundationAccounts()` helper for the AdaptiveWorX foundation-account fixture, or pass your own `Map<string, FoundationAccount>` via the `foundationAccounts` constructor option.\n\n## API reference\n\nThe most important public classes, with signatures and minimal examples. For the full surface, see [`src/index.ts`](./src/index.ts).\n\n### `SecretManager`\n\nFetches secrets from Infisical (Universal Auth) with optional fallback to `.env.{IAC_ENV}` files for local development.\n\n```ts\nclass SecretManager {\n  constructor(defaultContext?: SecretContext);\n\n  // Required secret — throws if absent in both Infisical and env vars\n  getSecret(key: string, context?: SecretContext): Promise<string>;\n\n  // Optional secret with fallback\n  getOptionalSecret(key: string, defaultValue: string, context?: SecretContext): Promise<string>;\n\n  // Boolean parser (truthy: \"true\" | \"1\" | \"yes\")\n  getBooleanSecret(key: string, defaultValue?: boolean, context?: SecretContext): Promise<boolean>;\n\n  // Resolves `AWS_ACCOUNTS` JSON from Infisical\n  getAwsAccountsJson(): Promise<AwsAccountsMap>;\n  getAwsAccountId(purpose: string, environment: string): Promise<string | null>;\n  getAwsProfile(purpose: string, environment: string, _org: string): Promise<string | null>;\n\n  // High-level deployment config (combines org config + secrets + accounts)\n  getDeploymentConfiguration(): Promise<DeploymentConfig>;\n\n  // Connection check — useful in CI to fail fast before running pulumi\n  healthCheck(): Promise<{ infisicalAvailable: boolean; missingSecrets: string[] }>;\n}\n\ninterface SecretContext {\n  environment?: Environment;   // dev | stg | prd | sec\n  cloud?: CloudProvider;       // aws | azure | gcp | cloudflare\n  region?: string;\n  purpose?: string;\n}\n```\n\n```ts\nconst sm = new SecretManager({ environment: \"dev\" });\nawait sm.getSecret(\"DB_PASSWORD\");\nawait sm.getOptionalSecret(\"LOG_LEVEL\", \"info\");\nconst useFlag = await sm.getBooleanSecret(\"FEATURE_X_ENABLED\", false);\n```\n\n> **Roadmap note**: `SecretManager` is welded to Infisical today. A `SecretsBackend` pluggable interface (Azure Key Vault / AWS Secrets Manager / HashiCorp Vault / 1Password Connect / in-memory test) is designed in [`docs/design-secrets-backend.md`](./docs/design-secrets-backend.md) but not yet implemented. The shape stays proposal-only until a concrete second consumer validates the interface against their real auth + secret layout. Existing callers will keep working when it lands — no public-API break.\n\n### `OrganizationConfig`\n\nPure consumer of `OrganizationOptions`. See the [Multi-tenant override pattern](#multi-tenant-override-pattern) above for how to source options.\n\n```ts\nclass OrganizationConfig {\n  readonly orgName: string;\n  readonly tenant: string;\n  readonly orgDomain: string;\n  readonly environments: Record<string, EnvironmentConfig>;\n  readonly stackNaming: StackNaming;\n  readonly network: NetworkConfig;\n\n  constructor(opts: OrganizationOptions);\n\n  getEnvironmentConfig(environment: string): EnvironmentConfig | undefined;\n\n  // Build a stack name from components — applies stackNaming.separator\n  // and compresses the region per regionFormat\n  formatStackName(org: string, cloud: string, purpose: string, env: string, region: string): string;\n\n  // Strategy lookup (none | single | multi-az | high-availability)\n  getNatGatewayCount(environment: string): number;\n\n  // Service feature flags — currently \"monitoring\", \"guardduty\"\n  shouldEnableService(service: string, environment: string): boolean;\n\n  // \"data\" | \"backup\" | \"logs\" → days\n  getRetentionDays(retentionType: \"data\" | \"backup\" | \"logs\", environment: string): number;\n\n  exportAsDict(): Record<string, unknown>;\n}\n```\n\nThe `DEFAULT_ENVIRONMENTS`, `DEFAULT_STACK_NAMING`, and `DEFAULT_NETWORK` constants are exported so consumers can compose their own options on top of the canonical layout without restating it:\n\n```ts\nimport { OrganizationConfig, DEFAULT_ENVIRONMENTS } from \"@adaptiveworx/iac-core\";\n\nconst orgConfig = new OrganizationConfig({\n  orgName: \"Acme Co\", tenant: \"acme\", orgDomain: \"acme.example\",\n  environments: {\n    ...DEFAULT_ENVIRONMENTS,\n    qa: { ...DEFAULT_ENVIRONMENTS.dev, name: \"QA\", shortName: \"stg\" }, // add a custom env\n  },\n});\n```\n\n### `AWSAccountRegistry`\n\nDiscovers per-environment AWS accounts from a `SecretManager` (typically Infisical's `AWS_ACCOUNTS` JSON) and merges them with optional \"foundation accounts\" — long-lived accounts (master, audit, log-archive, etc.) that sit outside the per-environment structure.\n\n```ts\nclass AWSAccountRegistry {\n  constructor(opts?: AwsAccountRegistryOptions);\n\n  getFoundationAccountByName(accountName: string): FoundationAccount | undefined;\n  getFoundationAccountByPurpose(purpose: string): FoundationAccount | undefined;\n\n  getAccountsForEnvironment(environment: Environment): Promise<Map<string, AccountInfo>>;\n  getAllAccounts(): Promise<Map<string, AccountInfo>>;\n  getAccountById(accountId: string): Promise<AccountInfo | null>;\n  getAccountByName(accountName: string): Promise<AccountInfo | null>;\n  getAccountsByPurpose(purpose: string): Promise<Map<string, AccountInfo>>;\n\n  // Returns the secops/hub account if exactly one is marked isVpcHub\n  getHubAccount(): Promise<[string, AccountInfo] | [null, null]>;\n  getSpokeAccounts(): Promise<Map<string, AccountInfo>>;\n\n  clearCache(): void;\n}\n\ninterface AwsAccountRegistryOptions {\n  secretManager?: SecretManager;\n  foundationAccounts?: Map<string, FoundationAccount>;\n  accountNamingPrefix?: string;   // default \"account\"\n}\n```\n\n```ts\nimport {\n  AWSAccountRegistry,\n  loadAdaptiveFoundationAccounts,\n} from \"@adaptiveworx/iac-core\";\n\n// AdaptiveWorX-internal — uses canonical foundation accounts + \"worx\" prefix\nconst registry = new AWSAccountRegistry({\n  foundationAccounts: loadAdaptiveFoundationAccounts(),\n  accountNamingPrefix: \"worx\",\n});\n\nconst audit = registry.getFoundationAccountByName(\"adaptive-audit\");\nconst dev = await registry.getAccountsForEnvironment(\"dev\");\n```\n\nFor external consumers, omit the helpers — the registry will discover accounts dynamically from `SecretManager` only:\n\n```ts\nconst registry = new AWSAccountRegistry();   // empty foundation map, generic prefix\n```\n\n### Utilities — `region-utils`\n\n```ts\nfunction resolveRegion(cloud: CloudProvider, regionAlias: string): string;\nfunction getRegionAliases(cloud: CloudProvider): Record<string, string>;\nfunction getRegions(cloud: CloudProvider): string[];\nfunction isValidRegion(cloud: CloudProvider, region: string): boolean;\nfunction validateAvailabilityZones(region: string, count: number): boolean;\n```\n\n```ts\nimport { resolveRegion } from \"@adaptiveworx/iac-core\";\n\nresolveRegion(\"aws\", \"use1\");      // \"us-east-1\"\nresolveRegion(\"azure\", \"eus2\");    // \"eastus2\"\nresolveRegion(\"aws\", \"us-east-1\"); // \"us-east-1\" (already canonical)\n```\n\n### Utilities — `stack-utils`\n\n```ts\nfunction detectStackContext(): StackContext;\nfunction validateStackContext(ctx: StackContext): ValidationResult;\n\n// Stack name = \"<targetEnv>-<accountPurpose>-<stackPurpose>-<region>\"\n// e.g. \"dev-app-iam-use1\" or \"stg-ops-vpc-use1\"\nfunction parseStackName(stackName: string): StackContext | null;\nfunction generateStackName(ctx: StackContext): string;\nfunction isValidStackName(stackName: string): boolean;\n\nfunction getEnvironmentConfig(env: Environment): EnvironmentConfig;\nfunction getComplianceRequirements(env: Environment): ComplianceRequirement[];\nfunction validateCrossAccountOperation(source: string, target: string): ValidationResult;\n```\n\n> AWS-typed region resolution (`resolveAwsRegion(regionCode): aws.Region`)\n> lives in [`@adaptiveworx/iac-aws`](../iac-aws) — `iac-core`'s\n> cloud-agnostic boundary forbids `@pulumi/aws` references in its\n> emitted types.\n\n### Utilities — `cidr-allocation`\n\n```ts\n// Pure CIDR math\nfunction calculateVpcCidr(cidrBase: string, offset: number): string;\n\n// Looks up the cidrBase from SecretManager (`VPC_CIDR_BASE`), then\n// resolves an offset from regionsConfig.aws.cidrOffsets[region]\nfunction getVpcCidr(\n  environment: string,\n  region: string,\n  secretManager: SecretManager\n): Promise<string>;\n```\n\n```ts\ncalculateVpcCidr(\"10.224.0.0/11\", 0);  // \"10.224.0.0/16\" — us-east-1\ncalculateVpcCidr(\"10.224.0.0/11\", 1);  // \"10.225.0.0/16\" — us-east-2\n```\n\n### Schemas — `schemas/core`\n\nZod validators ready for `safeParse` / `parse`:\n\n```ts\nimport {\n  StackContextSchema,\n  DeploymentConfigSchema,\n  AwsRegionSchema,\n  EnvironmentSchema,\n  ComplianceRequirementSchema,\n} from \"@adaptiveworx/iac-core\";\n\nconst result = StackContextSchema.safeParse(ctx);\nif (!result.success) {\n  console.error(result.error.issues);\n}\n```\n\n## Tested versions\n\n| Dependency | Range |\n|---|---|\n| Node.js | `>=22.0.0` |\n| TypeScript | `^5.9.3` |\n| Pulumi | `^3.200.0` |\n| Zod | `^3.22.0 \\|\\| ^4.0.0` (peer) |\n| Infisical SDK | `^4.0.6` |\n\n## Stability\n\nThis is a `0.x` release. The API may change in backwards-incompatible ways before `1.0`. Once `1.0` ships, the package will follow [Semantic Versioning](https://semver.org/).\n\n## License\n\n[Apache 2.0](./LICENSE). See [NOTICE](./NOTICE) for attribution requirements.\n\n## Repository + contributing\n\nThis package is developed in the [AdaptiveWorX/iac-core](https://github.com/AdaptiveWorX/iac-core) monorepo at `packages/iac-core/`. See [CONTRIBUTING.md](https://github.com/AdaptiveWorX/iac-core/blob/main/CONTRIBUTING.md) for setup, workflow conventions, and the release process. File issues at <https://github.com/AdaptiveWorX/iac-core/issues>.\n","readmeFilename":"README.md"}