/**
 * `src/tools/` — the instruments. Everything in here is for the person building
 * this map, not for the person looking at it.
 *
 * There is one rule and this file exists to hold it: **nothing under
 * `src/tools/` may be reached by a static import from the app.** `main.ts` loads
 * it like this, and only like this:
 *
 * ```ts
 * if (access.can.debug) {
 *   const { createGodmode } = await import("./tools/index.ts");
 *   godmode = createGodmode({ ... });
 * }
 * ```
 *
 * A static `import` would put the panel in the entry chunk, and the entry chunk
 * is 772 kB before anybody has done anything — the whole thing arrives, parses
 * and runs for every anonymous visitor who will never see a single control in
 * it. Behind a dynamic import Vite gives the tools a chunk of their own, and a
 * visitor who is not god does not download the code at all. That is also the
 * strongest available reading of "nothing here may run for a non-god visitor":
 * not a hidden panel, not a disabled panel, no panel.
 *
 * The corollary is that the arrow points one way. A tool may import from
 * `engine/`, `access.ts` or `adapters/`; nothing outside `src/tools/` may import
 * from inside it except through an `await import()`, or the split silently stops
 * happening and nobody notices until the bundle is measured again.
 *
 * Type-only imports are the exception and are free: `import type { Godmode }` is
 * erased at build time and creates no chunk edge. `main.ts` needs one to hold
 * the handle in a nullable field.
 */

export { createGodmode } from "./godmode.ts";
export type {
  Godmode,
  GodmodeHouseLights,
  GodmodeOffice,
  GodmodeOptions,
  GodmodePlace,
} from "./godmode.ts";
