/** * Infrastructure Tools — hosts, tenants, services and the ports they claim. * * `@medicine-wheel/infra` shipped its facets, its schemas and `detectPortConflicts` * and was imported by nothing: the vocabulary existed and no agent could reach it. * This file is the door. Every tool here is backed by a type or a pure function * already written in that package; none of them widens the ontology. * * Three commitments this module makes, each of which is a defect if broken: * * 1. **The tool emits `metadata.kind`, never the agent.** The precedent is stated * in `ontology-core/src/types.ts`: new kinds ride existing `knowledge`/`land`/ * `human` nodes carrying a discriminator. Hand-typing that discriminator is how * it gets misspelled once and the node becomes unfindable forever. * 2. **Every facet is `safeParse`d before it is stored.** A legible-but-stale model * lies with a straight face; a port of `0` is rejected here rather than silently * never colliding with anything downstream. * 3. **Writes are awaited.** `HttpStore.createNode` returns a promise precisely so * a caller can learn the truth rather than being told "registered" over a * request that 404'd. * * Registration is idempotent by identity, not by id: a host is its hostname, a * tenant is its account on its host, a service is its unit under its owner. * Re-registering updates in place and says `updated`. Without that, an agent * re-running a provisioning step fills the wheel with duplicate services, and the * port-conflict traversal then reports every service as colliding with itself. * * **Update means merge, never replace.** A re-registration that rebuilt the facet * from its arguments alone would silently drop every field the caller did not * re-supply — including the `metis` some person put there with `hold_metis`. A * package whose stated reason to exist is that the grid must not flatten what * people know cannot have its most ordinary operation delete it. Prior fields * survive unless the caller passes a new value for them. * * @see src/infra/src/types.ts — the facets * @see src/infra/src/ports.ts — detectPortConflicts * @see src/infra/src/preconditions.ts — preconditionGuard / readyService * @see src/infra/src/reconcile.ts — level-triggered drift */ import type { Tool } from "../types.js"; export declare const infrastructureTools: Tool[]; //# sourceMappingURL=infrastructure.d.ts.map