# wasm-capability-core
> **TLDR:** This pattern's own default, zero-external-technology
> implementation (SEA L2 core) — `InMemoryCapabilityRegistry`.
Starts empty, matching `HashMap::new()`/`Vec::new()` convention — this crate has no knowledge
of any specific technology or consumer. A caller registers every named instance it needs
(e.g. `"grpc-egress"`, or a deployer-scoped instance like `"grpc-egress:inventory-svc"`)
without editing this crate's source. Not to be confused with this repo's own
[ADR-001](https://github.com/sweengineeringlabs/wasm-capability-pattern/blob/dev/scm/docs/adr/ADR-001-contract-core-split.md),
a different, later, local decision.
A technology-specific `CapabilityEngine`, `ComponentValidator`, or `CapabilityDispatcher`
implementation belongs in its own downstream consumer crate instead — this crate wraps no
external technology of its own, and has no dependency on, or knowledge of, any consumer.
## Quick Start
```rust
use wasm_capability_contract::{CapabilityDescriptor, CapabilityRegistry};
use wasm_capability_core::InMemoryCapabilityRegistry;
let registry = InMemoryCapabilityRegistry::new()
.register(
"grpc-egress",
CapabilityDescriptor {
import_name: "grpc-egress",
},
)
.register(
"grpc-egress:inventory-svc",
CapabilityDescriptor {
import_name: "grpc-egress",
},
);
let descriptor = registry.descriptor("grpc-egress").expect("registered capability");
assert_eq!(descriptor.import_name, "grpc-egress");
```
Depend on [`wasm-capability-contract`](https://github.com/sweengineeringlabs/wasm-capability-pattern/tree/dev/scm/main/contract)
(for `CapabilityDescriptor`/`CapabilityRegistry`) and this crate together.
## Documentation
| [Overview](https://github.com/sweengineeringlabs/wasm-capability-pattern/blob/dev/scm/docs/README.md) | WHAT + WHY, including why this is built on `svc-registry-adapter` |
| [Architecture](https://github.com/sweengineeringlabs/wasm-capability-pattern/blob/dev/scm/docs/3-design/architecture.md) | Component diagram, crate boundaries |
## License
MIT OR Apache-2.0