<!-- markdownlint-disable MD013 MD033 -->
<!-- This file is generated by Paradox. Do not edit manually. -->

# INFRA

![license: MIT](././paradox/badges/license.svg) ![npm: v7.1.6](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)

Executable infra provider and standalone CLI for Ankhorage project workflows.

## Usage

### Provider-neutral infrastructure lifecycle

`@ankhorage/infra` resolves only the compute, runtime, and service adapter packages selected by
an environment-aware Infra manifest. Its typed use cases own orchestration, dependency ordering,
safe outputs, deterministic artifacts, and environment-scoped ownership state. Provider packages
own all technology-specific implementation.

The standalone CLI and `ankh infra` expose the same lifecycle:

- `validate`
- `plan`
- `generate`
- `up`
- `status`
- `outputs`
- `down`
- `destroy`

`local` is the only default environment. Destruction always requires an explicit environment and
exact `<project>:<environment>` confirmation. Persistent resources remain retained unless each
exact owned resource is separately authorized with `--delete-resource <adapter>:<resourceId>`.
Environment-style outputs print only explicitly public values with an environment-variable name;
secret outputs remain references.

Source: `src/readme-usage.ts`

```ts
import { runInfraCliAsync } from './cli/runInfraCliAsync.js';

await runInfraCliAsync(['--help']);
```

## Generated documentation

- [Interactive documentation app](././paradox/index.html)
- [Public API reference](././paradox/exports.md)
- [Component registry](././paradox/components.md)
- [Architecture overview](././paradox/diagrams/architecture-overview.mmd)
- [Module relationships](././paradox/diagrams/module-relationships.mmd)
- [Export graph](././paradox/diagrams/export-graph.mmd)
- [getInfraEnvironmentOutputs sequence](././paradox/diagrams/sequences/get-infra-environment-outputs.mmd)
- [orderInfraPlanActions sequence](././paradox/diagrams/sequences/order-infra-plan-actions.mmd)
- [resolveInfraEnvironment sequence](././paradox/diagrams/sequences/resolve-infra-environment.mmd)
