@homeflare/alchemy 0.37.5 → 0.37.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/openbao/auth-role-form.d.ts +0 -6
  2. package/dist/openbao/auth-role-form.d.ts.map +1 -1
  3. package/dist/openbao/auth-role-identity.d.ts +11 -0
  4. package/dist/openbao/auth-role-identity.d.ts.map +1 -0
  5. package/dist/openbao/auth-role-wire.d.ts +23 -0
  6. package/dist/openbao/auth-role-wire.d.ts.map +1 -0
  7. package/dist/openbao/auth-role.d.ts.map +1 -1
  8. package/dist/openbao/bao-http.d.ts +34 -13
  9. package/dist/openbao/bao-http.d.ts.map +1 -1
  10. package/dist/openbao/distilled.d.ts +25 -0
  11. package/dist/openbao/distilled.d.ts.map +1 -0
  12. package/dist/openbao/fake-engines-roles.d.ts +5 -1
  13. package/dist/openbao/fake-engines-roles.d.ts.map +1 -1
  14. package/dist/openbao/index.js +358 -305
  15. package/dist/openbao/index.js.map +13 -9
  16. package/dist/openbao/policy-identity.d.ts +12 -0
  17. package/dist/openbao/policy-identity.d.ts.map +1 -0
  18. package/dist/openbao/policy-wire.d.ts +9 -8
  19. package/dist/openbao/policy-wire.d.ts.map +1 -1
  20. package/dist/openbao/policy.d.ts.map +1 -1
  21. package/dist/openbao/rename.d.ts +5 -0
  22. package/dist/openbao/rename.d.ts.map +1 -1
  23. package/dist/proxmox/index.js +2 -2
  24. package/dist/proxmox/index.js.map +3 -3
  25. package/dist/proxmox/node-network-wire.d.ts +14 -10
  26. package/dist/proxmox/node-network-wire.d.ts.map +1 -1
  27. package/docs/upstream-conformance.md +5 -3
  28. package/package.json +3 -2
  29. package/src/openbao/auth-role-form.test.ts +11 -9
  30. package/src/openbao/auth-role-form.ts +0 -19
  31. package/src/openbao/auth-role-identity.ts +24 -0
  32. package/src/openbao/auth-role-sdk.test.ts +155 -0
  33. package/src/openbao/auth-role-wire.test.ts +128 -0
  34. package/src/openbao/auth-role-wire.ts +89 -0
  35. package/src/openbao/auth-role.ts +9 -9
  36. package/src/openbao/bao-http.ts +9 -7
  37. package/src/openbao/distilled-retry.test.ts +164 -0
  38. package/src/openbao/distilled.test.ts +146 -0
  39. package/src/openbao/distilled.ts +88 -0
  40. package/src/openbao/fake-engines-roles.ts +9 -2
  41. package/src/openbao/policy-distilled.test.ts +98 -0
  42. package/src/openbao/policy-identity.ts +24 -0
  43. package/src/openbao/policy-rename.test.ts +2 -2
  44. package/src/openbao/policy-wire.test.ts +5 -5
  45. package/src/openbao/policy-wire.ts +31 -11
  46. package/src/openbao/policy.ts +10 -13
  47. package/src/openbao/rename.ts +17 -1
  48. package/src/proxmox/node-network-read-failure.test.ts +24 -0
  49. package/src/proxmox/node-network-wire.ts +15 -17
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/openbao/approle-login.ts", "../src/openbao/bao-http.ts", "../src/openbao/bao-address.ts", "../src/openbao/bao-status.ts", "../src/openbao/mount-path.ts", "../src/openbao/approle-login-form.ts", "../src/openbao/approle-login-result.ts", "../src/openbao/auth-method.ts", "../src/ownership/adopt.ts", "../src/ownership/resume.ts", "../src/ownership/rows.ts", "../src/ownership/whole.ts", "../src/ownership/probe.ts", "../src/openbao/digest.ts", "../src/openbao/mount-form.ts", "../src/openbao/auth-method-form.ts", "../src/openbao/auth-method-reconcile.ts", "../src/openbao/auth-method-wire.ts", "../src/openbao/mount-move.ts", "../src/openbao/remount-wire.ts", "../src/openbao/auth-role.ts", "../src/openbao/auth-role-form.ts", "../src/openbao/rename-identity.ts", "../src/openbao/rename.ts", "../src/openbao/bao-identity.ts", "../src/openbao/bao-namespace.ts", "../src/openbao/cloudflare-role.ts", "../src/openbao/cloudflare-group-scope.ts", "../src/openbao/cloudflare-permission-groups.ts", "../src/openbao/cloudflare-permission-groups-solve.ts", "../src/openbao/cloudflare-policy.ts", "../src/openbao/cloudflare-role-wire.ts", "../src/openbao/cloudflare-role-form.ts", "../src/openbao/cloudflare-roles-expand.ts", "../src/openbao/cloudflare-roles-config.ts", "../src/openbao/host-approles.ts", "../src/openbao/jwt-config.ts", "../src/openbao/jwt-config-form.ts", "../src/openbao/role-reconcile.ts", "../src/openbao/jwt-role.ts", "../src/openbao/auth-token-form.ts", "../src/openbao/jwt-role-form.ts", "../src/openbao/kubernetes-role.ts", "../src/openbao/kubernetes-role-form.ts", "../src/openbao/mfa-enforcement.ts", "../src/openbao/mfa-enforcement-form.ts", "../src/openbao/mfa-wire.ts", "../src/openbao/mfa-totp.ts", "../src/openbao/mfa-totp-form.ts", "../src/openbao/mount.ts", "../src/openbao/mount-reconcile.ts", "../src/openbao/mount-wire.ts", "../src/openbao/pki-role.ts", "../src/openbao/pki-role-canonical.ts", "../src/openbao/pki-role-form.ts", "../src/openbao/plugin.ts", "../src/openbao/plugin-form.ts", "../src/openbao/plugin-reconcile.ts", "../src/openbao/plugin-wire.ts", "../src/openbao/policy.ts", "../src/openbao/policy-assembly.ts", "../src/openbao/policy-wire.ts", "../src/openbao/proxmox-role.ts", "../src/openbao/proxmox-role-form.ts", "../src/openbao/proxmox-role-wire.ts", "../src/openbao/ssh-role.ts", "../src/openbao/ssh-role-form.ts", "../src/openbao/ssh-role-erase.ts"],
3
+ "sources": ["../src/openbao/approle-login.ts", "../src/openbao/bao-http.ts", "../src/openbao/bao-address.ts", "../src/openbao/bao-status.ts", "../src/openbao/mount-path.ts", "../src/openbao/approle-login-form.ts", "../src/openbao/approle-login-result.ts", "../src/openbao/auth-method.ts", "../src/ownership/adopt.ts", "../src/ownership/resume.ts", "../src/ownership/rows.ts", "../src/ownership/whole.ts", "../src/ownership/probe.ts", "../src/openbao/digest.ts", "../src/openbao/mount-form.ts", "../src/openbao/auth-method-form.ts", "../src/openbao/auth-method-reconcile.ts", "../src/openbao/auth-method-wire.ts", "../src/openbao/mount-move.ts", "../src/openbao/remount-wire.ts", "../src/openbao/auth-role.ts", "../src/openbao/auth-role-form.ts", "../src/openbao/auth-role-wire.ts", "../src/openbao/distilled.ts", "../src/openbao/rename.ts", "../src/openbao/rename-identity.ts", "../src/openbao/auth-role-identity.ts", "../src/openbao/bao-identity.ts", "../src/openbao/bao-namespace.ts", "../src/openbao/cloudflare-role.ts", "../src/openbao/cloudflare-group-scope.ts", "../src/openbao/cloudflare-permission-groups.ts", "../src/openbao/cloudflare-permission-groups-solve.ts", "../src/openbao/cloudflare-policy.ts", "../src/openbao/cloudflare-role-wire.ts", "../src/openbao/cloudflare-role-form.ts", "../src/openbao/cloudflare-roles-expand.ts", "../src/openbao/cloudflare-roles-config.ts", "../src/openbao/host-approles.ts", "../src/openbao/jwt-config.ts", "../src/openbao/jwt-config-form.ts", "../src/openbao/role-reconcile.ts", "../src/openbao/jwt-role.ts", "../src/openbao/auth-token-form.ts", "../src/openbao/jwt-role-form.ts", "../src/openbao/kubernetes-role.ts", "../src/openbao/kubernetes-role-form.ts", "../src/openbao/mfa-enforcement.ts", "../src/openbao/mfa-enforcement-form.ts", "../src/openbao/mfa-wire.ts", "../src/openbao/mfa-totp.ts", "../src/openbao/mfa-totp-form.ts", "../src/openbao/mount.ts", "../src/openbao/mount-reconcile.ts", "../src/openbao/mount-wire.ts", "../src/openbao/pki-role.ts", "../src/openbao/pki-role-canonical.ts", "../src/openbao/pki-role-form.ts", "../src/openbao/plugin.ts", "../src/openbao/plugin-form.ts", "../src/openbao/plugin-reconcile.ts", "../src/openbao/plugin-wire.ts", "../src/openbao/policy.ts", "../src/openbao/policy-assembly.ts", "../src/openbao/policy-wire.ts", "../src/openbao/policy-identity.ts", "../src/openbao/proxmox-role.ts", "../src/openbao/proxmox-role-form.ts", "../src/openbao/proxmox-role-wire.ts", "../src/openbao/ssh-role.ts", "../src/openbao/ssh-role-form.ts", "../src/openbao/ssh-role-erase.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * AppRole login and self-revoke for a plain Bun script — the one part of the openbao subpath that is\n * not a Resource.\n *\n * ★ WHY IT LIVES HERE. Wrapper scripts log in with a per-host AppRole and revoke the token on exit.\n * Each one hand-rolling a `fetch` is how two of them end up disagreeing about BAO_ADDR versus\n * BAO_AGENT_ADDR, or dropping the namespace header. This rides the transport every Bao.* family\n * already uses: bao-address.ts resolution (BAO_ADDR, BAO_AGENT_ADDR, BAO_NAMESPACE, the VAULT_*\n * twins, unix sockets), bao-http.ts's in-flight gate, timeout, transport retry and token\n * redaction on spans, and bao-status.ts's status-first classification of the answer.\n * ★ ONE IMPLEMENTATION, TWO SHAPES. `appRoleLoginEffect` and `revokeSelfEffect` are the\n * implementation; `appRoleLogin` and `revokeSelf` run them on the fetch client for a caller with\n * no Effect runtime. Both fail with BaoLoginError and nothing else.\n *\n * ⚠️ SHARING A secret_id ACROSS HOSTS THROUGH A CACHING PROXY SHARES THE TOKEN. Two hosts sending\n * the same AppRole login through a caching OpenBao Proxy get the SAME cached token back, so two\n * hosts become one identity in every audit line (recorded as a trap in the 2026-09-21 vault\n * consolidation plan; not re-measured here). Give each host its own secret_id.\n */\nimport * as Effect from 'effect/Effect';\nimport * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport type { BaoEnvironment } from './bao-address.ts';\nimport { BaoEnv, baoCall } from './bao-http.ts';\nimport type { BaoError } from './bao-status.ts';\nimport {\n BaoLoginError,\n failureOf,\n loginPath,\n mountProblem,\n redact,\n refusal,\n} from './approle-login-form.ts';\nimport { type AppRoleLogin, loginOf } from './approle-login-result.ts';\n\nexport type { BaoLoginFailure } from './approle-login-form.ts';\nexport type { AppRoleLogin } from './approle-login-result.ts';\nexport { BaoLoginError };\n\nexport interface AppRoleLoginInput {\n /** The role_id. Not a secret on its own, but half of one — it is redacted from errors too. */\n readonly roleId: string;\n /** ⛔ The secret_id. Never logged, never in an error — see `redact`. */\n readonly secretId: string;\n /** The AppRole auth mount, e.g. `approle` (the default) — no `.`/`..` segments, `?` or `#`. */\n readonly mount?: string;\n}\n\nconst LOGIN = 'OpenBao AppRole login';\nconst REVOKE = 'OpenBao revoke-self';\n\nconst failed =\n (operation: string, secrets: readonly string[]) =>\n (error: BaoError): BaoLoginError =>\n new BaoLoginError(\n failureOf(error.status),\n error.status,\n redact(error.errors, secrets),\n operation,\n );\n\n/**\n * Log in with a role_id and secret_id, under BaoEnv (process.env unless a caller provides one).\n *\n * ⛔ THE LOGIN SENDS NO TOKEN, WHATEVER THE ENVIRONMENT HOLDS. BAO_TOKEN is overridden with a\n * PRESENT-BUT-EMPTY value for this one call, which bao-address.ts readBaoVariable treats as\n * winning over VAULT_TOKEN, so headersFor omits X-Vault-Token entirely. A script that already\n * had an operator token exported must not send it along with a machine login.\n * ⚠️ A DROPPED TRANSPORT IS RETRIED TWICE (bao-http.ts retryTransport, status 0 only). If the first\n * request reached OpenBao and only the answer was lost, the retry is a second login: one extra\n * token that lives until its TTL, and — for a secret_id with `secret_id_num_uses` — one extra use.\n * A single-use secret_id can therefore come back \"invalid\" on a flaky path.\n * ★ `PUT`, THE METHOD api/logical.go:325 WriteWithContext SENDS, which is what the official Go helper\n * calls (api/auth/approle/approle.go:146). The docs show POST; both are the update operation.\n */\nexport const appRoleLoginEffect = (\n input: AppRoleLoginInput,\n): Effect.Effect<AppRoleLogin, BaoLoginError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const problems = [\n refusal('roleId', input.roleId),\n refusal('secretId', input.secretId),\n mountProblem(input.mount),\n ].filter((problem): problem is string => problem !== undefined);\n if (problems.length > 0)\n return yield* Effect.fail(new BaoLoginError('input', 0, problems, LOGIN));\n const env = yield* BaoEnv;\n const body = yield* baoCall('write', 'PUT', loginPath(input.mount), {\n role_id: input.roleId,\n secret_id: input.secretId,\n }).pipe(\n Effect.provideService(BaoEnv, { ...env, BAO_TOKEN: '' }),\n Effect.mapError(failed(LOGIN, [input.roleId, input.secretId])),\n );\n const read = loginOf(body);\n if ('problem' in read) {\n return yield* Effect.fail(new BaoLoginError('response', 0, [read.problem], LOGIN));\n }\n return read.login;\n });\n\n/**\n * Revoke `token` itself — what a wrapper runs on exit, so a login does not outlive its job.\n *\n * ★ `PUT auth/token/revoke-self`, READ FROM openbao v2.6.2 api/auth_token.go:318-330: the token\n * revoked is the one in X-Vault-Token, and the body is empty. `token` rides in that header for\n * this call only (BAO_TOKEN is overridden), whatever the environment holds.\n * ⚠️ AN ALREADY-REVOKED OR EXPIRED TOKEN IS A FAILURE, NOT A NO-OP. OpenBao refuses a token it no\n * longer knows (permission denied — not measured here), and a refusal from the wrong server looks\n * the same; \"I could not tell\" stays an error. A wrapper that only wants best-effort cleanup on\n * exit can catch BaoLoginError with reason `refused`.\n * ⚠️ NEVER THROUGH AN AGENT OR PROXY IN `use_auto_auth_token = \"force\"` MODE. Force overwrites the\n * request's token with the agent's own (bao-address.ts headersFor cites apiproxy.mdx), so this\n * would revoke the AGENT's token. The estate's LAN proxy runs with no auto-auth at all.\n */\nexport const revokeSelfEffect = (\n token: string,\n): Effect.Effect<void, BaoLoginError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const problem = refusal('token', token);\n if (problem !== undefined) {\n return yield* Effect.fail(new BaoLoginError('input', 0, [problem], REVOKE));\n }\n const env = yield* BaoEnv;\n yield* baoCall('write', 'PUT', 'auth/token/revoke-self').pipe(\n Effect.provideService(BaoEnv, { ...env, BAO_TOKEN: token }),\n Effect.mapError(failed(REVOKE, [token])),\n );\n });\n\n/**\n * ★ `Effect.runPromise` REJECTS WITH THE FAILURE ITSELF on this Effect line (measured on\n * effect 4.0.0-rc.115: the rejection is `instanceof` the failed class), so a script catches\n * BaoLoginError directly.\n */\nconst runWith = <A>(\n env: BaoEnvironment | undefined,\n effect: Effect.Effect<A, BaoLoginError, HttpClient.HttpClient>,\n): Promise<A> => {\n const scoped = env === undefined ? effect : Effect.provideService(effect, BaoEnv, env);\n return Effect.runPromise(scoped.pipe(Effect.provide(FetchHttpClient.layer)));\n};\n\n/**\n * `appRoleLoginEffect` for a plain script. `env` defaults to `process.env`, read at call time.\n *\n * const login = await appRoleLogin({ roleId, secretId });\n * try { … login.clientToken … } finally { await revokeSelf(login.clientToken); }\n */\nexport const appRoleLogin = (\n input: AppRoleLoginInput & { readonly env?: BaoEnvironment },\n): Promise<AppRoleLogin> => runWith(input.env, appRoleLoginEffect(input));\n\n/** `revokeSelfEffect` for a plain script. `env` defaults to `process.env`, read at call time. */\nexport const revokeSelf = (token: string, env?: BaoEnvironment): Promise<void> =>\n runWith(env, revokeSelfEffect(token));\n",
6
- "/**\n * One call to OpenBao's HTTP API through Effect's `HttpClient` — the transport every Bao.* family\n * uses since it stopped shelling out to `bao`.\n *\n * ★ `HttpClient`, THE SAME PATTERN <estate>/proxmox and <estate>/forgejo USE AGAINST THEIR APIs, decided\n * 2026-09-14. It buys a typed error channel, interruption when a plan is cancelled, the runtime's\n * tracing, and a client a test can point at a fake server — and it needs no Alchemy session, so\n * every call here works from all four operations. (`CommandExecutor.run` was tried on Bao.Policy\n * first and blocked read/diff: Alchemy passes a session to reconcile/delete but NOT to read/diff,\n * Provider.ts:258-289. The ChildProcessSpawner that fixed that is gone with the CLI.)\n * ⚠️ THE STACK MUST PROVIDE `FetchHttpClient.layer`. alchemy.run.ts does, the way\n * <estate>/proxmox/alchemy.run.ts does.\n */\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport * as Schedule from 'effect/Schedule';\nimport * as Semaphore from 'effect/Semaphore';\nimport * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';\nimport * as Headers from 'effect/unstable/http/Headers';\nimport * as HttpClient from 'effect/unstable/http/HttpClient';\nimport * as HttpClientRequest from 'effect/unstable/http/HttpClientRequest';\nimport { type BaoEnvironment, headersFor, resolveAddress } from './bao-address.ts';\nimport { BaoError, type BaoIntent, settle } from './bao-status.ts';\n\n/**\n * The environment a call resolves BAO_ADDR, BAO_NAMESPACE and BAO_TOKEN from — `process.env`,\n * read at call time, unless a test provides another.\n */\nexport const BaoEnv = Context.Reference<BaoEnvironment>('homeflare/openbao/BaoEnv', {\n defaultValue: () => process.env,\n});\n\n/**\n * ⛔ AT MOST EIGHT EXCHANGES WITH OPENBAO AT ONCE — ACROSS EVERY Bao.* FAMILY, IN ONE PROCESS.\n *\n * 🔴 MEASURED 2026-09-14 10:41: A DEPLOY OF THIS STACK TOOK OPENBAO's API OFF ITS HOST. Alchemy fans\n * resources out with a hard-coded `concurrency: \"unbounded\"` (alchemy Plan.ts:476, Apply.ts:259,\n * :263, :303 — no option reaches it), and 555 Bao.CloudflareRole resources each read, diff,\n * reconcile and read back: well over a thousand requests at one loopback listener within seconds.\n * OpenBao logged\n * HTTP server (listening on 127.0.0.1:8200) exited with error: set tcp\n * 127.0.0.1:8200->127.0.0.1:57974: setsockopt: invalid argument\n * and KEPT RUNNING with 8200 closed. launchd saw a live process and restarted nothing. Everything\n * on the vault host that talks to 127.0.0.1:8200 was cut off, starting with the agent's templates, until\n * a manual restart.\n * ★ THE LISTENER DYING IS A GO-ON-DARWIN FAILURE, NOT OURS TO FIX. Traefik lost its entrypoints the\n * same way on darwin/arm64 (traefik issue 8841). The BURST is ours. The adoption deploy an hour\n * earlier made the same calls and survived, so a cap narrows a race; it does not prove it closed.\n * ★ A SEMAPHORE, NOT `HttpClient.withRateLimiter`. That limits requests per window and needs a\n * RateLimiter service. The failure is simultaneous connections, and only a cap on in-flight\n * exchanges bounds those whatever each one's latency.\n * ⚠️ A Context.Reference SO A TEST CAN PROVIDE ITS OWN GATE. The default is built ONCE and cached on\n * the reference (effect Context.ts:1582-1588), so every call in the process shares one gate.\n * ⚠️ EIGHT IS A CHOICE, NOT A MEASUREMENT OF WHAT THE LISTENER TOLERATES. Nothing here can find that\n * number without re-running the failure against production.\n */\nexport const MAX_IN_FLIGHT = 8;\n\nexport const BaoGate = Context.Reference<Semaphore.Semaphore>('homeflare/openbao/BaoGate', {\n defaultValue: () => Semaphore.makeUnsafe(MAX_IN_FLIGHT),\n});\n\n/**\n * ⚠️ THE CLI's DEFAULT CLIENT TIMEOUT (openbao v2.6.2 api/client.go:324). A hung agent or a server\n * that accepts and never answers would otherwise hang the plan with no line saying why.\n */\nconst TIMEOUT = '60 seconds';\n\n/**\n * Mesh in front of a remote OpenBao drops connections under Alchemy's unbounded\n * fan-out. Status 0 is transport, not an OpenBao 4xx — retry twice. Measured\n * 2026-09-16 against bao.example.internal: a 585-role plan died mid-diff with\n * `no response: (no errors given)` while the vault stayed unsealed.\n */\nconst retryTransport = <A, R>(effect: Effect.Effect<A, BaoError, R>) =>\n Effect.retry(effect, {\n schedule: Schedule.spaced('750 millis'),\n times: 2,\n while: (error: BaoError) => error.status === 0,\n });\n\n/**\n * ⛔ EFFECT RECORDS EVERY REQUEST HEADER ON THE CLIENT SPAN and redacts only the names in\n * `Headers.CurrentRedactedNames` — by default authorization, cookie, set-cookie and x-api-key\n * (effect Headers.ts:753-762; HttpClient.ts:842-849, with `TracerHeaderFilter` defaulting to\n * true). `X-Vault-Token` is not on that list, so under any tracer the token would be exported as\n * a span attribute. It is added for every call made here.\n */\nconst redactingToken = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.gen(function* () {\n const names = yield* Headers.CurrentRedactedNames;\n return yield* Effect.provideService(effect, Headers.CurrentRedactedNames, [\n ...names,\n 'x-vault-token',\n ]);\n });\n\n/**\n * Route the exchange over a unix socket when the address is one.\n *\n * ★ BUN's `fetch` TAKES A `unix` OPTION (bun-types globals.d.ts BunFetchRequestInit.unix), AND\n * `FetchHttpClient.RequestInit` IS EFFECT'S DOCUMENTED WAY TO PASS FETCH OPTIONS. The fetch client\n * spreads that service into every call (effect FetchHttpClient.ts:59-72), reading it from the\n * CALLING fiber's context — and `layerMergedContext` merges the caller's context over the layer's\n * (HttpClient.ts:2065-2076), so providing it around one call routes that call alone. Any defaults\n * already provided are kept.\n * ⛔ IT ONLY WORKS ON BUN, SO ANYWHERE ELSE IT REFUSES. Node's fetch ignores `unix` and would send\n * the request to http://localhost:80 — a silent wrong server, which is the one outcome this\n * package exists to prevent. It also assumes the provided `HttpClient` is the fetch one.\n */\nconst overSocket =\n (socket: string | undefined, method: string, path: string) =>\n <A, R>(effect: Effect.Effect<A, BaoError, R>): Effect.Effect<A, BaoError, R> => {\n if (socket === undefined) return effect;\n if (typeof Bun === 'undefined') {\n return Effect.fail(\n new BaoError(0, method, path, ['a unix:// address needs Bun fetch; this is not Bun']),\n );\n }\n return Effect.flatMap(Effect.serviceOption(FetchHttpClient.RequestInit), (defaults) => {\n const init: BunFetchRequestInit = { ...Option.getOrElse(defaults, () => ({})), unix: socket };\n return Effect.provideService(effect, FetchHttpClient.RequestInit, init);\n });\n };\n\n/** One exchange, classified. The body is the parsed JSON object, or undefined for absent / 204. */\nexport const baoCall = (\n intent: BaoIntent,\n method: 'DELETE' | 'GET' | 'POST' | 'PUT',\n path: string,\n body?: Readonly<Record<string, unknown>>,\n) =>\n Effect.gen(function* () {\n const env = yield* BaoEnv;\n const address = resolveAddress(env);\n const client = yield* HttpClient.HttpClient;\n // ⚠️ The content type goes on `bodyText`, never in the header map: `bodyText` overwrites it.\n // <estate>/proxmox/src/client.ts has the scar.\n const request = HttpClientRequest.make(method)(`${address.base}/v1/${path}`).pipe(\n HttpClientRequest.setHeaders(headersFor(address, env)),\n body === undefined\n ? (self) => self\n : HttpClientRequest.bodyText(JSON.stringify(body), 'application/json'),\n );\n // ★ Status first, body read exactly once, as text — an error body is not reliably JSON.\n const exchange = client.execute(request).pipe(\n Effect.flatMap((response) =>\n Effect.map(response.text, (text) => ({ status: response.status, text })),\n ),\n Effect.timeout(TIMEOUT),\n // ⛔ `.message` ONLY: the HttpClientError message is the reason, method and URL. The error\n // object itself holds the request, whose headers hold the token.\n Effect.mapError((cause) => new BaoError(0, method, path, [cause.message])),\n );\n // ★ THE PERMIT WRAPS THE TIMEOUT, NOT THE REVERSE: a call queued behind the gate is not yet\n // talking to OpenBao, so its wait must not count against the 60 seconds.\n const gate = yield* BaoGate;\n const { status, text } = yield* retryTransport(\n exchange.pipe(\n overSocket(address.socket, method, path),\n redactingToken,\n Semaphore.withPermits(gate, 1),\n ),\n );\n const outcome = settle(intent, method, path, status, text);\n return 'error' in outcome ? yield* Effect.fail(outcome.error) : outcome.body;\n });\n\n/**\n * The `data` of a read, or undefined when OpenBao says the object is ABSENT (404).\n *\n * ★ `bao read -format=json` printed this same response body; the old helper took `data` when it was\n * an object and the whole body otherwise, and so does this.\n */\nexport const baoRead = (path: string) =>\n Effect.map(baoCall('read', 'GET', path), (body) => {\n if (body === undefined) return undefined;\n const data = body['data'];\n return typeof data === 'object' && data !== null\n ? (data as Record<string, unknown>)\n : (body as Record<string, unknown>);\n });\n\n/**\n * A write whose SUCCESS MATTERS. Any non-2xx fails, 404 included.\n *\n * ★ `PUT` IS WHAT `bao write` SENT (openbao v2.6.2 api/logical.go Write); `sys/mounts` enable and\n * tune are `POST` in the same client (api/sys_mounts.go:57, :201).\n * ⚠️ ROLE BODIES STAY ALL-STRING ON PURPOSE. `bao write k=v` put every value in the JSON body as a\n * string — MEASURED with `-output-curl-string`, see ssh-role-form.ts — and the form files still\n * build exactly that body, so the server parses the same request it was always sent.\n * ⛔ EXCEPT A MAP FIELD: sdk v2.6.2 refuses a string for a TypeMap with a 400, so Bao.SshRole\n * sends its two maps as objects (the ⛔ on mapValue in ssh-role-form.ts, measured 2026-09-21).\n */\nexport const baoWrite = (\n method: 'POST' | 'PUT',\n path: string,\n body: Readonly<Record<string, unknown>>,\n) => Effect.asVoid(baoCall('write', method, path, body));\n\n/** A delete: idempotent — already gone (404) is success — and refused (403, 5xx) is a failure. */\nexport const baoDelete = (path: string) => Effect.asVoid(baoCall('delete', 'DELETE', path));\n",
6
+ "/**\n * One call to OpenBao's HTTP API through Effect's `HttpClient` — the transport every Bao.* family\n * uses since it stopped shelling out to `bao`.\n *\n * ★ `HttpClient`, THE SAME PATTERN <estate>/proxmox and <estate>/forgejo USE AGAINST THEIR APIs, decided\n * 2026-09-14. It buys a typed error channel, interruption when a plan is cancelled, the runtime's\n * tracing, and a client a test can point at a fake server — and it needs no Alchemy session, so\n * every call here works from all four operations. (`CommandExecutor.run` was tried on Bao.Policy\n * first and blocked read/diff: Alchemy passes a session to reconcile/delete but NOT to read/diff,\n * Provider.ts:258-289. The ChildProcessSpawner that fixed that is gone with the CLI.)\n * ⚠️ THE STACK MUST PROVIDE `FetchHttpClient.layer`. alchemy.run.ts does, the way\n * <estate>/proxmox/alchemy.run.ts does.\n */\nimport * as Cause from 'effect/Cause';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport * as Schedule from 'effect/Schedule';\nimport * as Semaphore from 'effect/Semaphore';\nimport * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';\nimport * as Headers from 'effect/unstable/http/Headers';\nimport * as HttpClient from 'effect/unstable/http/HttpClient';\nimport * as HttpClientRequest from 'effect/unstable/http/HttpClientRequest';\nimport { type BaoEnvironment, headersFor, resolveAddress } from './bao-address.ts';\nimport { BaoError, type BaoIntent, settle } from './bao-status.ts';\n\n/**\n * The environment a call resolves BAO_ADDR, BAO_NAMESPACE and BAO_TOKEN from — `process.env`,\n * read at call time, unless a test provides another.\n */\nexport const BaoEnv = Context.Reference<BaoEnvironment>('homeflare/openbao/BaoEnv', {\n defaultValue: () => process.env,\n});\n\n/**\n * ⛔ AT MOST EIGHT EXCHANGES WITH OPENBAO AT ONCE — ACROSS EVERY Bao.* FAMILY, IN ONE PROCESS.\n *\n * 🔴 MEASURED 2026-09-14 10:41: A DEPLOY OF THIS STACK TOOK OPENBAO's API OFF ITS HOST. Alchemy fans\n * resources out with a hard-coded `concurrency: \"unbounded\"` (alchemy Plan.ts:476, Apply.ts:259,\n * :263, :303 — no option reaches it), and 555 Bao.CloudflareRole resources each read, diff,\n * reconcile and read back: well over a thousand requests at one loopback listener within seconds.\n * OpenBao logged\n * HTTP server (listening on 127.0.0.1:8200) exited with error: set tcp\n * 127.0.0.1:8200->127.0.0.1:57974: setsockopt: invalid argument\n * and KEPT RUNNING with 8200 closed. launchd saw a live process and restarted nothing. Everything\n * on the vault host that talks to 127.0.0.1:8200 was cut off, starting with the agent's templates, until\n * a manual restart.\n * ★ THE LISTENER DYING IS A GO-ON-DARWIN FAILURE, NOT OURS TO FIX. Traefik lost its entrypoints the\n * same way on darwin/arm64 (traefik issue 8841). The BURST is ours. The adoption deploy an hour\n * earlier made the same calls and survived, so a cap narrows a race; it does not prove it closed.\n * ★ A SEMAPHORE, NOT `HttpClient.withRateLimiter`. That limits requests per window and needs a\n * RateLimiter service. The failure is simultaneous connections, and only a cap on in-flight\n * exchanges bounds those whatever each one's latency.\n * ⚠️ A Context.Reference SO A TEST CAN PROVIDE ITS OWN GATE. The default is built ONCE and cached on\n * the reference (effect Context.ts:1582-1588), so every call in the process shares one gate.\n * ⚠️ EIGHT IS A CHOICE, NOT A MEASUREMENT OF WHAT THE LISTENER TOLERATES. Nothing here can find that\n * number without re-running the failure against production.\n */\nexport const MAX_IN_FLIGHT = 8;\n\nexport const BaoGate = Context.Reference<Semaphore.Semaphore>('homeflare/openbao/BaoGate', {\n defaultValue: () => Semaphore.makeUnsafe(MAX_IN_FLIGHT),\n});\n\n/**\n * ⚠️ THE CLI's DEFAULT CLIENT TIMEOUT (openbao v2.6.2 api/client.go:324). A hung agent or a server\n * that accepts and never answers would otherwise hang the plan with no line saying why.\n */\nexport const BAO_TIMEOUT = '60 seconds';\n\n/**\n * Mesh in front of a remote OpenBao drops connections under Alchemy's unbounded\n * fan-out. Status 0 is transport, not an OpenBao 4xx — retry twice. Measured\n * 2026-09-16 against bao.example.internal: a 585-role plan died mid-diff with\n * `no response: (no errors given)` while the vault stayed unsealed.\n */\nexport const retryTransport = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.retry(effect, {\n schedule: Schedule.spaced('750 millis'),\n times: 2,\n while: (error) =>\n (error instanceof BaoError && error.status === 0) || Cause.isTimeoutError(error),\n });\n\n/**\n * ⛔ EFFECT RECORDS EVERY REQUEST HEADER ON THE CLIENT SPAN and redacts only the names in\n * `Headers.CurrentRedactedNames` — by default authorization, cookie, set-cookie and x-api-key\n * (effect Headers.ts:753-762; HttpClient.ts:842-849, with `TracerHeaderFilter` defaulting to\n * true). `X-Vault-Token` is not on that list, so under any tracer the token would be exported as\n * a span attribute. It is added for every call made here.\n */\nexport const redactingToken = <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.gen(function* () {\n const names = yield* Headers.CurrentRedactedNames;\n return yield* Effect.provideService(effect, Headers.CurrentRedactedNames, [\n ...names,\n 'x-vault-token',\n ]);\n });\n\n/**\n * Route the exchange over a unix socket when the address is one.\n *\n * ★ BUN's `fetch` TAKES A `unix` OPTION (bun-types globals.d.ts BunFetchRequestInit.unix), AND\n * `FetchHttpClient.RequestInit` IS EFFECT'S DOCUMENTED WAY TO PASS FETCH OPTIONS. The fetch client\n * spreads that service into every call (effect FetchHttpClient.ts:59-72), reading it from the\n * CALLING fiber's context — and `layerMergedContext` merges the caller's context over the layer's\n * (HttpClient.ts:2065-2076), so providing it around one call routes that call alone. Any defaults\n * already provided are kept.\n * ⛔ IT ONLY WORKS ON BUN, SO ANYWHERE ELSE IT REFUSES. Node's fetch ignores `unix` and would send\n * the request to http://localhost:80 — a silent wrong server, which is the one outcome this\n * package exists to prevent. It also assumes the provided `HttpClient` is the fetch one.\n */\nexport const overSocket =\n (socket: string | undefined, method: string, path: string) =>\n <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | BaoError, R> => {\n if (socket === undefined) return effect;\n if (typeof Bun === 'undefined') {\n return Effect.fail(\n new BaoError(0, method, path, ['a unix:// address needs Bun fetch; this is not Bun']),\n );\n }\n return Effect.flatMap(Effect.serviceOption(FetchHttpClient.RequestInit), (defaults) => {\n const init: BunFetchRequestInit = { ...Option.getOrElse(defaults, () => ({})), unix: socket };\n return Effect.provideService(effect, FetchHttpClient.RequestInit, init);\n });\n };\n\n/** One exchange, classified. The body is the parsed JSON object, or undefined for absent / 204. */\nexport const baoCall = (\n intent: BaoIntent,\n method: 'DELETE' | 'GET' | 'POST' | 'PUT',\n path: string,\n body?: Readonly<Record<string, unknown>>,\n) =>\n Effect.gen(function* () {\n const env = yield* BaoEnv;\n const address = resolveAddress(env);\n const client = yield* HttpClient.HttpClient;\n // ⚠️ The content type goes on `bodyText`, never in the header map: `bodyText` overwrites it.\n // <estate>/proxmox/src/client.ts has the scar.\n const request = HttpClientRequest.make(method)(`${address.base}/v1/${path}`).pipe(\n HttpClientRequest.setHeaders(headersFor(address, env)),\n body === undefined\n ? (self) => self\n : HttpClientRequest.bodyText(JSON.stringify(body), 'application/json'),\n );\n // ★ Status first, body read exactly once, as text — an error body is not reliably JSON.\n const exchange = client.execute(request).pipe(\n Effect.flatMap((response) =>\n Effect.map(response.text, (text) => ({ status: response.status, text })),\n ),\n Effect.timeout(BAO_TIMEOUT),\n // ⛔ `.message` ONLY: the HttpClientError message is the reason, method and URL. The error\n // object itself holds the request, whose headers hold the token.\n Effect.mapError((cause) => new BaoError(0, method, path, [cause.message])),\n );\n // ★ THE PERMIT WRAPS THE TIMEOUT, NOT THE REVERSE: a call queued behind the gate is not yet\n // talking to OpenBao, so its wait must not count against the 60 seconds.\n const gate = yield* BaoGate;\n const { status, text } = yield* retryTransport(\n exchange.pipe(\n overSocket(address.socket, method, path),\n redactingToken,\n Semaphore.withPermits(gate, 1),\n ),\n );\n const outcome = settle(intent, method, path, status, text);\n return 'error' in outcome ? yield* Effect.fail(outcome.error) : outcome.body;\n });\n\n/**\n * The `data` of a read, or undefined when OpenBao says the object is ABSENT (404).\n *\n * ★ `bao read -format=json` printed this same response body; the old helper took `data` when it was\n * an object and the whole body otherwise, and so does this.\n */\nexport const baoRead = (path: string) =>\n Effect.map(baoCall('read', 'GET', path), (body) => {\n if (body === undefined) return undefined;\n const data = body['data'];\n return typeof data === 'object' && data !== null\n ? (data as Record<string, unknown>)\n : (body as Record<string, unknown>);\n });\n\n/**\n * A write whose SUCCESS MATTERS. Any non-2xx fails, 404 included.\n *\n * ★ `PUT` IS WHAT `bao write` SENT (openbao v2.6.2 api/logical.go Write); `sys/mounts` enable and\n * tune are `POST` in the same client (api/sys_mounts.go:57, :201).\n * ⚠️ ROLE BODIES STAY ALL-STRING ON PURPOSE. `bao write k=v` put every value in the JSON body as a\n * string — MEASURED with `-output-curl-string`, see ssh-role-form.ts — and the form files still\n * build exactly that body, so the server parses the same request it was always sent.\n * ⛔ EXCEPT A MAP FIELD: sdk v2.6.2 refuses a string for a TypeMap with a 400, so Bao.SshRole\n * sends its two maps as objects (the ⛔ on mapValue in ssh-role-form.ts, measured 2026-09-21).\n */\nexport const baoWrite = (\n method: 'POST' | 'PUT',\n path: string,\n body: Readonly<Record<string, unknown>>,\n) => Effect.asVoid(baoCall('write', method, path, body));\n\n/** A delete: idempotent — already gone (404) is success — and refused (403, 5xx) is a failure. */\nexport const baoDelete = (path: string) => Effect.asVoid(baoCall('delete', 'DELETE', path));\n",
7
7
  "/**\n * Where an OpenBao call goes and which headers it carries — resolved from the environment the way\n * the `bao` CLI resolves it, so the provider and `bao kv get` can never disagree about which server\n * or namespace this machine is talking to.\n *\n * ★ READ FROM openbao v2.6.2, NOT RECALLED:\n * · api/client.go:34-66 — BAO_ADDR, BAO_AGENT_ADDR, BAO_NAMESPACE, BAO_TOKEN, and the header\n * names `X-Vault-Namespace` and `X-Vault-Token`.\n * · api/client.go:370 — the default address, `https://127.0.0.1:8200`.\n * · api/client.go:503-507, 617-618, 761-762 — BAO_AGENT_ADDR, when set, WINS over BAO_ADDR.\n * · api/env.go:22-34 — every BAO_* falls back to its VAULT_* twin, but a BAO_* that is present\n * and EMPTY still wins over the VAULT_* one.\n * · api/client.go:776-785 — the token and namespace are applied only when non-empty, and every\n * request carries `X-Vault-Request: true`.\n * · api/client.go:1349-1354 — the request path is joined onto the address's own path.\n *\n * ⛔ WHAT THE CLI DOES AND THIS DELIBERATELY DOES NOT: with BAO_TOKEN unset, `bao` falls back to its\n * token helper (a token file in $HOME). This never reads that file. No BAO_TOKEN means AGENT\n * MODE — see `headersFor`.\n * ⚠️ NOT CARRIED OVER: BAO_CACERT / BAO_SKIP_VERIFY / client certificates, SRV lookup, and the CLI's\n * retries on 5xx. An https address needs a certificate the runtime already trusts; a TLS failure\n * fails the call loudly rather than being skipped.\n */\n\nexport type BaoEnvironment = Readonly<Record<string, string | undefined>>;\n\nexport type BaoAddress = {\n /** Scheme, host and any path prefix, no trailing slash. `http://localhost` for a socket. */\n readonly base: string;\n /** The socket path when the address is `unix:///path`, otherwise undefined. */\n readonly socket: string | undefined;\n /** The namespace to send, when there is one. */\n readonly namespace: string | undefined;\n};\n\nexport const DEFAULT_ADDRESS = 'https://127.0.0.1:8200';\n\nconst UNIX = 'unix://';\n\n/** api/env.go ReadBaoVariable: present (even empty) BAO_* wins, else the VAULT_* twin. */\nexport const readBaoVariable = (env: BaoEnvironment, name: `BAO_${string}`): string =>\n env[name] ?? env[`VAULT_${name.slice('BAO_'.length)}`] ?? '';\n\n/**\n * The address and namespace for this environment. Carries no token, so it is safe to log.\n *\n * ★ UNIX SOCKETS, BECAUSE AN AGENT LISTENER CAN BE ONE. OpenBao Agent's `listener \"unix\"` serves\n * the same API on a socket (website/content/docs/agent-and-proxy/agent/index.mdx:382-384), and the\n * agent advertises such a listener as `unix://<path>` (command/agent.go:565-566). The CLI handles\n * that address by dialling the socket and speaking plain HTTP to host `localhost`\n * (api/client.go:654-667); `base` and `socket` are exactly those two halves.\n */\nexport const resolveAddress = (env: BaoEnvironment): BaoAddress => {\n const agent = readBaoVariable(env, 'BAO_AGENT_ADDR');\n const direct = readBaoVariable(env, 'BAO_ADDR');\n const raw = agent !== '' ? agent : direct !== '' ? direct : DEFAULT_ADDRESS;\n const namespace = readBaoVariable(env, 'BAO_NAMESPACE');\n const socket = raw.startsWith(UNIX) ? raw.slice(UNIX.length) : undefined;\n return {\n base: socket === undefined ? raw.replace(/\\/+$/, '') : 'http://localhost',\n namespace: namespace === '' ? undefined : namespace,\n socket,\n };\n};\n\n/**\n * The headers one call sends.\n *\n * ★ AGENT MODE IS \"NO TOKEN HEADER AT ALL\", AND THAT IS THE AGENT'S OWN CONTRACT. Read in openbao\n * v2.6.2 command/agentproxyshared/cache/handler.go:29-38: the proxy handler takes the request's\n * `X-Vault-Token`, and only when it is EMPTY and an auto-auth sink exists does it substitute the\n * agent's own token. command/agent.go:517-541 creates that sink exactly when\n * `api_proxy { use_auto_auth_token = true }` is set; command/agent/config/config.go:288-292 and\n * 635-637 map the older `cache { use_auto_auth_token }` onto the same setting; and\n * command/proxy.go:495-518 wires OpenBao Proxy identically. The docs say the same in words\n * (website/content/docs/agent-and-proxy/agent/apiproxy.mdx:57-62): a request without a token is\n * forwarded with the auto-auth token, a request that bears one keeps its own, and `\"force\"`\n * overwrites it.\n * ⛔ SO AN EMPTY `X-Vault-Token: ` WOULD BE WRONG IN BOTH DIRECTIONS: harmless to the agent,\n * which reads empty as absent, but an explicit unauthenticated request to a server. The header\n * is omitted, never blanked.\n * ★ THE NAMESPACE RIDES THROUGH THE AGENT UNTOUCHED. The proxy clones its client and replaces that\n * client's headers with the incoming request's (cache/api_proxy.go:50-54 and :78), so the\n * `X-Vault-Namespace` sent here is the one OpenBao sees.\n * ⚠️ `X-Vault-Request: true` IS NOT DECORATION. An agent listener with `require_request_header`\n * refuses any request without it (command/agent.go:544-548); the CLI always sends it.\n *\n * ⛔ THE RETURN VALUE HOLDS THE TOKEN. Hand it to the request and nowhere else: never to an error,\n * a log line, an attribute, or a span — bao-http.ts adds the header to the redacted names.\n */\nexport const headersFor = (address: BaoAddress, env: BaoEnvironment): Record<string, string> => {\n const headers: Record<string, string> = { 'X-Vault-Request': 'true' };\n if (address.namespace !== undefined) headers['X-Vault-Namespace'] = address.namespace;\n const token = readBaoVariable(env, 'BAO_TOKEN');\n if (token !== '') headers['X-Vault-Token'] = token;\n return headers;\n};\n",
8
8
  "/**\n * How a finished OpenBao HTTP exchange reads: a body, a genuinely absent object, or an error.\n *\n * ★ STATUS CODES, NEVER WORDS. The `bao` CLI this replaced reported every outcome as stderr text,\n * and deciding by that text broke twice: every failure once read as absent (a bad token planned 33\n * updates), and then `bao policy read` turned out to say \"absent\" in different words from\n * `bao read`, so a new policy could not be created (b3c18a33e). The API itself answers 404 for\n * absent, 403 for denied and 503 for sealed — openbao v2.6.2 sdk/logical/response_util.go:\n * RespondErrorCommon (a read that finds nothing is 404; ErrPermissionDenied is 403) and\n * AdjustErrorStatusCode (ErrSealed is 503).\n */\n\nexport type BaoIntent = 'read' | 'write' | 'delete';\n\n/**\n * A failed call, naming the method, the path and OpenBao's own `errors` array.\n *\n * ⛔ IT NEVER CARRIES THE TOKEN, AND IT NEVER CARRIES A RESPONSE BODY IT DID NOT PARSE. It is built\n * from the method, the API path and OpenBao's error strings only — no request, no headers, no\n * `cause` — because an Effect `HttpClientRequest` inspects its headers through a redaction list\n * that does not name `x-vault-token`. A 2xx body can hold a credential, and a foreign error page\n * can echo the request back, so a body that is not OpenBao's is described, never quoted.\n */\nexport class BaoError extends Error {\n constructor(\n readonly status: number,\n readonly method: string,\n readonly path: string,\n readonly errors: readonly string[],\n ) {\n const code = status === 0 ? 'no response' : String(status);\n super(`OpenBao ${method} /v1/${path} -> ${code}: ${errors.join('; ') || '(no errors given)'}`);\n this.name = 'BaoError';\n }\n}\n\nexport type Settled =\n | { readonly body: Record<string, unknown> | undefined }\n | { readonly error: BaoError };\n\nconst objectOf = (text: string): Record<string, unknown> | undefined => {\n try {\n const parsed: unknown = JSON.parse(text);\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n};\n\n/**\n * OpenBao's `errors` array, or undefined for a body that is not OpenBao's.\n *\n * ★ EVERY ERROR OPENBAO WRITES IS `{\"errors\": [...]}` WITH A JSON CONTENT TYPE, 404 included —\n * sdk/logical/response_util.go RespondError:180-196 — and every entry is a STRING.\n * ⛔ AN ARRAY WITH ANY NON-STRING ENTRY IS NOT OPENBAO. The first version filtered the non-strings\n * out, which turned a JSON gateway's `{\"errors\":[{\"code\":1000,\"message\":\"Not Found\"}]}` into an\n * empty OpenBao error list — and a 404 carrying it into \"absent\" on a read and \"done\" on a delete,\n * the plan-CREATE-over-something-that-exists failure arriving through a wrong BAO_ADDR. Found by\n * grok's review on 2026-09-14. An EMPTY array is still OpenBao's: a plain 404 carries exactly that.\n */\nconst errorsOf = (text: string): readonly string[] | undefined => {\n const raw = objectOf(text)?.['errors'];\n return Array.isArray(raw) && raw.every((entry) => typeof entry === 'string')\n ? (raw as string[])\n : undefined;\n};\n\n/**\n * Classify one exchange.\n *\n * ★ PURE AND EXPORTED SO THE ONE DECISION EVERY READ AND DELETE HERE RESTS ON CAN BE TESTED WITHOUT\n * A VAULT. It has been wrong in both directions already — every failure once read as absent, and\n * one command's absence wording was assumed for another's — see bao-status.test.ts.\n *\n * ⛔ 404 IS ABSENCE ONLY ON A READ, AND ONLY WHEN OPENBAO SAID IT. MEASURED 2026-09-13 with the CLI,\n * and the discriminator is real but NARROW: a genuinely absent object, read by a token that IS\n * allowed to read that path, is a 404. ⛔ AND THE SAME READ UNDER A NARROWER TOKEN IS A DENIAL:\n * under the agent lane the identical read answered `Code: 403 … permission denied`, because the\n * policy grants named paths and an unnamed one is refused rather than reported missing. So\n * \"absent\" is only knowable to a caller that could have read it — which is exactly why 403 is an\n * ERROR rather than a shrug. A resource that cannot tell absence from denial plans CREATE for\n * something that exists, which is the failure this estate has now found four separate times.\n * ⚠️ A 404 WHOSE BODY IS NOT `{\"errors\": […strings]}` IS NOT OPENBAO. A BAO_ADDR pointing at the\n * wrong server — a reverse proxy's HTML 404, a gateway's JSON one — must not read as \"nothing\".\n *\n * 🔴 THE SHELL HELPER USED TO RETURN `''` FOR EVERY NON-ZERO EXIT, AND THAT IS A LIE WITH\n * CONSEQUENCES. An expired BAO_TOKEN, a sealed server or a missing grant all came back as \"the\n * mount is not there\", so `diff` answered `update`, `reconcile` ran `secrets enable`, and the plan\n * reported a CREATE on infrastructure that exists. The failure the operator sees is about the\n * wrong thing entirely, at the worst possible moment — a sealed vault. ⚠️ SO 403, 5xx AND ANYTHING\n * ELSE THAT IS NOT 2xx FAILS. The cost is that a genuinely-absent read under a too-narrow token\n * becomes an error instead of a create, and that is the right way round: \"I could not tell\" is a\n * true statement, and \"it is not there\" was not.\n *\n * 🔴 THE DELETES ALL USED THE READ HELPER, WHICH DISCARDED THE EXIT CODE. A refused\n * `secrets disable` was reported as a successful delete: the resource left Alchemy's state while\n * the mount stayed live, so the next plan showed nothing and the object was orphaned in silence.\n * ⚠️ ABSENCE IS STILL NOT AN ERROR FOR A DELETE, because a delete must be idempotent: Alchemy\n * retries, and the second attempt legitimately finds nothing. So a delete's 404 is success and\n * its 403 is not.\n * ★ DISABLING A MOUNT THAT IS ALREADY GONE IS NOT EVEN A 404. A review on 2026-09-14 said it failed\n * with `no matching mount` and would wedge a retried delete. The server says otherwise: it answers\n * success for a missing mount so as not to reveal whether one existed — openbao v2.6.2\n * vault/logical_system.go:1211-1216 — and the CLI printed \"Disabled the secrets engine (if it\n * existed)\" (command/secrets_disable.go:87).\n */\nexport const settle = (\n intent: BaoIntent,\n method: string,\n path: string,\n status: number,\n text: string,\n): Settled => {\n const fail = (errors: readonly string[]) => ({\n error: new BaoError(status, method, path, errors),\n });\n if (status < 200 || status >= 300) {\n const errors = errorsOf(text);\n if (errors === undefined) {\n // ⛔ DESCRIBED, NEVER QUOTED. A proxy or gateway error page can echo the request back, headers\n // and all, so quoting it could carry X-Vault-Token into an error that Alchemy logs (grok,\n // 2026-09-14). mint in <estate>/proxmox/src/credentials.ts already did it this way.\n return fail([`not an OpenBao error body (${String(text.length)} bytes)`]);\n }\n if (status === 404 && intent !== 'write') return { body: undefined };\n return fail(errors);\n }\n // ★ A write or delete answering 204 has nothing to say. A READ with no body has told us nothing,\n // and OpenBao never does that — a read that finds nothing is a 404 (RespondErrorCommon).\n if (text.trim() === '') {\n return intent === 'read' ? fail(['a successful read with an empty body']) : { body: undefined };\n }\n const body = objectOf(text);\n return body === undefined ? fail(['a success body that is not a JSON object']) : { body };\n};\n",
9
9
  "/**\n * Trimming runs of one character from caller-supplied paths and names.\n *\n * ★ LOOPS, NOT `/^\\/+|\\/+$/g`, `/\\/+$/` OR `/^-+|-+$/g`. A trailing `x+$` backtracks polynomially\n * on a long run of `x` followed by anything else (CodeQL js/polynomial-redos), and mount paths,\n * namespaces and slugs are caller input. Every loop here is linear in the input length.\n */\n\n/** `text` without a trailing run of `char` (one UTF-16 unit). */\nexport const trimTrailing = (text: string, char: string): string => {\n let end = text.length;\n while (end > 0 && text[end - 1] === char) end -= 1;\n return text.slice(0, end);\n};\n\n/** `text` without a leading or trailing run of `char` (one UTF-16 unit). */\nexport const trimRuns = (text: string, char: string): string => {\n let start = 0;\n while (start < text.length && text[start] === char) start += 1;\n return trimTrailing(text.slice(start), char);\n};\n\n/** `text` without trailing `/`. */\nexport const trimTrailingSlashes = (text: string): string => trimTrailing(text, '/');\n\n/** `text` without leading or trailing `/`. */\nexport const trimSlashes = (text: string): string => trimRuns(text, '/');\n\n/** SSH mount path without a trailing slash; `ssh` when the caller did not say. */\nexport const sshMountOf = (mount: string | undefined): string =>\n trimTrailingSlashes(mount ?? 'ssh');\n",
@@ -22,10 +22,13 @@
22
22
  "/**\n * The OpenBao calls Bao.AuthMethod makes — read one method, enable, tune, disable.\n *\n * ★ ENDPOINTS, READ FROM openbao v2.6.2 api/sys_auth.go — the client configure-engines\n * used via curl:\n * read GET sys/auth/<path>\n * enable POST sys/auth/<path> — `bao auth enable`\n * tune POST sys/auth/<path>/tune — `bao auth tune`\n * disable DELETE sys/auth/<path> — `bao auth disable`\n * table GET sys/auth\n */\nimport * as Effect from 'effect/Effect';\nimport {\n type BaoAuthMethodProps,\n authPath,\n enableBody,\n readPath,\n tuneBody,\n tunePath,\n} from './auth-method-form.ts';\nimport { baoDelete, baoRead, baoWrite } from './bao-http.ts';\nimport { BaoError } from './bao-status.ts';\n\n/**\n * Confirm a method is absent from the auth table, or give back the error that asked.\n *\n * ⛔ A MISSING AUTH METHOD IS NOT A 404, IT IS A 400 — THE SAME TRAP AS SECRETS MOUNTS\n * (mount-wire.ts). `handleReadAuth` answers an empty path with a bare error; the CLI\n * therefore failed and never reached `auth enable`. REASONED FROM THE MOUNT ANALOG\n * AND PINNED AGAINST A FAKE — a live missing-method read was not measured.\n * ★ SO A 400 IS SETTLED BY GET sys/auth. Only a 200 table WITHOUT the `${path}/` key\n * is absence. A listed method, a refused listing, or a 404 listing leaves the 400.\n */\nconst absentFromTable = (path: string, asked: BaoError) =>\n baoRead('sys/auth').pipe(\n Effect.mapError(\n (listing) =>\n new BaoError(asked.status, asked.method, asked.path, [\n ...asked.errors,\n `sys/auth could not confirm the method is absent: ${listing.message}`,\n ]),\n ),\n Effect.flatMap((table) =>\n table !== undefined && !Object.hasOwn(table, `${authPath(path)}/`)\n ? Effect.succeed(undefined)\n : Effect.fail(asked),\n ),\n );\n\n/** One method's config (`type`, `description`, `config.*_lease_ttl`), or undefined when absent. */\nexport const readAuthMethodData = (path: string) =>\n baoRead(readPath(path)).pipe(\n Effect.catchIf(\n (error) => error.status === 400,\n (error) => absentFromTable(path, error),\n ),\n );\n\nexport const enableAuthMethod = (props: BaoAuthMethodProps) =>\n baoWrite('POST', readPath(props.path), enableBody(props));\n\nexport const tuneAuthMethod = (props: BaoAuthMethodProps) =>\n baoWrite('POST', tunePath(props.path), tuneBody(props));\n\n/** ⚠️ THERE IS NO FORCE. Disable is a plain DELETE, same as `bao auth disable`. */\nexport const disableAuthMethod = (path: string) => baoDelete(readPath(path));\n",
23
23
  "/**\n * What a changed path means for Bao.Mount and Bao.AuthMethod — and the move, when one is declared.\n *\n * ⛔ A CHANGED PATH USED TO PLAN `update` AND ENABLE AN EMPTY MOUNT AT THE NEW PATH. diff read the\n * new path, found nothing, answered `update`, and reconcile ran `enable` there: a fresh, empty\n * `kv2/` beside the retained `kv/` that still held every secret, with Alchemy's state now naming\n * only the empty one. Nothing failed, so nothing said so (site-config plan, Guards).\n * ★ NOW A CHANGED PATH FAILS AT PLAN TIME, unless the declaration says where it came from:\n * `remountFrom: '<old path>'` moves the mount with `sys/remount` (remount-wire.ts), which keeps\n * every secret. A genuinely new, empty mount is a new resource id, never an edited path.\n * ★ THE MOVE IS DECIDED BY LIVE STATE, SO A RE-RUN CONVERGES. Source present and target absent is\n * a move; target present and source absent is a move that already happened; both present, or\n * neither, is a refusal — \"neither\" in particular is exactly the empty-mount failure above.\n */\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport type { BaoError } from './bao-status.ts';\nimport { mountPath } from './mount-form.ts';\nimport { type RemountError, type RemountOptions, remountAndWait } from './remount-wire.ts';\n\nexport type Move =\n | { readonly kind: 'stay' }\n | { readonly kind: 'move'; readonly from: string }\n | { readonly kind: 'refuse'; readonly message: string };\n\n/**\n * @param family `Bao.Mount` or `Bao.AuthMethod`, for the message.\n * @param stated the path Alchemy's state holds, or undefined on a first reconcile.\n * @param path the declared path.\n * @param remountFrom the declared source, if any.\n */\nexport const planMove = (\n family: string,\n stated: string | undefined,\n path: string,\n remountFrom: string | undefined,\n): Move => {\n const to = mountPath(path);\n const from = remountFrom === undefined ? undefined : mountPath(remountFrom);\n if (stated === undefined) {\n return from === undefined || from === to ? { kind: 'stay' } : { kind: 'move', from };\n }\n const was = mountPath(stated);\n if (was === to) return { kind: 'stay' };\n if (from === undefined) {\n return {\n kind: 'refuse',\n message:\n `${family}: path changed from ${was} to ${to}. That would enable an EMPTY mount at ${to} ` +\n `and strand everything under ${was}. To move it with its data, declare ` +\n `\\`remountFrom: '${was}'\\` (leases under it are revoked; policies are not rewritten). ` +\n 'For a new, empty mount, give it a new resource id instead.',\n };\n }\n if (from !== was) {\n return {\n kind: 'refuse',\n message: `${family}: remountFrom is ${from}, but the mount in state is ${was}.`,\n };\n }\n return { kind: 'move', from };\n};\n\nexport interface MoveTarget {\n readonly family: string;\n /** Declared path, bare. */\n readonly path: string;\n readonly type: string;\n /** Read one path's live entry — undefined when absent. */\n readonly read: (\n path: string,\n ) => Effect.Effect<{ readonly type: string } | undefined, BaoError, HttpClient.HttpClient>;\n /** The path as sys/remount takes it: the bare path for secrets, `auth/<path>` for auth. */\n readonly wire: (path: string) => string;\n}\n\nconst refuse = (message: string) => Effect.die(new Error(message));\n\n/** Perform a planned move, deciding by live state. Returns once the target is in place. */\nexport const performMove = (\n target: MoveTarget,\n from: string,\n options?: RemountOptions,\n): Effect.Effect<void, BaoError | RemountError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const to = mountPath(target.path);\n const source = yield* target.read(from);\n const landed = yield* target.read(to);\n if (source !== undefined && landed !== undefined) {\n return yield* refuse(\n `${target.family}: both ${from} and ${to} exist, so remountFrom cannot move one onto the ` +\n 'other. Decide which holds the data, and retire the other by hand.',\n );\n }\n if (source === undefined && landed === undefined) {\n return yield* refuse(\n `${target.family}: remountFrom ${from} names no mount, and ${to} does not exist either. ` +\n 'Refusing to enable an empty mount where data was expected.',\n );\n }\n if (source === undefined) return; // ★ Already moved — an interrupted apply re-running.\n if (source.type !== target.type) {\n return yield* refuse(\n `${target.family}: ${from} is type ${source.type}, not ${target.type}. A remount keeps the ` +\n 'type; fix the declaration first.',\n );\n }\n const confirm = Effect.map(\n Effect.all([target.read(from), target.read(to)]),\n ([gone, there]) => gone === undefined && there !== undefined,\n );\n yield* remountAndWait(target.wire(from), target.wire(to), confirm, options);\n });\n",
24
24
  "/**\n * `sys/remount` — move a secrets engine or auth method to a new path WITH its data — and the status\n * polling it needs, because the move finishes after the call returns.\n *\n * ★ READ FROM openbao v2.6.2, NOT RECALLED:\n * · api/sys_mounts.go:95-191 — the CLI's `bao secrets move` POSTs `{from, to}` to sys/remount,\n * takes `data.migration_id`, then GETs sys/remount/status/<id> once a second until\n * `migration_info.status` is `success` or `failure`. This is that loop, bounded.\n * · vault/logical_system.go:1257-1357 — the handler validates, records the migration and\n * answers AT ONCE; a goroutine does the move. So a 200 means \"queued\", never \"moved\".\n * · vault/mount.go:630-735 — the mount keeps its UUID, and storage lives under the UUID, so every\n * secret stays. ⛔ BUT EVERY LEASE UNDER THE SOURCE IS REVOKED (`RevokePrefix`, :684): a move of\n * a dynamic-secrets mount kills every credential it has issued. KV has no leases.\n * · vault/logical_system.go:67-69 — `remount` is a sudo path. The status path is not.\n * ⚠️ THE STATUS TRACKER IS IN MEMORY (vault/mount.go:2303-2336, a sync.Map on the active node). A\n * restart or leader change mid-move loses it, and the status read then answers 404. That is not a\n * failure and not a success; `confirm` settles it from the mount tables, or the call fails.\n * ⛔ POLICIES ARE NOT REWRITTEN. Every ACL path naming the old mount keeps naming it.\n */\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { baoCall, baoRead } from './bao-http.ts';\nimport type { BaoError } from './bao-status.ts';\n\n/** A move OpenBao reported failed, or one this could not confirm. Never carries a token. */\nexport class RemountError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'RemountError';\n }\n}\n\nexport interface RemountOptions {\n /** Milliseconds between status reads. Default 1000 — the CLI's own pace. */\n readonly intervalMillis?: number;\n /** Status reads before giving up. Default 120, so about two minutes. */\n readonly attempts?: number;\n}\n\nconst record = (value: unknown): Record<string, unknown> | undefined =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n\n/** POST sys/remount and return the migration id. `from`/`to` are full paths (`auth/x` for auth). */\nexport const startRemount = (\n from: string,\n to: string,\n): Effect.Effect<string, BaoError | RemountError, HttpClient.HttpClient> =>\n Effect.flatMap(baoCall('write', 'POST', 'sys/remount', { from, to }), (body) => {\n const id = record(body?.['data'])?.['migration_id'];\n return typeof id === 'string' && id !== ''\n ? Effect.succeed(id)\n : Effect.fail(new RemountError(`sys/remount ${from} -> ${to} answered no migration_id.`));\n });\n\n/** `in-progress`, `success`, `failure` — or undefined when the server no longer knows the id. */\nexport const remountStatus = (\n id: string,\n): Effect.Effect<string | undefined, BaoError, HttpClient.HttpClient> =>\n Effect.map(baoRead(`sys/remount/status/${encodeURIComponent(id)}`), (data) => {\n if (data === undefined) return undefined;\n const status = record(data['migration_info'])?.['status'];\n return typeof status === 'string' ? status : 'unknown';\n });\n\n/**\n * Move `from` to `to` and wait until OpenBao says it is done.\n *\n * @param confirm answers \"does the mount table show the move finished?\" — asked only when the\n * status tracker has forgotten the id. True is success; false fails.\n */\nexport const remountAndWait = (\n from: string,\n to: string,\n confirm: Effect.Effect<boolean, BaoError, HttpClient.HttpClient>,\n options: RemountOptions = {},\n): Effect.Effect<void, BaoError | RemountError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const interval = options.intervalMillis ?? 1000;\n const attempts = Math.max(1, options.attempts ?? 120);\n const id = yield* startRemount(from, to);\n const named = `sys/remount ${from} -> ${to} (migration ${id})`;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n const status = yield* remountStatus(id);\n if (status === 'success') return;\n if (status === 'failure') {\n return yield* Effect.fail(\n new RemountError(\n `${named} FAILED. The server log carries the reason, tagged with that migration_id. ` +\n 'Read sys/mounts (or sys/auth) before retrying: the source may be tainted.',\n ),\n );\n }\n if (status === undefined) {\n if (yield* confirm) return;\n return yield* Effect.fail(\n new RemountError(\n `${named}: the server no longer knows the migration (its tracker is in memory, lost ` +\n 'on a restart or leader change), and the mount table does not show the move done.',\n ),\n );\n }\n if (attempt < attempts) yield* Effect.sleep(interval);\n }\n return yield* Effect.fail(\n new RemountError(\n `${named} is still in progress after ${String(attempts)} status reads. Do not re-run ` +\n `until sys/remount/status/${id} settles.`,\n ),\n );\n });\n",
25
- "/**\n * An OpenBao AppRole auth role — token_policies, TTLs and bind flags. METADATA ONLY.\n *\n * ⛔ NO SECRET IN PROPS OR ATTRIBUTES — see policy.ts for why. `role_id` and `secret_id`\n * are credential issuance, not configuration, and are OUT OF SCOPE. This declares the\n * role shape an approle login inherits — policy names and TTL strings only.\n *\n * ★ `defaultRemovalPolicy: 'retain'` — deleting a role locks out every host that logs in with it:\n * its secret_ids go with it (the ⚠️ on `delete` below). Opt in with\n * `.pipe(RemovalPolicy.destroy())`; see resource.ts in <estate>/proxmox.\n */\nimport { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport {\n type BaoAuthRoleAttributes,\n type BaoAuthRoleProps,\n attributesOf,\n matches,\n readPath,\n writeBody,\n} from './auth-role-form.ts';\nimport { baoDelete, baoRead, baoWrite } from './bao-http.ts';\nimport { foldName, guardRename, judgeRename, nameIdentity } from './rename-identity.ts';\n\nexport type { BaoAuthRoleAttributes, BaoAuthRoleProps };\n\nexport interface BaoAuthRole extends Resource<\n 'Bao.AuthRole',\n BaoAuthRoleProps,\n BaoAuthRoleAttributes,\n never,\n HttpClient.HttpClient\n> {}\n\nexport const BaoAuthRole = Resource<BaoAuthRole>('Bao.AuthRole', {\n defaultRemovalPolicy: 'retain',\n});\n\n/**\n * ⚠️ CASE-INSENSITIVELY, BECAUSE THE SERVER IS. AppRole stores `role/<lowercased name>` (openbao\n * v2.6.2 builtin/credential/approle/path_role.go:1485, and roleEntry reads the same key,\n * :1537), so `Host` → `host` is the SAME role: a `replace` there would write it, then — under\n * `destroy` — delete the old generation, which is that same role.\n */\nconst IDENTITY = nameIdentity<BaoAuthRoleAttributes>('Bao.AuthRole', readPath, foldName);\n\nconst readRole = (props: BaoAuthRoleProps) =>\n Effect.gen(function* () {\n const live = yield* baoRead(readPath(props.name));\n if (live === undefined) return undefined;\n return attributesOf(props, live);\n });\n\nexport const BaoAuthRoleProvider = () =>\n Provider.effect(\n BaoAuthRole,\n Effect.succeed(\n BaoAuthRole.Provider.of({\n /**\n * ⛔ `bao list auth/approle/role` IS NOT A LIST OF THINGS THIS OWNS. Every role\n * in the namespace answers, including break-glass and bootstrap ones. Returning\n * them would invite Alchemy to adopt — and then delete — roles it never created.\n */\n list: () => Effect.succeed([]),\n\n /** ⛔ Stateless: `Unowned` unless our own interrupted create made it (ownership/probe.ts). */\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const found = yield* readRole(olds);\n const ours = Effect.sync(() => found !== undefined && matches(found, olds));\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE ROLE, NOT THE STORED DIGEST. A role edited in the OpenBao\n * UI is exactly the drift the check-* gates exist to catch.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n /**\n * ⛔ A RENAMED ROLE IS A NEW ROLE — NEW role_id, NEW secret_ids — SO IT IS A `replace`,\n * judged before `isResolved(news)` (rename-identity.ts). Until 2026-09-21 a new `name`\n * read nothing, planned `update` and wrote the new role, leaving the old one live\n * under no state record: its secret_ids kept logging in for their whole TTL, and no\n * plan would ever mention it again (REPLACE.md). ⛔ A rename onto a role that exists\n * fails the plan.\n * ⚠️ UNDER THE DEFAULT `retain` THE OLD ROLE STILL STAYS LIVE — retain keeps the old\n * generation of a replace (Apply.ts:2164-2173). For per-host roles (host-approles.ts),\n * opt into `RemovalPolicy.destroy()` or destroy the old role's accessors by hand.\n */\n const move = yield* judgeRename(IDENTITY, olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) return { action: 'replace' } as const;\n if (!isResolved(news)) return undefined;\n const live = yield* readRole(news);\n if (live === undefined) return { action: 'update' } as const;\n if (matches(live, news)) return { action: 'noop' } as const;\n return { action: 'update' } as const;\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n // ⛔ An `update` across a rename the diff could not see — refused before any write.\n yield* guardRename(IDENTITY, news, output);\n const live = yield* readRole(news);\n const path = readPath(news.name);\n if (live !== undefined)\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.AuthRole ${path}`);\n if (live === undefined || !matches(live, news)) {\n yield* baoWrite('PUT', readPath(news.name), writeBody(news));\n }\n const after = yield* readRole(news);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(\n `Bao.AuthRole ${news.name}: write returned no error but the role is still absent.`,\n ),\n );\n }\n return after;\n }),\n\n /**\n * ⚠️ DELETING A ROLE DOES NOT REVOKE THE TOKENS IT ISSUED. openbao v2.6.2 pathRoleDelete\n * (builtin/credential/approle/path_role.go:1858-1902) deletes every secret_id\n * (flushRoleSecrets, validation.go:420-446), the role_id mapping and the role, so no new\n * login succeeds, and it revokes nothing. A token already issued lives to its TTL; only\n * its renewal fails, because pathLoginRenew (path_login.go:414-438) refuses once the role\n * is gone. So this is not a containment action: to contain a leaked token, revoke it or\n * its accessor. (Corrected 2026-09-21: this said the delete revoked every token.)\n * Idempotent as Alchemy requires — already gone is success — but retain is the default,\n * because every host logging in with the role is locked out at the delete.\n */\n delete: Effect.fn(function* ({ output }) {\n yield* baoDelete(readPath(output.name));\n return undefined;\n }),\n }),\n ).pipe(Effect.map(provingResumes)),\n );\n",
26
- "import { sha256 } from './digest.ts';\nimport { parseDuration, ttlSeconds } from './mount-form.ts';\n\nexport interface BaoAuthRoleProps {\n /** AppRole name, as `auth/approle/role/{name}` takes it. */\n name: string;\n /** Policies bound to tokens minted through this role. Names only — never a secret. */\n tokenPolicies: readonly string[];\n /** Token TTL, e.g. `15m`. */\n tokenTtl: string;\n /** Token max TTL, e.g. `1h`. */\n tokenMaxTtl: string;\n /** Secret ID TTL — `0` means non-expiring, as reconcile.sh and apply-consumers.py set. */\n secretIdTtl: string;\n /** Whether login requires a secret_id. Defaults to true when omitted on write. */\n bindSecretId?: boolean;\n /** `0` means unlimited uses — the shape reconcile.sh writes for headless roles. */\n secretIdNumUses?: number;\n}\n\nexport interface BaoAuthRoleAttributes {\n name: string;\n tokenPolicies: readonly string[];\n tokenTtl: string;\n tokenMaxTtl: string;\n secretIdTtl: string;\n bindSecretId: boolean;\n secretIdNumUses: number;\n /** SHA-256 of the managed fields — safe to persist; see policy.ts. */\n digest: string;\n}\n\nconst policiesOf = (live: Record<string, unknown>): readonly string[] => {\n const raw = live['token_policies'];\n if (!Array.isArray(raw)) return [];\n return raw\n .filter((entry): entry is string => typeof entry === 'string')\n .slice()\n .sort();\n};\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback);\n\nconst int = (value: unknown, fallback: number) =>\n typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n\nconst ttlText = (seconds: number | undefined, fallback = '') => {\n if (seconds === undefined) return fallback;\n if (seconds % 86400 === 0) return `${String(seconds / 86400)}d`;\n if (seconds % 3600 === 0) return `${String(seconds / 3600)}h`;\n if (seconds % 60 === 0) return `${String(seconds / 60)}m`;\n return `${String(seconds)}s`;\n};\n\nexport const attributesOf = (\n props: BaoAuthRoleProps,\n live: Record<string, unknown>,\n): BaoAuthRoleAttributes => {\n const attrs = {\n name: props.name,\n tokenPolicies: policiesOf(live),\n tokenTtl: ttlText(ttlSeconds(live['token_ttl'])),\n tokenMaxTtl: ttlText(ttlSeconds(live['token_max_ttl'])),\n secretIdTtl: ttlText(ttlSeconds(live['secret_id_ttl']), '0'),\n bindSecretId: bool(live['bind_secret_id'], true),\n secretIdNumUses: int(live['secret_id_num_uses'], 0),\n };\n return { ...attrs, digest: sha256(JSON.stringify(attrs)) };\n};\n\nexport const readPath = (name: string) => `auth/approle/role/${name}`;\n\n/**\n * The body for `PUT auth/approle/role/<name>`.\n *\n * ★ ALL STRINGS, EXACTLY THE `k=v` PAIRS `bao write` USED TO SEND — see `baoWrite` in bao-http.ts.\n */\nexport const writeBody = (props: BaoAuthRoleProps): Record<string, string> => {\n const body: Record<string, string> = {\n token_policies: props.tokenPolicies.join(','),\n token_ttl: props.tokenTtl,\n token_max_ttl: props.tokenMaxTtl,\n secret_id_ttl: props.secretIdTtl,\n };\n if (props.bindSecretId !== undefined) body['bind_secret_id'] = String(props.bindSecretId);\n if (props.secretIdNumUses !== undefined) {\n body['secret_id_num_uses'] = String(props.secretIdNumUses);\n }\n return body;\n};\n\nconst samePolicies = (want: readonly string[], have: readonly string[]) =>\n want.length === have.length && want.every((policy, index) => policy === have[index]);\n\nconst sameTtl = (want: string, have: string) => {\n const wantSeconds = parseDuration(want);\n const haveSeconds = ttlSeconds(have);\n return wantSeconds !== undefined && wantSeconds === haveSeconds;\n};\n\n/** True when live already matches the declaration on every managed field. */\nexport const matches = (attributes: BaoAuthRoleAttributes, props: BaoAuthRoleProps) => {\n const wantPolicies = props.tokenPolicies.slice().sort();\n return (\n samePolicies(wantPolicies, attributes.tokenPolicies) &&\n sameTtl(props.tokenTtl, attributes.tokenTtl) &&\n sameTtl(props.tokenMaxTtl, attributes.tokenMaxTtl) &&\n sameTtl(props.secretIdTtl, attributes.secretIdTtl) &&\n (props.bindSecretId === undefined || attributes.bindSecretId === props.bindSecretId) &&\n (props.secretIdNumUses === undefined || attributes.secretIdNumUses === props.secretIdNumUses)\n );\n};\n",
25
+ "/**\n * An OpenBao AppRole auth role — token_policies, TTLs and bind flags. METADATA ONLY.\n *\n * ⛔ NO SECRET IN PROPS OR ATTRIBUTES — see policy.ts for why. `role_id` and `secret_id`\n * are credential issuance, not configuration, and are OUT OF SCOPE. This declares the\n * role shape an approle login inherits — policy names and TTL strings only.\n *\n * ★ `defaultRemovalPolicy: 'retain'` — deleting a role locks out every host that logs in with it:\n * its secret_ids go with it (the ⚠️ on `delete` below). Opt in with\n * `.pipe(RemovalPolicy.destroy())`; see resource.ts in <estate>/proxmox.\n */\nimport { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport {\n type BaoAuthRoleAttributes,\n type BaoAuthRoleProps,\n attributesOf,\n matches,\n readPath,\n} from './auth-role-form.ts';\nimport { authRoleIdentity, judgeAuthRoleRename } from './auth-role-identity.ts';\nimport { deleteAuthRole, readAuthRole, writeAuthRole } from './auth-role-wire.ts';\nimport { guardRename } from './rename-identity.ts';\n\nexport type { BaoAuthRoleAttributes, BaoAuthRoleProps };\n\nexport interface BaoAuthRole extends Resource<\n 'Bao.AuthRole',\n BaoAuthRoleProps,\n BaoAuthRoleAttributes,\n never,\n HttpClient.HttpClient\n> {}\n\nexport const BaoAuthRole = Resource<BaoAuthRole>('Bao.AuthRole', {\n defaultRemovalPolicy: 'retain',\n});\n\n/**\n * ⚠️ CASE-INSENSITIVELY, BECAUSE THE SERVER IS. AppRole stores `role/<lowercased name>` (openbao\n * v2.6.2 builtin/credential/approle/path_role.go:1485, and roleEntry reads the same key,\n * :1537), so `Host` → `host` is the SAME role: a `replace` there would write it, then — under\n * `destroy` — delete the old generation, which is that same role.\n */\nconst IDENTITY = authRoleIdentity;\n\nconst readRole = (props: BaoAuthRoleProps) =>\n Effect.gen(function* () {\n const live = yield* readAuthRole(props.name);\n if (live === undefined) return undefined;\n return attributesOf(props, { ...live });\n });\n\nexport const BaoAuthRoleProvider = () =>\n Provider.effect(\n BaoAuthRole,\n Effect.succeed(\n BaoAuthRole.Provider.of({\n /**\n * ⛔ `bao list auth/approle/role` IS NOT A LIST OF THINGS THIS OWNS. Every role\n * in the namespace answers, including break-glass and bootstrap ones. Returning\n * them would invite Alchemy to adopt — and then delete — roles it never created.\n */\n list: () => Effect.succeed([]),\n\n /** ⛔ Stateless: `Unowned` unless our own interrupted create made it (ownership/probe.ts). */\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const found = yield* readRole(olds);\n const ours = Effect.sync(() => found !== undefined && matches(found, olds));\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE ROLE, NOT THE STORED DIGEST. A role edited in the OpenBao\n * UI is exactly the drift the check-* gates exist to catch.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n /**\n * ⛔ A RENAMED ROLE IS A NEW ROLE — NEW role_id, NEW secret_ids — SO IT IS A `replace`,\n * judged before `isResolved(news)` (rename-identity.ts). Until 2026-09-21 a new `name`\n * read nothing, planned `update` and wrote the new role, leaving the old one live\n * under no state record: its secret_ids kept logging in for their whole TTL, and no\n * plan would ever mention it again (REPLACE.md). ⛔ A rename onto a role that exists\n * fails the plan.\n * ⚠️ UNDER THE DEFAULT `retain` THE OLD ROLE STILL STAYS LIVE — retain keeps the old\n * generation of a replace (Apply.ts:2164-2173). For per-host roles (host-approles.ts),\n * opt into `RemovalPolicy.destroy()` or destroy the old role's accessors by hand.\n */\n const move = yield* judgeAuthRoleRename(olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) return { action: 'replace' } as const;\n if (!isResolved(news)) return undefined;\n const live = yield* readRole(news);\n if (live === undefined) return { action: 'update' } as const;\n if (matches(live, news)) return { action: 'noop' } as const;\n return { action: 'update' } as const;\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n // ⛔ An `update` across a rename the diff could not see — refused before any write.\n yield* guardRename(IDENTITY, news, output);\n const live = yield* readRole(news);\n const path = readPath(news.name);\n if (live !== undefined)\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.AuthRole ${path}`);\n if (live === undefined || !matches(live, news)) {\n yield* writeAuthRole(news);\n }\n const after = yield* readRole(news);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(\n `Bao.AuthRole ${news.name}: write returned no error but the role is still absent.`,\n ),\n );\n }\n return after;\n }),\n\n /**\n * ⚠️ DELETING A ROLE DOES NOT REVOKE THE TOKENS IT ISSUED. openbao v2.6.2 pathRoleDelete\n * (builtin/credential/approle/path_role.go:1858-1902) deletes every secret_id\n * (flushRoleSecrets, validation.go:420-446), the role_id mapping and the role, so no new\n * login succeeds, and it revokes nothing. A token already issued lives to its TTL; only\n * its renewal fails, because pathLoginRenew (path_login.go:414-438) refuses once the role\n * is gone. So this is not a containment action: to contain a leaked token, revoke it or\n * its accessor. (Corrected 2026-09-21: this said the delete revoked every token.)\n * Idempotent as Alchemy requires — already gone is success — but retain is the default,\n * because every host logging in with the role is locked out at the delete.\n */\n delete: Effect.fn(function* ({ output }) {\n yield* deleteAuthRole(output.name);\n return undefined;\n }),\n }),\n ).pipe(Effect.map(provingResumes)),\n );\n",
26
+ "import { sha256 } from './digest.ts';\nimport { parseDuration, ttlSeconds } from './mount-form.ts';\n\nexport interface BaoAuthRoleProps {\n /** AppRole name, as `auth/approle/role/{name}` takes it. */\n name: string;\n /** Policies bound to tokens minted through this role. Names only — never a secret. */\n tokenPolicies: readonly string[];\n /** Token TTL, e.g. `15m`. */\n tokenTtl: string;\n /** Token max TTL, e.g. `1h`. */\n tokenMaxTtl: string;\n /** Secret ID TTL — `0` means non-expiring, as reconcile.sh and apply-consumers.py set. */\n secretIdTtl: string;\n /** Whether login requires a secret_id. Defaults to true when omitted on write. */\n bindSecretId?: boolean;\n /** `0` means unlimited uses — the shape reconcile.sh writes for headless roles. */\n secretIdNumUses?: number;\n}\n\nexport interface BaoAuthRoleAttributes {\n name: string;\n tokenPolicies: readonly string[];\n tokenTtl: string;\n tokenMaxTtl: string;\n secretIdTtl: string;\n bindSecretId: boolean;\n secretIdNumUses: number;\n /** SHA-256 of the managed fields — safe to persist; see policy.ts. */\n digest: string;\n}\n\nconst policiesOf = (live: Record<string, unknown>): readonly string[] => {\n const raw = live['token_policies'];\n if (!Array.isArray(raw)) return [];\n return raw\n .filter((entry): entry is string => typeof entry === 'string')\n .slice()\n .sort();\n};\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback);\n\nconst int = (value: unknown, fallback: number) =>\n typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n\nconst ttlText = (seconds: number | undefined, fallback = '') => {\n if (seconds === undefined) return fallback;\n if (seconds % 86400 === 0) return `${String(seconds / 86400)}d`;\n if (seconds % 3600 === 0) return `${String(seconds / 3600)}h`;\n if (seconds % 60 === 0) return `${String(seconds / 60)}m`;\n return `${String(seconds)}s`;\n};\n\nexport const attributesOf = (\n props: BaoAuthRoleProps,\n live: Record<string, unknown>,\n): BaoAuthRoleAttributes => {\n const attrs = {\n name: props.name,\n tokenPolicies: policiesOf(live),\n tokenTtl: ttlText(ttlSeconds(live['token_ttl'])),\n tokenMaxTtl: ttlText(ttlSeconds(live['token_max_ttl'])),\n secretIdTtl: ttlText(ttlSeconds(live['secret_id_ttl']), '0'),\n bindSecretId: bool(live['bind_secret_id'], true),\n secretIdNumUses: int(live['secret_id_num_uses'], 0),\n };\n return { ...attrs, digest: sha256(JSON.stringify(attrs)) };\n};\n\nexport const readPath = (name: string) => `auth/approle/role/${name}`;\n\nconst samePolicies = (want: readonly string[], have: readonly string[]) =>\n want.length === have.length && want.every((policy, index) => policy === have[index]);\n\nconst sameTtl = (want: string, have: string) => {\n const wantSeconds = parseDuration(want);\n const haveSeconds = ttlSeconds(have);\n return wantSeconds !== undefined && wantSeconds === haveSeconds;\n};\n\n/** True when live already matches the declaration on every managed field. */\nexport const matches = (attributes: BaoAuthRoleAttributes, props: BaoAuthRoleProps) => {\n const wantPolicies = props.tokenPolicies.slice().sort();\n return (\n samePolicies(wantPolicies, attributes.tokenPolicies) &&\n sameTtl(props.tokenTtl, attributes.tokenTtl) &&\n sameTtl(props.tokenMaxTtl, attributes.tokenMaxTtl) &&\n sameTtl(props.secretIdTtl, attributes.secretIdTtl) &&\n (props.bindSecretId === undefined || attributes.bindSecretId === props.bindSecretId) &&\n (props.secretIdNumUses === undefined || attributes.secretIdNumUses === props.secretIdNumUses)\n );\n};\n",
27
+ "/**\n * AppRole METADATA through the named SDK operations (OpenBao 2.6.2 generated schema).\n * ★ pathRoleRead returns nil for absence; logical.RespondErrorCommon turns that read into\n * 404. pathRoleDelete returns nil for an already absent role (204). Reasoned from v2.6.2\n * builtin/credential/approle/path_role.go:1758-1904 and sdk/logical/response_util.go:21-26.\n * ⛔ No role-id, secret-id or login request belongs in this configuration lifecycle.\n */\nimport {\n type AppRoleReadRoleResponse,\n type AppRoleWriteRoleRequest,\n appRoleDeleteRole,\n appRoleReadRole,\n appRoleWriteRole,\n} from '@distilled.cloud/openbao/approle';\nimport * as Effect from 'effect/Effect';\nimport { type BaoAuthRoleProps, readPath } from './auth-role-form.ts';\nimport { BaoError } from './bao-status.ts';\nimport { runBao, runBaoRead, runBaoWrite } from './distilled.ts';\nimport { parseDuration } from './mount-form.ts';\n\nconst identity = (name: string) => ({ approle_mount_path: 'approle', role_name: name });\nconst seconds = (value: unknown): value is number =>\n typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\n\n/**\n * The vendor always returns these managed fields (pathRoleRead + tokenutil.PopulateTokenData).\n * Generated response fields are optional, so a proxy's 200 {} must not supply default values.\n * Ignore unmanaged fields: secret_id_bound_cidrs can legitimately be null in the vendor response.\n */\nconst completeRole = (live: AppRoleReadRoleResponse): boolean =>\n live !== null &&\n typeof live === 'object' &&\n typeof live.bind_secret_id === 'boolean' &&\n seconds(live.secret_id_num_uses) &&\n seconds(live.secret_id_ttl) &&\n seconds(live.token_ttl) &&\n seconds(live.token_max_ttl) &&\n Array.isArray(live.token_policies) &&\n live.token_policies.every((policy) => typeof policy === 'string');\n\nexport const readAuthRole = (name: string) =>\n runBaoRead(appRoleReadRole(identity(name))).pipe(\n Effect.flatMap((live) =>\n completeRole(live)\n ? Effect.succeed(live)\n : Effect.fail(new BaoError(200, 'GET', readPath(name), ['incomplete role metadata'])),\n ),\n Effect.catchTag('NotFound', () => Effect.succeed(undefined)),\n );\n\nexport const authRoleExists = (name: string) =>\n readAuthRole(name).pipe(Effect.map((live) => live !== undefined));\n\nexport const authRoleRequest = (props: BaoAuthRoleProps) =>\n Effect.gen(function* () {\n const tokenTtl = parseDuration(props.tokenTtl);\n const tokenMaxTtl = parseDuration(props.tokenMaxTtl);\n const secretIdTtl = parseDuration(props.secretIdTtl);\n if (!seconds(tokenTtl) || !seconds(tokenMaxTtl) || !seconds(secretIdTtl)) {\n return yield* Effect.fail(\n new BaoError(0, 'POST', readPath(props.name), ['invalid role TTL duration']),\n );\n }\n // ★ The former CLI-style body used strings for every k=v. The SDK schema uses seconds,\n // booleans and arrays; omitted knobs stay omitted on update.\n // pathRoleCreateUpdate preserves absent bind_secret_id/secret_id_num_uses on existing roles.\n const request: AppRoleWriteRoleRequest = {\n ...identity(props.name),\n token_policies: [...props.tokenPolicies],\n token_ttl: tokenTtl,\n token_max_ttl: tokenMaxTtl,\n secret_id_ttl: secretIdTtl,\n ...(props.bindSecretId === undefined ? {} : { bind_secret_id: props.bindSecretId }),\n ...(props.secretIdNumUses === undefined ? {} : { secret_id_num_uses: props.secretIdNumUses }),\n };\n return request;\n });\n\n/**\n * ★ A FULL-REPLACE WRITE, like the policy write: every managed field travels in the request\n * every time (only genuinely omitted knobs stay omitted), so a transport failure is safe to\n * retry through `runBaoWrite` — the replay sends the identical desired state.\n */\nexport const writeAuthRole = (props: BaoAuthRoleProps) =>\n authRoleRequest(props).pipe(Effect.flatMap((request) => runBaoWrite(appRoleWriteRole(request))));\n\n/** Other typed SDK failures, including denied deletes, propagate unchanged. */\nexport const deleteAuthRole = (name: string) =>\n runBao(appRoleDeleteRole(identity(name))).pipe(Effect.catchTag('NotFound', () => Effect.void));\n",
28
+ "/**\n * The SDK shares Bao's existing call-time environment and process-wide concurrency gate.\n * Merely supplying HttpClient does not apply that gate: legacy calls acquire it in baoCall.\n * ⛔ `runBao` ITSELF NEVER RETRIES: an interrupted call may already have reached the vault, and\n * replaying a non-idempotent operation (a delete whose 404-is-success path already ran, a login,\n * a credential issuance) could repeat a side effect. `runBaoRead` and `runBaoWrite` opt specific,\n * known-idempotent call shapes back into the bounded transport retry baoCall always had.\n */\nimport { Credentials, normalizeBaseUrl } from '@distilled.cloud/openbao/Credentials';\nimport type { OpenBaoOpContext } from '@distilled.cloud/openbao/Protocol';\nimport * as Retry from '@distilled.cloud/openbao/Retry';\nimport type * as Cause from 'effect/Cause';\nimport type * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Redacted from 'effect/Redacted';\nimport * as Semaphore from 'effect/Semaphore';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { isHttpClientError } from 'effect/unstable/http/HttpClientError';\nimport { readBaoVariable, resolveAddress } from './bao-address.ts';\nimport {\n BAO_TIMEOUT,\n BaoEnv,\n BaoGate,\n overSocket,\n redactingToken,\n retryTransport,\n} from './bao-http.ts';\nimport { BaoError } from './bao-status.ts';\n\nexport const runBao = <A, E>(\n operation: Effect.Effect<A, E, OpenBaoOpContext>,\n timeout: Duration.Input = BAO_TIMEOUT,\n): Effect.Effect<A, E | BaoError | Cause.TimeoutError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const env = yield* BaoEnv;\n const address = resolveAddress(env);\n const token = readBaoVariable(env, 'BAO_TOKEN');\n const gate = yield* BaoGate;\n return yield* operation.pipe(\n Effect.provideService(\n Credentials,\n Effect.succeed({\n apiBaseUrl: normalizeBaseUrl(address.base),\n ...(address.namespace === undefined ? {} : { namespace: address.namespace }),\n ...(token === '' ? {} : { token: Redacted.make(token) }),\n }),\n ),\n Retry.none,\n // ⛔ HttpClientError holds the request, including X-Vault-Token. Trace redaction is\n // fiber-local and gone when an error is serialized later; keep only its safe message,\n // as baoCall does. SDK status/resource errors retain their original typed identity.\n Effect.mapError((cause) =>\n isHttpClientError(cause) ? new BaoError(0, 'SDK', 'operation', [cause.message]) : cause,\n ),\n // ★ A queued call has not reached the server: acquire the shared permit outside the timeout.\n Effect.timeout(timeout),\n overSocket(address.socket, 'SDK', 'operation'),\n redactingToken,\n Semaphore.withPermits(gate, 1),\n );\n });\n\n/**\n * Reads use the existing two transport retries (750 ms between attempts). Each attempt\n * reacquires the shared permit and its own bounded timeout. Typed SDK status and decoding\n * failures still propagate immediately; a read is always safe to replay because it never\n * changes vault state.\n */\nexport const runBaoRead = <A, E>(\n operation: Effect.Effect<A, E, OpenBaoOpContext>,\n timeout: Duration.Input = BAO_TIMEOUT,\n): Effect.Effect<A, E | BaoError | Cause.TimeoutError, HttpClient.HttpClient> =>\n retryTransport(runBao(operation, timeout));\n\n/**\n * The pre-PR `baoCall()` retried every call, writes included; that bound was lost when the\n * distilled SDK path landed with `Retry.none` on `runBao`. Restore it for the writes where\n * replaying is safe: a FULL-REPLACE, idempotent write (an OpenBao policy PUT, an AppRole\n * write) sends the complete desired state every time, so retrying an uncertain transport\n * failure converges on the same result rather than compounding a partial change. A create\n * that mints a new identifier, or any operation whose second attempt could do something the\n * first did not, must keep calling `runBao` directly and make one attempt.\n */\nexport const runBaoWrite = <A, E>(\n operation: Effect.Effect<A, E, OpenBaoOpContext>,\n timeout: Duration.Input = BAO_TIMEOUT,\n): Effect.Effect<A, E | BaoError | Cause.TimeoutError, HttpClient.HttpClient> =>\n retryTransport(runBao(operation, timeout));\n",
29
+ "/**\n * Rename safety for the families whose identity is a name, a mount and a name, or a catalog key:\n * the primitives. rename-identity.ts builds each family's diff and reconcile step from them, and\n * REPLACE.md has the audit and what each answer does.\n *\n * ⛔ THE BUG THIS CLOSES, REPRODUCED 2026-09-21 AGAINST alchemy@2.0.0-beta.79's OWN PLAN AND APPLY\n * (fake-stack.ts): a Bao.Policy deployed as `old`, then redeclared as `new` under\n * `RemovalPolicy.destroy()`, planned `update` and left BOTH policies live. diff read the NEW\n * path, found nothing, answered `update`, and reconcile wrote the new object. The old one stayed\n * live under no state record, so no later plan would mention it, and not even `destroy` could\n * remove it.\n * ★ A CHANGED IDENTITY IS A DIFFERENT OBJECT, SO THE ANSWER IS `replace`. Create-first\n * (`deleteFirst` false): the new path never collides with the old, the new generation is written,\n * dependents are updated in the same graph, and only then is the old generation deleted. The\n * engine hands that delete the OLD generation's attributes (Apply.ts deleteOldGenerations and the\n * GC pass both pass `output: old.attr`), and every delete here reads `output`, never `news`.\n * ⛔ A new path that collides with ANOTHER live object is refused at plan instead (`judgeMove`).\n * ⚠️ UNDER `retain` THE OLD OBJECT STAYS LIVE. Apply.ts:2164-2173 skips the old generation's delete\n * and logs \"Retaining replaced resource (removal policy: retain)\". The plan still says `replace`\n * and the apply says what it kept, so it is no longer silent, but the old object is unmanaged\n * from then on. Remove it by hand, or opt into `RemovalPolicy.destroy()`.\n */\nimport * as Effect from 'effect/Effect';\nimport { baoRead } from './bao-http.ts';\n\nconst exact = (identity: string): string => identity;\n\n/**\n * A string prop of a diff's `news`, once that one prop is resolved; `undefined` while it is still an\n * Output of a changing upstream (a function-typed proxy) or an Effect.\n *\n * ★ THE IDENTITY IS JUDGED BEFORE `isResolved(news)`. That guard returns `undefined` when ANY prop is\n * pending, and the engine then falls back to `update` (Plan.ts, `havePropsChanged`). A rename that\n * lands in the same deploy as a pending `fragments` or `policies` Output would slip through as\n * `update`, which is the orphan again. launchd/host-effect.ts reads its identity the same way.\n */\nexport const declaredString = (news: unknown, key: string): string | undefined => {\n if (typeof news !== 'object' || news === null) return undefined;\n const value: unknown = (news as Record<string, unknown>)[key];\n return typeof value === 'string' ? value : undefined;\n};\n\n/** True while an optional prop is declared but is not yet a value: an Output of a changing upstream. */\nexport const isPendingProp = (news: unknown, key: string): boolean => {\n if (typeof news !== 'object' || news === null) return false;\n const value: unknown = (news as Record<string, unknown>)[key];\n return value !== undefined && typeof value !== 'string';\n};\n\n/**\n * An optional string prop: `fallback` when it is absent, undefined while it is still an Output.\n * ⚠️ Not `declaredString(…) ?? fallback`, which would read a pending mount as the default mount.\n */\nexport const declaredOr = (news: unknown, key: string, fallback: string): string | undefined =>\n isPendingProp(news, key) ? undefined : (declaredString(news, key) ?? fallback);\n\n/**\n * A role's API path from a diff's `news`, once both `mount` and `name` are resolved. `defaultMount`\n * is what an absent `mount` means; without one, an absent mount is unknown.\n */\nexport const declaredRolePath = (\n news: unknown,\n rolePath: (mount: string, name: string) => string,\n defaultMount?: string,\n): string | undefined => {\n const mount =\n defaultMount === undefined\n ? declaredString(news, 'mount')\n : declaredOr(news, 'mount', defaultMount);\n const name = declaredString(news, 'name');\n return mount === undefined || name === undefined ? undefined : rolePath(mount, name);\n};\n\n/**\n * How OpenBao keys an ACL policy: trimmed and lowercased. openbao v2.6.2\n * vault/policy/policy_store.go:698-700 (`sanitizeName`), applied by SetPolicy (:268), GetPolicy\n * (:378) and DeletePolicy (:562).\n *\n * ⛔ SO `Admin` → `admin` IS THE SAME POLICY, NOT A RENAME. A `replace` there would write it, and then,\n * under `destroy`, delete the old generation, which is that same policy. Every grant it carries\n * would be revoked by a change of case.\n */\nexport const policyKey = (name: string): string => name.trim().toLowerCase();\n\n/**\n * Whether the declared identity names a different object than the one in state: `true` → moved (the\n * diff asks `judgeMove`, which also reads the target); `false` → the same object; `undefined` → not\n * knowable yet, because the declared side is still an Output. `key` is how the SERVER keys the object (`policyKey`); the default is exact,\n * which is right for a mount path (vault/routing/router.go folds no case) and for both plugins'\n * roles (each stores `roles/<name>` verbatim).\n *\n * ⛔ NEVER `replace` ON AN UNKNOWN IDENTITY. The Output may resolve to the same path, and a replace\n * onto the same path deletes, under `destroy`, the object it has just written. The diff defers\n * instead. If the engine then plans `update` and the identity turns out to have changed,\n * `refuseMovedUpdate` stops reconcile before it writes anything.\n */\nexport const isMoved = (\n stored: string,\n declared: string | undefined,\n key: (identity: string) => string = exact,\n): boolean | undefined => (declared === undefined ? undefined : key(stored) !== key(declared));\n\n/**\n * The diff's first question, asked before `isResolved(news)`: the move from the identity this\n * resource last wrote or tried (`tried`) to the declared one, or undefined when both name the same\n * object or either is still unknown. `pathOf` is the API path an identity is read at.\n *\n * ⛔ A MOVE ONTO AN OBJECT THAT ALREADY EXISTS FAILS THE PLAN. MEASURED 2026-09-21 through the engine\n * (rename-occupied.test.ts): two policies that swapped names under `RemovalPolicy.destroy()` each\n * planned `replace`, each new generation wrote over the other's live policy, and each old\n * generation's delete then removed the name the other had just written. The deploy was green and\n * both policies were gone, every grant revoked. A shift (a → b while b → c), and a move onto the\n * name of a resource leaving the stack, were measured ending the same way. So was reverting a\n * move whose new generation failed: the old generation still holds the name, and its delete runs\n * after the revert has rewritten it. That is why `tried` falls back to the props of an unfinished\n * write.\n * ⚠️ THE DIFF CANNOT SEE THE REMOVAL POLICY, SO THIS REFUSES UNDER `retain` TOO, where a swap, or a\n * move back onto a retained old generation, would have been harmless. The cost is a move in two\n * deploys through a free name, or removing the target by hand. The alternative is a green deploy\n * that deletes what it has just written.\n * ★ ONE PLAN-TIME READ, OF A PATH THE NEW GENERATION'S RECONCILE READS ANYWAY. A 404, a missing mount\n * included, is free; a refused read fails the plan, as any other diff read does.\n */\nexport const judgeMove = (\n family: string,\n tried: string | undefined,\n declared: string | undefined,\n pathOf: (identity: string) => string,\n key: (identity: string) => string = exact,\n) =>\n judgeMoveWith(\n family,\n tried,\n declared,\n (identity) => Effect.map(baoRead(pathOf(identity)), (value) => value !== undefined),\n key,\n );\n\n/** SDK families supply their own typed read so a rename cannot fall back to raw HTTP. */\nexport const judgeMoveWith = <E, R>(\n family: string,\n tried: string | undefined,\n declared: string | undefined,\n occupied: (identity: string) => Effect.Effect<boolean, E, R>,\n key: (identity: string) => string = exact,\n) =>\n Effect.gen(function* () {\n if (tried === undefined || declared === undefined || key(tried) === key(declared)) {\n return undefined;\n }\n if (!(yield* occupied(declared))) return { from: tried, to: declared };\n return yield* Effect.die(\n new Error(\n `${family}: ${tried} → ${declared} would land on an object that already exists at ` +\n `${declared}. Under RemovalPolicy.destroy() a resource moving off that name (a swap, a ` +\n 'shift, or a reverted move that did not finish) deletes it after this one writes it. ' +\n 'Nothing was written. Move through a name nothing holds, in two deploys, or remove ' +\n `${declared} by hand first.`,\n ),\n );\n });\n\n/**\n * Reconcile's guard: an `update` whose prior attributes name another object.\n *\n * ★ REACHED ONLY WHEN THE DIFF COULD NOT SEE THE NEW IDENTITY at plan time. A fresh create, and the\n * new generation of a `replace`, both reach reconcile with `output` undefined (Apply.ts passes\n * `output: attr`, which is empty for a new generation). An `update` reaches it with the previous\n * generation's attributes.\n * ★ THE FAILED DEPLOY SETTLES ITSELF. Apply has already committed the row as `updating`, with the new\n * props and the OLD attributes. By the next plan the upstream Output has landed, so the diff sees\n * both names and answers `replace` (or refuses, if the new name is already taken: `judgeMove`).\n * The old object is then deleted, or retained, by the removal policy, with no hand repair.\n */\nexport const refuseMovedUpdate = (family: string, from: string, to: string) =>\n Effect.die(\n new Error(\n `${family}: planned as an update, but its identity moved from ${from} to ${to}. Writing ` +\n `${to} now would leave ${from} live with no state record. Nothing was written. Run the ` +\n 'deploy again: once the value resolves at plan time it plans as a replace.',\n ),\n );\n",
27
30
  "/**\n * The rename guard every Bao.* family whose identity is a name, a mount, or a catalog key shares:\n * one `Identity` per family, and two steps built from rename.ts, `judgeRename` at the top of `diff`\n * and `guardRename` at the top of `reconcile`. REPLACE.md has the audit behind both.\n *\n * ★ ONE DESCRIPTION OF \"WHICH OBJECT\", NOT TWELVE COPIES OF THE CHECK. The rename-safety fix went\n * in family by family, and the families it skipped were the ones that kept the bug: nine of them\n * judged the identity only after `isResolved(news)` and never asked whether the new path was\n * taken. 🔴 MEASURED 2026-09-21 through the engine (rename-families.test.ts): two Bao.AuthRole,\n * Bao.PkiRole, Bao.JwtRole, Bao.KubernetesRole, Bao.SshRole or Bao.Plugin resources that swapped\n * names under `RemovalPolicy.destroy()` both planned `replace`, each wrote over the other, and\n * both old deletes then removed what had just been written: a green deploy, both objects gone.\n * With any other prop still an Output, all nine planned `update` and left the old object live\n * under no state record; for Bao.MfaTotpMethod that wrote a second method and stranded every\n * enrolment.\n */\nimport * as Effect from 'effect/Effect';\nimport {\n declaredRolePath,\n declaredString,\n isMoved,\n judgeMove,\n refuseMovedUpdate,\n} from './rename.ts';\n\n/** How one family names the object it manages — the thing a rename changes. */\nexport interface Identity<A> {\n /** `Bao.JwtRole` etc., for messages. */\n readonly family: string;\n /** The identity a set of props declares; undefined while any part of it is still an Output. */\n readonly declared: (props: unknown) => string | undefined;\n /** The identity a generation's attributes record. */\n readonly recorded: (output: A) => string;\n /** The API path an identity is read at, for the occupied check. Default: the identity. */\n readonly pathOf?: ((identity: string) => string) | undefined;\n /** How the server keys it (`policyKey`). Default: exact. */\n readonly key?: ((identity: string) => string) | undefined;\n}\n\n/** A family keyed by `name` alone, read at `pathOf(name)`. */\nexport const nameIdentity = <A extends { readonly name: string }>(\n family: string,\n pathOf: (name: string) => string,\n key?: (name: string) => string,\n): Identity<A> => ({\n declared: (props) => declaredString(props, 'name'),\n family,\n key,\n pathOf,\n recorded: (output) => output.name,\n});\n\n/**\n * A role at `rolePath(mount, name)`; the identity is that path. `defaultMount` is what an absent\n * `mount` prop means — undefined when `mount` is required.\n */\nexport const roleIdentity = <A extends { readonly mount: string; readonly name: string }>(\n family: string,\n rolePath: (mount: string, name: string) => string,\n defaultMount?: string,\n key?: (path: string) => string,\n): Identity<A> => ({\n declared: (props) => declaredRolePath(props, rolePath, defaultMount),\n family,\n key,\n recorded: (output) => rolePath(output.mount, output.name),\n});\n\n/**\n * ⚠️ THE LAST SEGMENT LOWERCASED: a role store that folds the name and not the mount. openbao v2.6.2\n * AppRole (builtin/credential/approle/path_role.go:1485, :1537) and Kubernetes\n * (builtin/credential/kubernetes/backend.go:362, path_role.go:396) both store `role/<lowercased\n * name>`, and JWT reads its `name` as a TypeLowerCaseString (builtin/credential/jwt/path_role.go:77),\n * while the router folds no case in a mount path. So `Host` → `host` is the same role, never a\n * replace that would delete, under `destroy`, the role it had just written.\n */\nexport const foldName = (path: string): string =>\n path.replace(/[^/]+$/, (name) => name.toLowerCase());\n\n/**\n * `diff`'s first step, before `isResolved(news)`: the move from the identity this resource last\n * wrote or tried to the declared one, or undefined when both name the same object or either is not\n * known yet. ⛔ Fails the plan when the new identity is already taken (`judgeMove`).\n *\n * ★ `olds` STANDS IN FOR `output` WHILE A CREATE OR A REPLACEMENT IS UNFINISHED, which is what\n * catches reverting a move whose new generation failed (rename.ts, `judgeMove`).\n */\nexport const judgeRename = <A>(\n identity: Identity<A>,\n olds: unknown,\n news: unknown,\n output: A | undefined,\n) =>\n judgeMove(\n identity.family,\n output === undefined ? identity.declared(olds) : identity.recorded(output),\n identity.declared(news),\n identity.pathOf ?? ((path) => path),\n identity.key,\n );\n\n/**\n * `reconcile`'s first step: an `update` whose prior attributes name another object dies before any\n * read or write (`refuseMovedUpdate`). Only reached when the diff could not see the new identity.\n */\nexport const guardRename = <A>(\n identity: Identity<A>,\n news: unknown,\n output: A | undefined,\n): Effect.Effect<void> => {\n if (output === undefined) return Effect.void;\n const from = identity.recorded(output);\n const to = identity.declared(news);\n return to !== undefined && isMoved(from, to, identity.key) === true\n ? refuseMovedUpdate(identity.family, from, to)\n : Effect.void;\n};\n",
28
- "/**\n * Rename safety for the families whose identity is a name, a mount and a name, or a catalog key:\n * the primitives. rename-identity.ts builds each family's diff and reconcile step from them, and\n * REPLACE.md has the audit and what each answer does.\n *\n * ⛔ THE BUG THIS CLOSES, REPRODUCED 2026-09-21 AGAINST alchemy@2.0.0-beta.79's OWN PLAN AND APPLY\n * (fake-stack.ts): a Bao.Policy deployed as `old`, then redeclared as `new` under\n * `RemovalPolicy.destroy()`, planned `update` and left BOTH policies live. diff read the NEW\n * path, found nothing, answered `update`, and reconcile wrote the new object. The old one stayed\n * live under no state record, so no later plan would mention it, and not even `destroy` could\n * remove it.\n * ★ A CHANGED IDENTITY IS A DIFFERENT OBJECT, SO THE ANSWER IS `replace`. Create-first\n * (`deleteFirst` false): the new path never collides with the old, the new generation is written,\n * dependents are updated in the same graph, and only then is the old generation deleted. The\n * engine hands that delete the OLD generation's attributes (Apply.ts deleteOldGenerations and the\n * GC pass both pass `output: old.attr`), and every delete here reads `output`, never `news`.\n * ⛔ A new path that collides with ANOTHER live object is refused at plan instead (`judgeMove`).\n * ⚠️ UNDER `retain` THE OLD OBJECT STAYS LIVE. Apply.ts:2164-2173 skips the old generation's delete\n * and logs \"Retaining replaced resource (removal policy: retain)\". The plan still says `replace`\n * and the apply says what it kept, so it is no longer silent, but the old object is unmanaged\n * from then on. Remove it by hand, or opt into `RemovalPolicy.destroy()`.\n */\nimport * as Effect from 'effect/Effect';\nimport { baoRead } from './bao-http.ts';\n\nconst exact = (identity: string): string => identity;\n\n/**\n * A string prop of a diff's `news`, once that one prop is resolved; `undefined` while it is still an\n * Output of a changing upstream (a function-typed proxy) or an Effect.\n *\n * ★ THE IDENTITY IS JUDGED BEFORE `isResolved(news)`. That guard returns `undefined` when ANY prop is\n * pending, and the engine then falls back to `update` (Plan.ts, `havePropsChanged`). A rename that\n * lands in the same deploy as a pending `fragments` or `policies` Output would slip through as\n * `update`, which is the orphan again. launchd/host-effect.ts reads its identity the same way.\n */\nexport const declaredString = (news: unknown, key: string): string | undefined => {\n if (typeof news !== 'object' || news === null) return undefined;\n const value: unknown = (news as Record<string, unknown>)[key];\n return typeof value === 'string' ? value : undefined;\n};\n\n/** True while an optional prop is declared but is not yet a value: an Output of a changing upstream. */\nexport const isPendingProp = (news: unknown, key: string): boolean => {\n if (typeof news !== 'object' || news === null) return false;\n const value: unknown = (news as Record<string, unknown>)[key];\n return value !== undefined && typeof value !== 'string';\n};\n\n/**\n * An optional string prop: `fallback` when it is absent, undefined while it is still an Output.\n * ⚠️ Not `declaredString(…) ?? fallback`, which would read a pending mount as the default mount.\n */\nexport const declaredOr = (news: unknown, key: string, fallback: string): string | undefined =>\n isPendingProp(news, key) ? undefined : (declaredString(news, key) ?? fallback);\n\n/**\n * A role's API path from a diff's `news`, once both `mount` and `name` are resolved. `defaultMount`\n * is what an absent `mount` means; without one, an absent mount is unknown.\n */\nexport const declaredRolePath = (\n news: unknown,\n rolePath: (mount: string, name: string) => string,\n defaultMount?: string,\n): string | undefined => {\n const mount =\n defaultMount === undefined\n ? declaredString(news, 'mount')\n : declaredOr(news, 'mount', defaultMount);\n const name = declaredString(news, 'name');\n return mount === undefined || name === undefined ? undefined : rolePath(mount, name);\n};\n\n/**\n * How OpenBao keys an ACL policy: trimmed and lowercased. openbao v2.6.2\n * vault/policy/policy_store.go:698-700 (`sanitizeName`), applied by SetPolicy (:268), GetPolicy\n * (:378) and DeletePolicy (:562).\n *\n * ⛔ SO `Admin` → `admin` IS THE SAME POLICY, NOT A RENAME. A `replace` there would write it, and then,\n * under `destroy`, delete the old generation, which is that same policy. Every grant it carries\n * would be revoked by a change of case.\n */\nexport const policyKey = (name: string): string => name.trim().toLowerCase();\n\n/**\n * Whether the declared identity names a different object than the one in state: `true` → moved (the\n * diff asks `judgeMove`, which also reads the target); `false` → the same object; `undefined` → not\n * knowable yet, because the declared side is still an Output. `key` is how the SERVER keys the object (`policyKey`); the default is exact,\n * which is right for a mount path (vault/routing/router.go folds no case) and for both plugins'\n * roles (each stores `roles/<name>` verbatim).\n *\n * ⛔ NEVER `replace` ON AN UNKNOWN IDENTITY. The Output may resolve to the same path, and a replace\n * onto the same path deletes, under `destroy`, the object it has just written. The diff defers\n * instead. If the engine then plans `update` and the identity turns out to have changed,\n * `refuseMovedUpdate` stops reconcile before it writes anything.\n */\nexport const isMoved = (\n stored: string,\n declared: string | undefined,\n key: (identity: string) => string = exact,\n): boolean | undefined => (declared === undefined ? undefined : key(stored) !== key(declared));\n\n/**\n * The diff's first question, asked before `isResolved(news)`: the move from the identity this\n * resource last wrote or tried (`tried`) to the declared one, or undefined when both name the same\n * object or either is still unknown. `pathOf` is the API path an identity is read at.\n *\n * ⛔ A MOVE ONTO AN OBJECT THAT ALREADY EXISTS FAILS THE PLAN. MEASURED 2026-09-21 through the engine\n * (rename-occupied.test.ts): two policies that swapped names under `RemovalPolicy.destroy()` each\n * planned `replace`, each new generation wrote over the other's live policy, and each old\n * generation's delete then removed the name the other had just written. The deploy was green and\n * both policies were gone, every grant revoked. A shift (a → b while b → c), and a move onto the\n * name of a resource leaving the stack, were measured ending the same way. So was reverting a\n * move whose new generation failed: the old generation still holds the name, and its delete runs\n * after the revert has rewritten it. That is why `tried` falls back to the props of an unfinished\n * write.\n * ⚠️ THE DIFF CANNOT SEE THE REMOVAL POLICY, SO THIS REFUSES UNDER `retain` TOO, where a swap, or a\n * move back onto a retained old generation, would have been harmless. The cost is a move in two\n * deploys through a free name, or removing the target by hand. The alternative is a green deploy\n * that deletes what it has just written.\n * ★ ONE PLAN-TIME READ, OF A PATH THE NEW GENERATION'S RECONCILE READS ANYWAY. A 404, a missing mount\n * included, is free; a refused read fails the plan, as any other diff read does.\n */\nexport const judgeMove = (\n family: string,\n tried: string | undefined,\n declared: string | undefined,\n pathOf: (identity: string) => string,\n key: (identity: string) => string = exact,\n) =>\n Effect.gen(function* () {\n if (tried === undefined || declared === undefined || key(tried) === key(declared)) {\n return undefined;\n }\n if ((yield* baoRead(pathOf(declared))) === undefined) return { from: tried, to: declared };\n return yield* Effect.die(\n new Error(\n `${family}: ${tried} → ${declared} would land on an object that already exists at ` +\n `${declared}. Under RemovalPolicy.destroy() a resource moving off that name (a swap, a ` +\n 'shift, or a reverted move that did not finish) deletes it after this one writes it. ' +\n 'Nothing was written. Move through a name nothing holds, in two deploys, or remove ' +\n `${declared} by hand first.`,\n ),\n );\n });\n\n/**\n * Reconcile's guard: an `update` whose prior attributes name another object.\n *\n * ★ REACHED ONLY WHEN THE DIFF COULD NOT SEE THE NEW IDENTITY at plan time. A fresh create, and the\n * new generation of a `replace`, both reach reconcile with `output` undefined (Apply.ts passes\n * `output: attr`, which is empty for a new generation). An `update` reaches it with the previous\n * generation's attributes.\n * ★ THE FAILED DEPLOY SETTLES ITSELF. Apply has already committed the row as `updating`, with the new\n * props and the OLD attributes. By the next plan the upstream Output has landed, so the diff sees\n * both names and answers `replace` (or refuses, if the new name is already taken: `judgeMove`).\n * The old object is then deleted, or retained, by the removal policy, with no hand repair.\n */\nexport const refuseMovedUpdate = (family: string, from: string, to: string) =>\n Effect.die(\n new Error(\n `${family}: planned as an update, but its identity moved from ${from} to ${to}. Writing ` +\n `${to} now would leave ${from} live with no state record. Nothing was written. Run the ` +\n 'deploy again: once the value resolves at plan time it plans as a replace.',\n ),\n );\n",
31
+ "import { readPath } from './auth-role-form.ts';\nimport { authRoleExists } from './auth-role-wire.ts';\nimport { declaredString, judgeMoveWith } from './rename.ts';\nimport { foldName, nameIdentity } from './rename-identity.ts';\n\nexport const authRoleIdentity = nameIdentity<{ readonly name: string }>(\n 'Bao.AuthRole',\n readPath,\n foldName,\n);\n\n/** All occupied-name reads share the SDK's typed absence and refusal behavior. */\nexport const judgeAuthRoleRename = (\n olds: unknown,\n news: unknown,\n output: { readonly name: string } | undefined,\n) =>\n judgeMoveWith(\n 'Bao.AuthRole',\n output === undefined ? declaredString(olds, 'name') : output.name,\n declaredString(news, 'name'),\n authRoleExists,\n foldName,\n );\n",
29
32
  "/**\n * Refuse to plan against the wrong vault: assert the `cluster_name` and namespace a stack expects\n * BEFORE any Bao.* resource reads or writes.\n *\n * ⛔ WHY IT EXISTS. A `BAO_ADDR` left exported for one vault (or a `BAO_AGENT_ADDR`, which wins)\n * would otherwise apply a stack written for another vault to it, and every family here would\n * plan CREATEs against the wrong server with a clean conscience (the estate's site-config plan,\n * \"Identity checks on every live plan\").\n * A missing `BAO_NAMESPACE` does the same thing one level down: the stack lands in root.\n *\n * ★ `sys/health`, UNAUTHENTICATED, WITH NO TOKEN AND NO NAMESPACE HEADER. READ FROM openbao v2.6.2:\n * · http/sys_health.go:143-165 — `cluster_name` and `cluster_id` are filled ONLY while unsealed,\n * and the body is top-level JSON, not wrapped in `data`.\n * · http/handler.go:108-124, :405-411 — `health` is a root-only API: a request carrying\n * `X-Vault-Namespace` is answered 400 \"operation unavailable in namespaces\". So the header is\n * stripped for this one call, whatever BAO_NAMESPACE says.\n * · The query asks for 200 when sealed, uninitialised or standby (`sealedcode`, `uninitcode`,\n * `standbyok`, :78-110), so the body is always there to read and the refusal can say WHICH.\n * ⛔ NO TOKEN IS SENT. Until this check passes, the server has not even claimed to be ours, and a\n * token sent to the wrong server is a token handed over.\n * ⚠️ IT CATCHES A MISTARGET, NOT AN IMPOSTOR (review 2026-09-21). `cluster_name` is answered to\n * anyone, unauthenticated, so a hostile server can echo the expected one; passing proves the\n * address is configured right, never who answers. TLS to a trusted certificate is what\n * authenticates the server — keep an https BAO_ADDR on anything that is not loopback or a socket.\n * ★ THE NAMESPACE IS CHECKED TWICE. Locally first: the namespace every later call will send (the\n * same bao-address.ts resolution) must BE the expected one. Then remotely: unauthenticated\n * `sys/internal/ui/mounts` with that namespace header answers 200 when the namespace exists and\n * 404 \"namespace not found\" when it does not (vault/request_handling.go:607-612; the path is in\n * the system backend's Unauthenticated list, vault/logical_system.go:95). Only the status is read.\n * REASONED FROM SOURCE, not measured against a live server.\n * ⚠️ IT PROVES THE CLUSTER, NOT THE NODE. A standby answers with the cluster's name, which is the\n * point: a standby forwards to the same vault.\n */\nimport * as Effect from 'effect/Effect';\nimport * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { type BaoEnvironment, resolveAddress } from './bao-address.ts';\nimport { BaoEnv, baoCall } from './bao-http.ts';\nimport { canonicalNamespace, envNamespace, namespaceLabel } from './bao-namespace.ts';\nimport type { BaoError } from './bao-status.ts';\n\n/** `input` a blank expectation · `mismatch` the wrong vault · `unconfirmed` could not tell · `unreachable` no answer. */\nexport type BaoIdentityFailure = 'input' | 'mismatch' | 'unconfirmed' | 'unreachable';\n\n/** ⛔ Every message starts `REFUSING:`, and none carries a token — only the address and names. */\nexport class BaoIdentityError extends Error {\n constructor(\n readonly reason: BaoIdentityFailure,\n detail: string,\n ) {\n super(`REFUSING: ${detail}`);\n this.name = 'BaoIdentityError';\n }\n}\n\nexport interface BaoIdentityExpected {\n /** The vault's `cluster_name` (server config `cluster_name`, or the one generated at init). */\n readonly clusterName: string;\n /** The namespace the stack targets: `team-a`, or `''` / `root` for the root namespace. */\n readonly namespace: string;\n}\n\n/** What the vault said about itself once every check passed. */\nexport interface BaoIdentity {\n /** The resolved address, without any token. */\n readonly address: string;\n readonly clusterName: string;\n readonly clusterId: string;\n readonly version: string;\n /** Canonical: `''` is root. */\n readonly namespace: string;\n}\n\nexport const HEALTH_PATH = 'sys/health?standbyok=true&sealedcode=200&uninitcode=200';\nexport const NAMESPACE_PROBE_PATH = 'sys/internal/ui/mounts';\n\nconst addressOf = (env: BaoEnvironment) => {\n const address = resolveAddress(env);\n return address.socket === undefined ? address.base : `unix://${address.socket}`;\n};\n\nconst unreachable =\n (address: string, what: string) =>\n (error: BaoError): BaoIdentityError =>\n new BaoIdentityError('unreachable', `${address} did not answer ${what}: ${error.message}`);\n\nconst text = (value: unknown) => (typeof value === 'string' ? value : '');\n\n/** Read a health body into the one question asked of it. Pure, for the tests. */\nexport const checkHealth = (\n address: string,\n expectedCluster: string,\n body: Record<string, unknown> | undefined,\n): { readonly clusterId: string; readonly version: string } | BaoIdentityError => {\n if (body === undefined || typeof body['sealed'] !== 'boolean') {\n return new BaoIdentityError(\n 'unconfirmed',\n `${address} answered sys/health, but not as OpenBao.`,\n );\n }\n if (body['initialized'] === false) {\n return new BaoIdentityError('unconfirmed', `${address} is not initialised.`);\n }\n if (body['sealed'] === true) {\n return new BaoIdentityError(\n 'unconfirmed',\n `${address} is sealed, and a sealed vault does not report its cluster_name.`,\n );\n }\n const clusterName = text(body['cluster_name']);\n if (clusterName !== expectedCluster) {\n return new BaoIdentityError(\n 'mismatch',\n `${address} answers as cluster \\`${clusterName || '(none)'}\\`, but this stack expects ` +\n `\\`${expectedCluster}\\`. Check BAO_ADDR and BAO_AGENT_ADDR (the agent address wins).`,\n );\n }\n return { clusterId: text(body['cluster_id']), version: text(body['version']) };\n};\n\n/**\n * The check, as an Effect under BaoEnv (process.env unless provided). Fails with BaoIdentityError\n * and nothing else.\n */\nexport const assertBaoIdentityEffect = (\n expected: BaoIdentityExpected,\n): Effect.Effect<BaoIdentity, BaoIdentityError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const env = yield* BaoEnv;\n const address = addressOf(env);\n const clusterName = expected.clusterName.trim();\n if (clusterName === '') {\n return yield* Effect.fail(\n new BaoIdentityError('input', 'clusterName is empty, so there is nothing to compare.'),\n );\n }\n const namespace = canonicalNamespace(expected.namespace);\n const sent = envNamespace(env);\n if (sent !== namespace) {\n return yield* Effect.fail(\n new BaoIdentityError(\n 'mismatch',\n `BAO_NAMESPACE resolves to \\`${namespaceLabel(sent)}\\`, but this stack expects ` +\n `\\`${namespaceLabel(namespace)}\\`.`,\n ),\n );\n }\n\n const anonymous = { ...env, BAO_NAMESPACE: '', BAO_TOKEN: '' };\n const body = yield* baoCall('read', 'GET', HEALTH_PATH).pipe(\n Effect.provideService(BaoEnv, anonymous),\n Effect.mapError(unreachable(address, 'sys/health')),\n );\n const health = checkHealth(address, clusterName, body);\n if (health instanceof BaoIdentityError) return yield* Effect.fail(health);\n\n if (namespace !== '') {\n const scoped = { ...env, BAO_NAMESPACE: namespace, BAO_TOKEN: '' };\n const probe = yield* baoCall('read', 'GET', NAMESPACE_PROBE_PATH).pipe(\n Effect.provideService(BaoEnv, scoped),\n Effect.mapError(unreachable(address, `the namespace probe for \\`${namespace}\\``)),\n );\n if (probe === undefined) {\n return yield* Effect.fail(\n new BaoIdentityError(\n 'mismatch',\n `cluster \\`${clusterName}\\` at ${address} has no namespace \\`${namespace}\\`.`,\n ),\n );\n }\n }\n return { address, clusterName, namespace, ...health };\n });\n\n/**\n * `assertBaoIdentityEffect` for a plain script. `env` defaults to `process.env`, read at call time.\n * ★ Rejects with the BaoIdentityError itself (Effect.runPromise, as in approle-login.ts).\n *\n * await assertBaoIdentity({ clusterName: 'vault-example', namespace: 'team-a' });\n */\nexport const assertBaoIdentity = (\n input: BaoIdentityExpected & { readonly env?: BaoEnvironment },\n): Promise<BaoIdentity> => {\n const effect = assertBaoIdentityEffect(input);\n const scoped =\n input.env === undefined ? effect : Effect.provideService(effect, BaoEnv, input.env);\n return Effect.runPromise(scoped.pipe(Effect.provide(FetchHttpClient.layer)));\n};\n",
30
33
  "/**\n * Namespace spellings, made comparable. `homeflare`, `/homeflare/` and `homeflare/` are one\n * namespace to OpenBao, and `root` (or nothing) is the root namespace.\n *\n * ★ READ FROM openbao v2.6.2: namespace.Canonicalize trims the leading slash and appends a trailing\n * one, and ResolveNamespaceFromRequest (vault/namespace_store.go:1573-1598) re-routes a header\n * that is literally `root/` to the root namespace. A namespace's own `namespace_path` in an API\n * answer is that canonical form: `''` for root, `a/b/` below it (vault/login_mfa.go\n * mfaConfigToMap and mfaLoginEnforcementConfigToMap).\n */\nimport { type BaoEnvironment, resolveAddress } from './bao-address.ts';\nimport { trimSlashes } from './mount-path.ts';\n\n/** The bare name: no leading or trailing slash, and `''` for the root namespace. */\nexport const canonicalNamespace = (namespace: string | undefined): string => {\n const bare = trimSlashes((namespace ?? '').trim());\n return bare === 'root' ? '' : bare;\n};\n\n/** OpenBao's `namespace_path` rendering of the same namespace: `''` or `a/b/`. */\nexport const namespacePath = (namespace: string | undefined): string => {\n const bare = canonicalNamespace(namespace);\n return bare === '' ? '' : `${bare}/`;\n};\n\n/** The namespace every call under `env` targets, canonical. */\nexport const envNamespace = (env: BaoEnvironment): string =>\n canonicalNamespace(resolveAddress(env).namespace);\n\n/** How a namespace reads in a message: `root` rather than an empty pair of backticks. */\nexport const namespaceLabel = (namespace: string): string =>\n namespace === '' ? 'root' : namespace;\n",
31
34
  "/**\n * A role on one of the six Cloudflare secrets-engine mounts — what one consumer may mint: the\n * Cloudflare policy its tokens carry and the lease bounds they get. METADATA ONLY.\n *\n * ★ THE PORT OF apply-roles.py's WRITE. roles.yaml expands to these (cloudflare-roles-expand.ts),\n * and what used to be `bao write <mount>/roles/<name> ttl= max_ttl= description= policies=` is\n * reconcile below. The props name permission groups; CloudflarePermissionGroups turns them into\n * IDs at diff and reconcile time.\n *\n * ⛔ NO SECRET IN PROPS OR ATTRIBUTES — see cloudflare-role-form.ts. ⛔ AND ISSUANCE IS NOT THIS\n * RESOURCE: `<mount>/creds/<name>` returns a LIVE Cloudflare token, and a token declared as a\n * resource would outlive its lease in Alchemy's unencrypted state (proxmox-role.ts has the four\n * places it would land). This declares the door; minting is a runtime call.\n *\n * ★ `defaultRemovalPolicy: 'retain'` — deleting a role breaks every consumer that mints from it,\n * and apply-roles.py never deleted one either: an unexplained role was reported UNTRACKED and\n * left alone (apply-roles.py:190-196). Opt in with `.pipe(RemovalPolicy.destroy())`.\n */\nimport { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport { groupKey, scopeOfResource } from './cloudflare-group-scope.ts';\nimport { CloudflarePermissionGroups, type GroupRef } from './cloudflare-permission-groups.ts';\nimport { resolvePolicies } from './cloudflare-policy.ts';\nimport {\n type BaoCloudflareRoleAttributes,\n type BaoCloudflareRoleProps,\n attributesOf,\n differences,\n refusalOf,\n rolePath,\n writeBody,\n} from './cloudflare-role-form.ts';\nimport {\n deleteCloudflareRole,\n readCloudflareRole,\n writeCloudflareRole,\n} from './cloudflare-role-wire.ts';\nimport { guardRename, judgeRename, roleIdentity } from './rename-identity.ts';\n\nexport type { BaoCloudflareRoleAttributes, BaoCloudflareRoleProps };\n\n/**\n * ⚠️ CloudflarePermissionGroups IS NOT A REQUIREMENT OF THE RESOURCE. The provider takes it once, when\n * it is built (`yield* CloudflarePermissionGroups` below), and alchemy.run.ts supplies it to the\n * provider layer with `Layer.provide`. Listing it here as well made it a requirement of the STACK\n * body, which Alchemy only lets name its own provider and stack services — tsc refused the wiring.\n */\nexport interface BaoCloudflareRole extends Resource<\n 'Bao.CloudflareRole',\n BaoCloudflareRoleProps,\n BaoCloudflareRoleAttributes,\n never,\n HttpClient.HttpClient\n> {}\n\nexport const BaoCloudflareRole = Resource<BaoCloudflareRole>('Bao.CloudflareRole', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** Exact: a trailing `/` on the mount is the same path (`rolePath` trims it). */\nconst IDENTITY = roleIdentity<BaoCloudflareRoleAttributes>('Bao.CloudflareRole', rolePath);\n\nexport const BaoCloudflareRoleProvider = () =>\n Provider.effect(\n BaoCloudflareRole,\n Effect.gen(function* () {\n const groups = yield* CloudflarePermissionGroups;\n\n /**\n * The declaration with IDs. ⛔ A name that does not resolve fails here — never a guess.\n *\n * ⛔ ONE REF PER (NAME, SCOPE), NOT PER NAME. The entry's resource is what says which scope\n * its groups are gated at, so a role whose zone entry and account entry name one group asks\n * for both ids; deduplicating by name alone would ask for one and use it for both.\n */\n const resolved = (props: BaoCloudflareRoleProps) =>\n Effect.gen(function* () {\n const refs = new Map<string, GroupRef>();\n for (const policy of props.policies) {\n /** ⛔ THE SAME PREFERENCE resolvePolicies MAKES — ask for the id the entry will use. */\n const scope = policy.scope ?? scopeOfResource(policy.resource);\n for (const name of policy.groups) refs.set(groupKey(name, scope), { name, scope });\n }\n const ids = yield* groups.resolve(props.mount, [...refs.values()]);\n const { missing, policies } = resolvePolicies(props.policies, ids);\n if (missing.length > 0) {\n return yield* Effect.die(\n new Error(\n `Bao.CloudflareRole ${rolePath(props.mount, props.name)}: groups ` +\n `${missing.join(', ')} came back unresolved from a lookup that reported success.`,\n ),\n );\n }\n return policies;\n });\n\n return BaoCloudflareRole.Provider.of({\n /**\n * ⛔ `<mount>/roles` IS NOT A LIST OF THINGS THIS OWNS. MEASURED 2026-09-14: 586 live roles,\n * 585 of which roles.yaml declares — and the 586th, cloudflare-<account>-platform/\n * alchemy-os-create, is exactly the role nobody has decided about. Returning it would\n * invite Alchemy to adopt, then delete, a role that may be someone's live credential.\n */\n list: () => Effect.succeed([]),\n\n /** ⛔ Stateless: `Unowned` unless our own interrupted create made it (ownership/probe.ts). */\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const live = yield* readCloudflareRole(olds.mount, olds.name);\n const found = live === undefined ? undefined : attributesOf(olds, live);\n const ours = Effect.gen(function* () {\n if (live === undefined || refusalOf(olds) !== undefined) return false;\n return differences(olds, yield* resolved(olds), live).length === 0;\n });\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE ROLE, NOT THE STORED DIGEST. A policy widened by hand in the\n * OpenBao UI changes what every future token can do while the digest in Postgres still\n * says everything is fine.\n *\n * ⛔ A NEW `mount` OR `name` IS A `replace`, DECIDED BEFORE ANY OTHER READ (rename.ts). Until\n * 2026-09-21 this read the new path, found it absent and planned `update`: reconcile wrote\n * the new role and the old one stayed live and mintable under no state record. ⛔ A move\n * onto a role that already exists fails the plan (`judgeMove`).\n * ⚠️ UNDER THE DEFAULT `retain` THE OLD ROLE STILL MINTS for any token whose policy reaches its\n * `creds/<name>`. Under `destroy` every consumer still minting from the old path fails at\n * the delete, so move them in the same PR (REPLACE.md).\n * ★ A STACK THAT PUTS mount AND name IN THE LOGICAL ID never reaches this branch\n * (homeflare-openbao's declareCloudflareRoles does). There a rename is a new logical id,\n * and the old id leaves the stack as an orphan delete, which `retain` keeps live.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n const move = yield* judgeRename(IDENTITY, olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) return { action: 'replace' } as const;\n if (!isResolved(news)) return undefined;\n /**\n * ⚠️ A DECLARATION reconcile WOULD REFUSE MUST NEVER PLAN AS noop — route it to reconcile,\n * which says why (pki-role.ts has the same guard).\n */\n if (refusalOf(news) !== undefined) return { action: 'update' } as const;\n const policies = yield* resolved(news);\n const live = yield* readCloudflareRole(news.mount, news.name);\n if (live === undefined) return { action: 'update' } as const;\n return differences(news, policies, live).length === 0\n ? ({ action: 'noop' } as const)\n : ({ action: 'update' } as const);\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n const path = rolePath(news.mount, news.name);\n // ⛔ An `update` across a move the diff could not see — refused before any write.\n yield* guardRename(IDENTITY, news, output);\n const refusal = refusalOf(news);\n if (refusal !== undefined) {\n return yield* Effect.die(new Error(`Bao.CloudflareRole ${path}: ${refusal}.`));\n }\n const policies = yield* resolved(news);\n const live = yield* readCloudflareRole(news.mount, news.name);\n if (live !== undefined) {\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.CloudflareRole ${path}`);\n }\n /**\n * ⛔ ADOPTING A ROLE THAT ALREADY MATCHES MUST NOT REWRITE IT. Alchemy's `adopted` action\n * routes through reconcile (policy.ts has the Apply.ts reading), so without this guard\n * the first deploy would PUT all 585 roles — byte-identical in the happy case, and a\n * silent rewrite of live grants the moment the port disagreed with production.\n */\n if (live === undefined || differences(news, policies, live).length > 0) {\n yield* writeCloudflareRole(news.mount, news.name, writeBody(news, policies));\n }\n const after = yield* readCloudflareRole(news.mount, news.name);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(`Bao.CloudflareRole ${path}: the write succeeded but the role is absent.`),\n );\n }\n /**\n * ⛔ THE WRITE IS NOT TRUSTED, IT IS RE-READ. The engine re-marshals `policies` from structs\n * (path_roles.go:199-207), so a document it stored differently from what was sent — a\n * dropped group, a merged resource — shows up here as a named field, not as a green\n * deploy followed by a 403 at mint time.\n */\n const left = differences(news, policies, after);\n if (left.length > 0) {\n return yield* Effect.die(\n new Error(\n `Bao.CloudflareRole ${path}: wrote cleanly but reads back different in ` +\n `${left.map((d) => d.field).join(', ')}. Inspect the role before retrying.`,\n ),\n );\n }\n return attributesOf(news, after);\n }),\n\n /**\n * ⛔ DELETING A ROLE DOES NOT REVOKE THE TOKENS IT MINTED. They are leases on Cloudflare API\n * tokens and live to their own expiry, so this is an availability change for every\n * consumer of `creds/<name>`, never a containment action — to contain a leak, revoke the\n * lease. Idempotent: already gone is success (bao-status.ts).\n */\n delete: Effect.fn(function* ({ output }) {\n yield* deleteCloudflareRole(output.mount, output.name);\n return undefined;\n }),\n });\n }).pipe(Effect.map(provingResumes)),\n );\n",
@@ -61,9 +64,10 @@
61
64
  "/**\n * The form half of Bao.Plugin: props, the paths, the register body, and the equality that decides\n * whether a plan says `noop`. Split from plugin.ts the way mount-form.ts is.\n *\n * ★ THE CATALOG API, READ FROM openbao v2.6.2 — the docs AND the server, because they disagree:\n * · docs/api/system/plugins-catalog.mdx — `POST sys/plugins/catalog/:type/:name` registers with\n * `sha256`, `command`, `args`, `env`, `version`, `oci`; `GET` and `DELETE` take `?version=`, which\n * is REQUIRED to read a plugin registered with one. All three need `sudo`.\n * · vault/logical_system.go:515-576 handlePluginCatalogRead — answers `name`, `args`, `command`\n * (relative to plugin_directory), `sha256`, `builtin`, `version`, `oci`, `declarative`. ⚠️ The\n * docs' sample shows sha256 as BASE64; the server writes `hex.EncodeToString` (:561). Hex wins.\n * · vault/logical_system.go:441-513 handlePluginCatalogUpdate, and :615-628 getVersion — the\n * version is canonicalised to `\"v\" + semver.String()` before it is stored.\n */\nimport { sha256 as digestOf } from './digest.ts';\n\nexport type BaoPluginType = 'auth' | 'database' | 'secret';\n\nexport interface BaoPluginProps {\n /** Catalog name — what a mount's `type` names, e.g. `openbao-plugin-secrets-cloudflare`. */\n name: string;\n /** Catalog type. `secret` for a secrets engine, `auth` for an auth method. */\n type: BaoPluginType;\n /** Hex SHA-256 of the binary already sitting in plugin_directory. Case is normalised. */\n sha256: string;\n /** The binary's file name inside plugin_directory — a bare name, no path, no arguments. */\n command: string;\n /**\n * Canonical semver with its `v`, e.g. `v0.1.2`. ⚠️ When the binary reports its own version,\n * declare EXACTLY that one: any other is refused at write (\"plugin version mismatch\",\n * plugin_catalog.go setInternal), and none at all is filed under the reported one — see the ⚠️\n * on SELF_REPORTED in plugin-reconcile.ts.\n */\n version?: string;\n /** Arguments, in order. ⛔ Never a secret: they land in Alchemy state and in every catalog read. */\n args?: readonly string[];\n}\n\n/** ⛔ NO SECRET HERE — names, a hash, a file name, arguments and a digest. */\nexport interface BaoPluginAttributes {\n name: string;\n type: BaoPluginType;\n /** The canonical version the catalog stored, `''` when unversioned. Delete needs it. */\n version: string;\n sha256: string;\n command: string;\n args: readonly string[];\n /** True when the catalog answered with OpenBao's own builtin rather than a registration. */\n builtin: boolean;\n /** SHA-256 of the managed fields — safe to persist; see policy.ts. */\n digest: string;\n}\n\n/** Every prop resolved to what the register call will store. */\nexport type BaoPluginForm = Required<BaoPluginProps>;\n\nexport const resolve = (props: BaoPluginProps): BaoPluginForm => ({\n args: props.args ?? [],\n command: props.command,\n name: props.name,\n sha256: props.sha256.toLowerCase(),\n type: props.type,\n version: props.version ?? '',\n});\n\n/**\n * ⛔ THE VERSION MUST ALREADY BE CANONICAL, OR THE PLAN NEVER GOES GREEN. The server stores\n * `\"v\" + semver.String()` (getVersion, :615-628), so `1.2.0`, `v1.2` and `v01.2.0` are all\n * written as `v1.2.0`, read back as `v1.2.0`, and compared unequal to the declaration forever.\n * Refusing anything but the canonical spelling is cheaper than reimplementing go-version.\n */\nconst CANONICAL_VERSION =\n /^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$/;\n\n/** Everything wrong with the declaration, or `[]`. Checked before any request. */\nexport const problems = (form: BaoPluginForm): readonly string[] => {\n const found: string[] = [];\n // ⚠️ The route is `(?P<name>.+)` (logical_system_paths.go:1697), so a `/` would nest the storage\n // key; the server refuses `..` in a name (plugin_catalog.go Set).\n if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(form.name) || form.name.includes('..')) {\n found.push(`name ${JSON.stringify(form.name)} is not a plain catalog name`);\n }\n if (!/^[0-9a-f]{64}$/.test(form.sha256)) found.push('sha256 is not 64 hex characters');\n /**\n * ⛔ A BARE FILE NAME. The server splits `command` on spaces and keeps the rest as args\n * (handlePluginCatalogUpdate :487-495), and refuses a binary whose directory is not\n * plugin_directory itself (plugin_catalog.go setInternal, `symAbs != c.directory`) — so a\n * path or an argument here either fails the write or reads back as something else.\n */\n if (!/^[A-Za-z0-9][A-Za-z0-9._+-]*$/.test(form.command) || form.command.includes('..')) {\n found.push(`command ${JSON.stringify(form.command)} is not a bare file name`);\n }\n if (form.version !== '' && !CANONICAL_VERSION.test(form.version)) {\n found.push(`version ${JSON.stringify(form.version)} is not canonical semver like v1.2.0`);\n }\n // ⚠️ `+builtin` metadata is reserved; the server refuses it (handlePluginCatalogUpdate :462-464).\n if (/\\+builtin/.test(form.version)) found.push('version metadata `builtin` is reserved');\n return found;\n};\n\n/** `?version=` only when there is one — an unversioned plugin is read without it. */\nconst versionQuery = (version: string) =>\n version === '' ? '' : `?version=${encodeURIComponent(version)}`;\n\n/** `sys/plugins/catalog/<type>/<name>` — register addresses the plugin here. */\nexport const catalogPath = (type: BaoPluginType, name: string): string =>\n `sys/plugins/catalog/${type}/${name}`;\n\n/** Read and delete address one VERSION of the plugin. */\nexport const versionedPath = (type: BaoPluginType, name: string, version: string): string =>\n `${catalogPath(type, name)}${versionQuery(version)}`;\n\n/**\n * The register body — the fields RegisterPluginInput sends (api v2.6.0 sys_plugins.go:186-204),\n * which is what `bao plugin register` sends.\n *\n * ★ `type` IS LEFT OUT OF THE BODY ON PURPOSE. The Go client puts it there as a NUMBER (PluginType\n * has no MarshalJSON), and the route's `type` capture is what the handler reads. The path says it.\n * ⛔ NO `env`, EVER. The catalog read never returns env (handlePluginCatalogRead's data map has no\n * such key), so a declared env could not be diffed, and what env exists to carry into a plugin\n * process is exactly what must not sit in Alchemy's unencrypted state. ⚠️ The register call is a\n * FULL REPLACE (setInternal builds a fresh entry), so an env someone set by hand is dropped by\n * the next write — which only happens when a managed field has drifted.\n */\nexport const registerBody = (form: BaoPluginForm): Record<string, unknown> => ({\n command: form.command,\n sha256: form.sha256,\n ...(form.args.length > 0 ? { args: form.args } : {}),\n ...(form.version === '' ? {} : { version: form.version }),\n});\n\nconst text = (value: unknown) => (typeof value === 'string' ? value : '');\n\n/** ⚠️ `args` is a Go slice, so an entry stored without any can read back `null` — the same as `[]`. */\nconst list = (value: unknown): readonly string[] =>\n Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === 'string') : [];\n\nexport const attributesOf = (\n form: BaoPluginForm,\n live: Record<string, unknown>,\n): BaoPluginAttributes => {\n const attrs = {\n name: form.name,\n type: form.type,\n version: text(live['version']),\n sha256: text(live['sha256']).toLowerCase(),\n command: text(live['command']),\n args: list(live['args']),\n builtin: live['builtin'] === true,\n };\n return { ...attrs, digest: digestOf(JSON.stringify(attrs)) };\n};\n\n/** ⚠️ ORDER MATTERS for args — they are an argv, not a set. */\nconst sameArgs = (want: readonly string[], have: readonly string[]) =>\n want.length === have.length && want.every((entry, index) => entry === have[index]);\n\n/** True when the catalog already holds exactly this registration. A builtin never matches. */\nexport const matches = (attributes: BaoPluginAttributes, form: BaoPluginForm): boolean =>\n !attributes.builtin &&\n attributes.version === form.version &&\n attributes.sha256 === form.sha256 &&\n attributes.command === form.command &&\n sameArgs(form.args, attributes.args);\n",
62
65
  "/**\n * Bao.Plugin's read and reconcile, as plain effects — split from plugin.ts so the refusals below can\n * be run against a fake server rather than only reasoned about.\n */\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport type { Claim } from '../ownership/adopt.ts';\nimport type { BaoError } from './bao-status.ts';\nimport {\n type BaoPluginAttributes,\n type BaoPluginForm,\n type BaoPluginProps,\n attributesOf,\n matches,\n problems,\n resolve,\n versionedPath,\n} from './plugin-form.ts';\nimport { readPluginData, registerPlugin } from './plugin-wire.ts';\n\ntype Entry = { readonly attributes: BaoPluginAttributes; readonly live: Record<string, unknown> };\n\n/** Live entry, plus the raw body — reconcile needs the raw half for `oci` and `declarative`. */\nexport const readEntry = (\n form: BaoPluginForm,\n): Effect.Effect<Entry | undefined, BaoError, HttpClient.HttpClient> =>\n Effect.map(readPluginData(form), (live) =>\n live === undefined ? undefined : { attributes: attributesOf(form, live), live },\n );\n\nconst refuse = (form: BaoPluginForm, message: string) =>\n Effect.die(\n new Error(`Bao.Plugin ${versionedPath(form.type, form.name, form.version)}: ${message}`),\n );\n\n/**\n * ⚠️ AN UNVERSIONED REGISTRATION OF A BINARY THAT REPORTS ITS OWN VERSION IS FILED UNDER THAT\n * VERSION. setInternal (plugin_catalog.go:1222-1228) takes the self-reported version when the\n * request names none, and the storage key carries it — so the unversioned read that follows finds\n * nothing, or finds an OLDER genuinely-unversioned entry. The Cloudflare engine reports one\n * (`framework.Backend.RunningVersion`). REASONED FROM SOURCE, not measured against a server.\n * ⚠️ THE WRITE HAS ALREADY LANDED when this fires, so the catalog holds a registration no state\n * record names. Declaring the reported version and deploying once with `--adopt` adopts it (same\n * sha256 and command, so reconcile matches and writes nothing); declaring a DIFFERENT version is\n * refused by the server itself (setInternal :1219-1221, \"plugin version mismatch\").\n * ⚠️ `--adopt`, NOT A SILENT RESUME (2026-09-21): the row this create left names the UNVERSIONED\n * entry, so it cannot prove the versioned one ours (docs/ownership.md).\n */\nconst SELF_REPORTED =\n 'the write succeeded but the read-back does not match. If the binary reports its own version, ' +\n 'OpenBao filed the registration under it (plugin_catalog.go setInternal) — declare `version` ' +\n 'as exactly the version the binary reports, and deploy once with --adopt: that adopts the ' +\n 'entry this write just made.';\n\n/**\n * Register when the live entry differs, then prove it by reading back. Dies on a refusal.\n * ⛔ `claim` (the provider passes it): a create never takes over an entry already registered.\n */\nexport const reconcilePlugin = (\n props: BaoPluginProps,\n claim?: Claim,\n): Effect.Effect<BaoPluginAttributes, BaoError, HttpClient.HttpClient> =>\n Effect.gen(function* () {\n const form = resolve(props);\n const bad = problems(form);\n if (bad.length > 0) return yield* refuse(form, bad.join('; '));\n\n const found = yield* readEntry(form);\n if (found !== undefined && claim !== undefined) {\n yield* claim(`Bao.Plugin ${versionedPath(form.type, form.name, form.version)}`);\n }\n if (found !== undefined && !matches(found.attributes, form)) {\n /**\n * ⛔ A DECLARATIVE OR OCI ENTRY BELONGS TO THE SERVER'S CONFIG FILE (`plugin` stanzas with\n * plugin_auto_register), which re-registers it on every plugin reload. An API write turns\n * it non-declarative, and the next reload then REFUSES the config entry: \"conflicts with\n * existing non-declarative plugin\" (plugin_catalog.go:333-336).\n */\n if (found.live['declarative'] === true || found.live['oci'] === true) {\n return yield* refuse(\n form,\n 'the live entry is declarative/OCI; manage it in server config.',\n );\n }\n /**\n * ⛔ AN UNVERSIONED WRITE OVER A BUILTIN SHADOWS IT FOR EVERY MOUNT OF THAT TYPE. The catalog\n * answered with OpenBao's own builtin (`builtin: true`), and get() returns an external entry\n * before it ever looks at builtins (plugin_catalog.go:982-1036). Register a versioned plugin\n * instead, which leaves the builtin where it is.\n */\n if (found.attributes.builtin) {\n return yield* refuse(form, 'this name is a builtin; an unversioned write would shadow it.');\n }\n }\n if (found === undefined || !matches(found.attributes, form)) yield* registerPlugin(form);\n\n // ⚠️ RE-READ AND COMPARE, never echo the declaration — see SELF_REPORTED above.\n const after = yield* readEntry(form);\n if (after === undefined || !matches(after.attributes, form)) {\n return yield* refuse(form, SELF_REPORTED);\n }\n return after.attributes;\n });\n",
63
66
  "/**\n * The OpenBao calls Bao.Plugin makes — read one catalog entry, register, deregister. Split from\n * plugin.ts so the calls can be pinned against a fake server, the way mount-wire.ts is.\n *\n * ★ ENDPOINTS, READ FROM openbao v2.6.2 api/sys_plugins.go (the client `bao plugin` uses) and the\n * handlers in vault/logical_system.go:\n * read GET sys/plugins/catalog/<type>/<name>[?version=] (GetPlugin, :159-183)\n * register PUT sys/plugins/catalog/<type>/<name> (RegisterPlugin, :212-228)\n * deregister DELETE sys/plugins/catalog/<type>/<name>[?version=] (DeregisterPlugin, :249-261)\n * (api/sys_plugins.go diffed identical between v2.6.0 and v2.6.2.)\n * ⚠️ ALL THREE NEED `sudo` ON THE PATH, not just the verb (docs/api/system/plugins-catalog.mdx). A\n * token without it reads as 403, which is an error here, never \"absent\".\n */\nimport type * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { baoDelete, baoRead, baoWrite } from './bao-http.ts';\nimport type { BaoError } from './bao-status.ts';\nimport {\n type BaoPluginForm,\n type BaoPluginType,\n catalogPath,\n registerBody,\n versionedPath,\n} from './plugin-form.ts';\n\n/**\n * One catalog entry, or undefined when the catalog has none at that name, type and version.\n *\n * ★ UNLIKE A MOUNT, A MISSING PLUGIN REALLY IS A 404. handlePluginCatalogRead returns `nil, nil` when\n * the catalog lookup finds nothing (vault/logical_system.go:545-547), and RespondErrorCommon turns\n * a nil READ response into 404 (sdk v2.6.2 logical/response_util.go:23-26). No second question is\n * needed, unlike the mount-table check in mount-wire.ts.\n * ⚠️ A BUILTIN ANSWERS TOO. With no external registration at an unversioned name, the catalog falls\n * through to OpenBao's own builtin of that name and type (plugin_catalog.go get, :1016-1036), which\n * reads back with `builtin: true` — present, but not a registration. plugin.ts decides what that\n * means.\n */\nexport const readPluginData = (\n form: BaoPluginForm,\n): Effect.Effect<Record<string, unknown> | undefined, BaoError, HttpClient.HttpClient> =>\n baoRead(versionedPath(form.type, form.name, form.version));\n\nexport const registerPlugin = (\n form: BaoPluginForm,\n): Effect.Effect<void, BaoError, HttpClient.HttpClient> =>\n baoWrite('PUT', catalogPath(form.type, form.name), registerBody(form));\n\n/**\n * ★ IDEMPOTENT ON THE SERVER. deleteInternal deletes the storage key whether or not it exists\n * (plugin_catalog.go:1272-1284) and the handler answers with no body, so a retried delete succeeds.\n * ⚠️ BUT A MISSING TYPED KEY FALLS BACK TO THE BARE NAME. When `<type>/<name>[/<version>]` is not\n * in storage, the same function deletes the key `<name>` instead — where registrations made\n * before plugin types existed live, whatever their type. A fresh 2.x vault has none; one\n * migrated from an old Vault may. REASONED FROM SOURCE, not run.\n * ⛔ AND THAT IS THE DANGER: NOTHING CHECKS WHETHER A MOUNT STILL USES THE PLUGIN. The same function\n * has no mount lookup at all, so deregistering the plugin a live mount runs succeeds. The running\n * process is not killed by it; the mount breaks the next time OpenBao has to START the plugin — a\n * reload, a restart, an unseal — long after the plan that did it. REASONED FROM SOURCE, not run.\n */\nexport const deregisterPlugin = (\n type: BaoPluginType,\n name: string,\n version: string,\n): Effect.Effect<void, BaoError, HttpClient.HttpClient> =>\n baoDelete(versionedPath(type, name, version));\n",
64
- "import { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport * as FileSystem from 'effect/FileSystem';\nimport * as Path from 'effect/Path';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport { sha256 } from './digest.ts';\nimport { isEmptyAssembly } from './policy-assembly.ts';\nimport { deletePolicy, policyPath, readPolicy, writePolicy } from './policy-wire.ts';\nimport { policyKey } from './rename.ts';\nimport { guardRename, judgeRename, nameIdentity } from './rename-identity.ts';\n\n/**\n * An OpenBao ACL policy, assembled from the HCL fragments that declare it.\n *\n * ★ WHY THIS EXISTS. The estate already hand-rolled both halves of what Alchemy provides:\n * five `apply-*.sh`/`apply-*.py` scripts converge OpenBao, and separate `check-*.sh`\n * gates compare live to repo and refuse on drift. That is `reconcile` and `diff` written\n * twice, in two languages, with nothing recording what was applied — and one of those\n * gates blocked a deploy today because its own path had rotted.\n *\n * ⛔ THERE IS NO `Bao.Secret`, AND THERE MUST NEVER BE ONE. Alchemy persists attributes to\n * its state store and does NOT encrypt them: StateEncoding.ts unwraps `Redacted` to\n * plaintext under a marker key, and nothing under alchemy/src/State encrypts. This\n * estate's state store is the `alchemy` Postgres database, which a nightly job dumps\n * (it enumerates EVERY non-template database), copies to a backup guest, and PBS backs up\n * from there. A KV value here would exist in four places, none of them OpenBao.\n *\n * So this declares the SHAPE AROUND secrets. Every attribute it stores is a name, a\n * count, or a hash.\n *\n * ⛔ EVERY PRIMITIVE IS ALCHEMY'S OR EFFECT'S, NOT NODE'S. An earlier cut of this file used\n * `node:child_process` + `promisify(execFile)` and `node:fs/promises`, which is\n * hand-rolling inside a bun + Effect codebase: it loses the Scope, the typed\n * PlatformError, and the Layer that makes the provider testable without a real vault.\n * ★ `CommandExecutor.run` was tried first and blocked read/diff: Alchemy passes a session\n * to reconcile/delete but NOT to read/diff (Provider.ts:258-289), so the fix was Alchemy's\n * OWN Docker pattern — `ChildProcessSpawner` + `ChildProcess.make`, which needs only a\n * Scope (Docker.ts:476-553). ★ SINCE 2026-09-14 THE CALLS ARE OpenBao's HTTP API through\n * Effect's `HttpClient` (bao-http.ts), which needs no session either, so read/diff still work.\n * FileSystem and Path come from `effect/*` directly — in Effect 4 they moved into core.\n */\nexport interface BaoPolicyProps {\n /** Policy name, as `sys/policies/acl/<name>` takes it. */\n name: string;\n /**\n * Directory of `*.hcl` fragments.\n *\n * ⚠️ CONCATENATED IN SORTED ORDER, EACH FOLLOWED BY A NEWLINE — byte-identical to\n * apply-agent-policy.sh, which is what wrote the live policy. Any other joining makes\n * the first plan report an update on a policy nobody changed.\n */\n fragments: string;\n}\n\nexport interface BaoPolicyAttributes {\n /** Policy name. */\n name: string;\n /** SHA-256 of the assembled HCL. The whole diff, and safe to persist. */\n digest: string;\n /** `path \"...\"` grants — the number apply-agent-policy.sh prints. */\n grants: number;\n /** Fragment files that produced it, so a plan reads like the directory. */\n parts: number;\n}\n\nexport interface BaoPolicy extends Resource<\n 'Bao.Policy',\n BaoPolicyProps,\n BaoPolicyAttributes,\n never,\n HttpClient.HttpClient | FileSystem.FileSystem | Path.Path\n> {}\n\n/**\n * ⛔ `retain` — DELETING A POLICY REVOKES EVERY GRANT IT CARRIES, and this is the ONLY family in\n * this package with live instances, so it is the only one where the default could ever fire.\n *\n * 🔴 IT WAS THE ONLY FAMILY WITHOUT IT. Every sibling passes `{ defaultRemovalPolicy: 'retain' }`\n * — auth-role.ts:37, mount.ts:40, pki-role.ts, proxmox-role.ts, ssh-role.ts — each with a ★\n * explaining what deletion destroys. This file has the same warning on its own `delete` handler\n * and did not carry the option, which is the worst possible combination: the danger is\n * documented and the guard is missing.\n * ⛔ WHAT THAT MEANT IN PRACTICE, on 2026-09-13: ten live policies are named in a `const` array\n * in alchemy.run.ts. Removing a name from that array orphans the resource, and without\n * `retain` the next deploy calls `bao policy delete` on it — including the 86-line policy that\n * decides what the agent working in this repo can reach. A one-word edit, no plan line saying\n * \"revoke\", and the grants are gone. The array grew from four names to ten that same day,\n * which multiplied the blast radius of a mistake nobody had guarded against.\n *\n * ⚠️ `retain` DOES NOT WEAKEN `delete`, WHICH STAYS FULLY IMPLEMENTED. The engine skips it for an\n * orphaned resource; a caller that means it opts in with `.pipe(RemovalPolicy.destroy())`. This\n * is Terraform's `prevent_destroy`, not a stubbed operation — a delete that silently did nothing\n * would lie to whoever read the plan.\n * ⚠️ `retain` ALSO KEEPS THE OLD GENERATION OF A RENAME. A new `name` plans `replace`, and under\n * `retain` the old policy is left live and unmanaged (rename.ts, REPLACE.md).\n */\nexport const BaoPolicy = Resource<BaoPolicy>('Bao.Policy', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** A policy is its name, keyed as OpenBao keys it (`policyKey`). */\nconst IDENTITY = nameIdentity<BaoPolicyAttributes>('Bao.Policy', policyPath, policyKey);\n\n/** `path \"...\"` grant count — the same number the apply script prints. */\nconst grantsOf = (hcl: string) => (hcl.match(/^path /gm) ?? []).length;\n\nconst attributesOf = (name: string, hcl: string, parts: number): BaoPolicyAttributes => ({\n name,\n digest: sha256(hcl),\n grants: grantsOf(hcl),\n parts,\n});\n\nexport const BaoPolicyProvider = () =>\n Provider.effect(\n BaoPolicy,\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n\n /** Assemble fragments exactly as apply-agent-policy.sh does. */\n const assemble = (dir: string) =>\n Effect.gen(function* () {\n const entries = (yield* fs.readDirectory(dir)).filter((f) => f.endsWith('.hcl')).sort();\n let joined = '';\n for (const f of entries) joined += `${yield* fs.readFileString(path.join(dir, f))}\\n`;\n return { joined, parts: entries.length };\n });\n\n return BaoPolicy.Provider.of({\n /**\n * ⛔ `bao policy list` IS NOT A LIST OF THINGS THIS OWNS. Every policy in the\n * namespace answers, including ones written by hand years ago. Returning them\n * would invite Alchemy to adopt — and then delete — policies it never created.\n */\n list: () => Effect.succeed([]),\n\n // ★ '' means genuinely absent (a 404); a refusal fails. policy-wire.ts has the history.\n // ⛔ With no attributes in state, a live policy is `Unowned` unless it is the one our own\n // interrupted create wrote: these fragments, byte for byte (ownership/probe.ts).\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const live = yield* readPolicy(olds.name);\n const found = live.length === 0 ? undefined : attributesOf(olds.name, live, 0);\n const ours = Effect.map(\n assemble(olds.fragments),\n (a) => sha256(a.joined) === found?.digest,\n );\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE POLICY, NOT THE STORED DIGEST. A policy edited in the\n * OpenBao UI is exactly the drift the check-* gates exist to catch, and a\n * provider that trusted its own state would report `noop` straight through it.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n /**\n * ⛔ A RENAMED POLICY IS A `replace`, DECIDED BEFORE ANY OTHER READ (rename.ts). Until\n * 2026-09-21 this read the new name, found nothing and planned `update`: the new policy\n * was written and the old one kept every grant under no state record. Names compare as\n * OpenBao keys them (`policyKey`), so a change of case is the same policy, never a\n * replace. ⛔ A rename onto a policy that already exists fails the plan (`judgeMove`).\n * ⚠️ UNDER THE DEFAULT `retain` THE OLD POLICY STAYS LIVE, GRANTS AND ALL, for every token,\n * role and group that still names it. Under `destroy` they lose those grants at the\n * delete, so a role outside this graph that names the old policy must move in the same\n * PR (REPLACE.md).\n */\n const move = yield* judgeRename(IDENTITY, olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) return { action: 'replace' } as const;\n // ⚠️ A prop can still be an unresolved Output or Config at plan time. Docker's\n // own providers guard with isResolved and skip rather than guess; a diff that\n // read a Config as a string would compare a placeholder to real HCL.\n if (!isResolved(news)) return undefined;\n const { joined } = yield* assemble(news.fragments);\n const live = yield* readPolicy(news.name);\n return live.length > 0 && sha256(live) === sha256(joined)\n ? ({ action: 'noop' } as const)\n : ({ action: 'update' } as const);\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n const name = news.name;\n // ⛔ An `update` across a rename the diff could not see — refused before any write.\n yield* guardRename(IDENTITY, news, output);\n const { joined, parts } = yield* assemble(news.fragments);\n /**\n * ⛔ AN EMPTY ASSEMBLY IS A REFUSAL, NOT AN EMPTY POLICY. `bao policy write` with\n * no paths SILENTLY REVOKES every grant the policy carries, for every token\n * bound to it — and a mistyped or moved fragments directory reads exactly like\n * a policy with nothing in it. This estate lost a deploy today to a directory\n * that moved; it must not lose a vault to one.\n */\n // ⛔ No FILES was the first guard; no GRANT is the real one — see policy-assembly.ts.\n if (isEmptyAssembly(parts, joined))\n return yield* Effect.die(\n new Error(\n `Bao.Policy ${name}: the fragments under ${news.fragments} carry no path grant ` +\n `(${String(parts)} file(s)). Writing it would revoke every grant the policy carries.`,\n ),\n );\n /**\n * ⛔ ADOPTING A POLICY THAT ALREADY MATCHES MUST NOT REWRITE IT. Alchemy's `adopted`\n * action is NOT a read — Apply.ts routes it down the same branch as `update` and calls\n * reconcile — so the first deploy after declaring the four policies this estate\n * already has would have run `bao policy write` over all four. Byte-identical in the\n * happy case, and a SILENT REWRITE OF LIVE GRANTS the moment the repo fragments have\n * drifted from what is deployed.\n *\n * ★ THE GUARD IS THE SAME EXPRESSION `diff` USES, deliberately: one definition of\n * \"settled\" for this resource, so the plan and the write can never disagree. The\n * sibling PVE provider does exactly this in pveOperations.reconcile.\n */\n const current = yield* readPolicy(name);\n if (current.length > 0)\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.Policy ${name}`);\n if (current.length > 0 && sha256(current) === sha256(joined)) {\n return attributesOf(name, joined, parts);\n }\n // ⚠️ In the request body, never on argv — see `writePolicy` for why the temp file went.\n yield* writePolicy(name, joined);\n return attributesOf(name, joined, parts);\n }),\n\n /**\n * ⛔ DELETING A POLICY REVOKES EVERY GRANT IT CARRIES. Idempotent as Alchemy\n * requires — already gone is success — but this is the one operation with teeth.\n */\n delete: Effect.fn(function* ({ output }) {\n /**\n * ⛔ A REFUSED DELETE FAILS. This is \"the one operation with teeth\" the note above\n * names, and it used to run through the read helper, which discarded the exit code —\n * so a REFUSED policy delete reported success and the row left Alchemy's state while\n * every grant it carried stayed live. Idempotence is preserved: a 404 is still\n * success, and a 403 is not (bao-status.ts).\n */\n yield* deletePolicy(output.name);\n return undefined;\n }),\n });\n }).pipe(Effect.map(provingResumes)),\n );\n",
67
+ "import { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport * as FileSystem from 'effect/FileSystem';\nimport * as Path from 'effect/Path';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport { sha256 } from './digest.ts';\nimport { isEmptyAssembly } from './policy-assembly.ts';\nimport { judgePolicyRename, policyIdentity } from './policy-identity.ts';\nimport { deletePolicy, readPolicy, writePolicy } from './policy-wire.ts';\nimport { guardRename } from './rename-identity.ts';\n\n/**\n * An OpenBao ACL policy, assembled from the HCL fragments that declare it.\n *\n * ★ WHY THIS EXISTS. The estate already hand-rolled both halves of what Alchemy provides:\n * five `apply-*.sh`/`apply-*.py` scripts converge OpenBao, and separate `check-*.sh`\n * gates compare live to repo and refuse on drift. That is `reconcile` and `diff` written\n * twice, in two languages, with nothing recording what was applied — and one of those\n * gates blocked a deploy today because its own path had rotted.\n *\n * ⛔ THERE IS NO `Bao.Secret`, AND THERE MUST NEVER BE ONE. Alchemy persists attributes to\n * its state store and does NOT encrypt them: StateEncoding.ts unwraps `Redacted` to\n * plaintext under a marker key, and nothing under alchemy/src/State encrypts. This\n * estate's state store is the `alchemy` Postgres database, which a nightly job dumps\n * (it enumerates EVERY non-template database), copies to a backup guest, and PBS backs up\n * from there. A KV value here would exist in four places, none of them OpenBao.\n *\n * So this declares the SHAPE AROUND secrets. Every attribute it stores is a name, a\n * count, or a hash.\n *\n * ⛔ EVERY PRIMITIVE IS ALCHEMY'S OR EFFECT'S, NOT NODE'S. An earlier cut of this file used\n * `node:child_process` + `promisify(execFile)` and `node:fs/promises`, which is\n * hand-rolling inside a bun + Effect codebase: it loses the Scope, the typed\n * PlatformError, and the Layer that makes the provider testable without a real vault.\n * ★ `CommandExecutor.run` was tried first and blocked read/diff: Alchemy passes a session\n * to reconcile/delete but NOT to read/diff (Provider.ts:258-289), so the fix was Alchemy's\n * OWN Docker pattern — `ChildProcessSpawner` + `ChildProcess.make`, which needs only a\n * Scope (Docker.ts:476-553). ★ SINCE 2026-09-14 THE CALLS ARE OpenBao's HTTP API through\n * Effect's `HttpClient` (bao-http.ts), which needs no session either, so read/diff still work.\n * FileSystem and Path come from `effect/*` directly — in Effect 4 they moved into core.\n */\nexport interface BaoPolicyProps {\n /** Policy name, as `sys/policies/acl/<name>` takes it. */\n name: string;\n /**\n * Directory of `*.hcl` fragments.\n *\n * ⚠️ CONCATENATED IN SORTED ORDER, EACH FOLLOWED BY A NEWLINE — byte-identical to\n * apply-agent-policy.sh, which is what wrote the live policy. Any other joining makes\n * the first plan report an update on a policy nobody changed.\n */\n fragments: string;\n}\n\nexport interface BaoPolicyAttributes {\n /** Policy name. */\n name: string;\n /** SHA-256 of the assembled HCL. The whole diff, and safe to persist. */\n digest: string;\n /** `path \"...\"` grants — the number apply-agent-policy.sh prints. */\n grants: number;\n /** Fragment files that produced it, so a plan reads like the directory. */\n parts: number;\n}\n\nexport interface BaoPolicy extends Resource<\n 'Bao.Policy',\n BaoPolicyProps,\n BaoPolicyAttributes,\n never,\n HttpClient.HttpClient | FileSystem.FileSystem | Path.Path\n> {}\n\n/**\n * ⛔ `retain` — DELETING A POLICY REVOKES EVERY GRANT IT CARRIES, and this is the ONLY family in\n * this package with live instances, so it is the only one where the default could ever fire.\n *\n * 🔴 IT WAS THE ONLY FAMILY WITHOUT IT. Every sibling passes `{ defaultRemovalPolicy: 'retain' }`\n * — auth-role.ts:37, mount.ts:40, pki-role.ts, proxmox-role.ts, ssh-role.ts — each with a ★\n * explaining what deletion destroys. This file has the same warning on its own `delete` handler\n * and did not carry the option, which is the worst possible combination: the danger is\n * documented and the guard is missing.\n * ⛔ WHAT THAT MEANT IN PRACTICE, on 2026-09-13: ten live policies are named in a `const` array\n * in alchemy.run.ts. Removing a name from that array orphans the resource, and without\n * `retain` the next deploy calls `bao policy delete` on it — including the 86-line policy that\n * decides what the agent working in this repo can reach. A one-word edit, no plan line saying\n * \"revoke\", and the grants are gone. The array grew from four names to ten that same day,\n * which multiplied the blast radius of a mistake nobody had guarded against.\n *\n * ⚠️ `retain` DOES NOT WEAKEN `delete`, WHICH STAYS FULLY IMPLEMENTED. The engine skips it for an\n * orphaned resource; a caller that means it opts in with `.pipe(RemovalPolicy.destroy())`. This\n * is Terraform's `prevent_destroy`, not a stubbed operation — a delete that silently did nothing\n * would lie to whoever read the plan.\n * ⚠️ `retain` ALSO KEEPS THE OLD GENERATION OF A RENAME. A new `name` plans `replace`, and under\n * `retain` the old policy is left live and unmanaged (rename.ts, REPLACE.md).\n */\nexport const BaoPolicy = Resource<BaoPolicy>('Bao.Policy', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** `path \"...\"` grant count — the same number the apply script prints. */\nconst grantsOf = (hcl: string) => (hcl.match(/^path /gm) ?? []).length;\n\nconst attributesOf = (name: string, hcl: string, parts: number): BaoPolicyAttributes => ({\n name,\n digest: sha256(hcl),\n grants: grantsOf(hcl),\n parts,\n});\n\nexport const BaoPolicyProvider = () =>\n Provider.effect(\n BaoPolicy,\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n\n /** Assemble fragments exactly as apply-agent-policy.sh does. */\n const assemble = (dir: string) =>\n Effect.gen(function* () {\n const entries = (yield* fs.readDirectory(dir)).filter((f) => f.endsWith('.hcl')).sort();\n let joined = '';\n for (const f of entries) joined += `${yield* fs.readFileString(path.join(dir, f))}\\n`;\n return { joined, parts: entries.length };\n });\n\n return BaoPolicy.Provider.of({\n /**\n * ⛔ `bao policy list` IS NOT A LIST OF THINGS THIS OWNS. Every policy in the\n * namespace answers, including ones written by hand years ago. Returning them\n * would invite Alchemy to adopt — and then delete — policies it never created.\n */\n list: () => Effect.succeed([]),\n\n // ★ Only undefined means absent (a typed 404); even a live empty policy occupies its name.\n // ⛔ With no attributes in state, a live policy is `Unowned` unless it is the one our own\n // interrupted create wrote: these fragments, byte for byte (ownership/probe.ts).\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const live = yield* readPolicy(olds.name);\n const found = live === undefined ? undefined : attributesOf(olds.name, live, 0);\n const ours = Effect.map(\n assemble(olds.fragments),\n (a) => sha256(a.joined) === found?.digest,\n );\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE POLICY, NOT THE STORED DIGEST. A policy edited in the\n * OpenBao UI is exactly the drift the check-* gates exist to catch, and a\n * provider that trusted its own state would report `noop` straight through it.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n /**\n * ⛔ A RENAMED POLICY IS A `replace`, DECIDED BEFORE ANY OTHER READ (rename.ts). Until\n * 2026-09-21 this read the new name, found nothing and planned `update`: the new policy\n * was written and the old one kept every grant under no state record. Names compare as\n * OpenBao keys them (`policyKey`), so a change of case is the same policy, never a\n * replace. ⛔ A rename onto a policy that already exists fails the plan (`judgeMove`).\n * ⚠️ UNDER THE DEFAULT `retain` THE OLD POLICY STAYS LIVE, GRANTS AND ALL, for every token,\n * role and group that still names it. Under `destroy` they lose those grants at the\n * delete, so a role outside this graph that names the old policy must move in the same\n * PR (REPLACE.md).\n */\n const move = yield* judgePolicyRename(olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) return { action: 'replace' } as const;\n // ⚠️ A prop can still be an unresolved Output or Config at plan time. Docker's\n // own providers guard with isResolved and skip rather than guess; a diff that\n // read a Config as a string would compare a placeholder to real HCL.\n if (!isResolved(news)) return undefined;\n const { joined } = yield* assemble(news.fragments);\n const live = yield* readPolicy(news.name);\n return live !== undefined && sha256(live) === sha256(joined)\n ? ({ action: 'noop' } as const)\n : ({ action: 'update' } as const);\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n const name = news.name;\n // ⛔ An `update` across a rename the diff could not see — refused before any write.\n yield* guardRename(policyIdentity, news, output);\n const { joined, parts } = yield* assemble(news.fragments);\n /**\n * ⛔ AN EMPTY ASSEMBLY IS A REFUSAL, NOT AN EMPTY POLICY. `bao policy write` with\n * no paths SILENTLY REVOKES every grant the policy carries, for every token\n * bound to it — and a mistyped or moved fragments directory reads exactly like\n * a policy with nothing in it. This estate lost a deploy today to a directory\n * that moved; it must not lose a vault to one.\n */\n // ⛔ No FILES was the first guard; no GRANT is the real one — see policy-assembly.ts.\n if (isEmptyAssembly(parts, joined))\n return yield* Effect.die(\n new Error(\n `Bao.Policy ${name}: the fragments under ${news.fragments} carry no path grant ` +\n `(${String(parts)} file(s)). Writing it would revoke every grant the policy carries.`,\n ),\n );\n /**\n * ⛔ ADOPTING A POLICY THAT ALREADY MATCHES MUST NOT REWRITE IT. Alchemy's `adopted`\n * action is NOT a read — Apply.ts routes it down the same branch as `update` and calls\n * reconcile — so the first deploy after declaring the four policies this estate\n * already has would have run `bao policy write` over all four. Byte-identical in the\n * happy case, and a SILENT REWRITE OF LIVE GRANTS the moment the repo fragments have\n * drifted from what is deployed.\n *\n * ★ THE GUARD IS THE SAME EXPRESSION `diff` USES, deliberately: one definition of\n * \"settled\" for this resource, so the plan and the write can never disagree. The\n * sibling PVE provider does exactly this in pveOperations.reconcile.\n */\n const current = yield* readPolicy(name);\n if (current !== undefined)\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.Policy ${name}`);\n if (current !== undefined && sha256(current) === sha256(joined)) {\n return attributesOf(name, joined, parts);\n }\n // ⚠️ In the request body, never on argv — see `writePolicy` for why the temp file went.\n yield* writePolicy(name, joined);\n return attributesOf(name, joined, parts);\n }),\n\n /**\n * ⛔ DELETING A POLICY REVOKES EVERY GRANT IT CARRIES. Idempotent as Alchemy\n * requires — already gone is success — but this is the one operation with teeth.\n */\n delete: Effect.fn(function* ({ output }) {\n /**\n * ⛔ A REFUSED DELETE FAILS. This is \"the one operation with teeth\" the note above\n * names, and it used to run through the read helper, which discarded the exit code —\n * so a REFUSED policy delete reported success and the row left Alchemy's state while\n * every grant it carried stayed live. Idempotence is preserved: a 404 is still\n * success, and a 403 is not (bao-status.ts).\n */\n yield* deletePolicy(output.name);\n return undefined;\n }),\n });\n }).pipe(Effect.map(provingResumes)),\n );\n",
65
68
  "/**\n * Whether an assembled policy would carry NO GRANT — the one write `Bao.Policy` must refuse.\n *\n * ⛔ EMPTY MEANS NO `path` GRANT, NOT NO FILES. Writing `sys/policies/acl/<name>` with nothing in it\n * SILENTLY REVOKES every grant the policy carries, for every token bound to it. The first guard\n * only counted fragment files, so a directory whose one fragment was empty, whitespace or\n * comments — a truncated edit, a bad checkout — assembled to text with no grant in it, passed,\n * and would have replaced the live policy with nothing. Found by grok's review on 2026-09-14.\n * ★ A GRANT IS A `path \"…\"` STANZA, the unit apply-agent-policy.sh counts and `grantsOf` in\n * policy.ts reports. Leading whitespace is allowed here, so an indented stanza still counts.\n */\nexport const isEmptyAssembly = (parts: number, joined: string): boolean =>\n parts === 0 || !/^\\s*path\\s+\"/m.test(joined);\n",
66
- "/**\n * The three OpenBao calls Bao.Policy makes — read, write and delete of `sys/policies/acl/<name>`.\n * Split from policy.ts so the trailing-newline round trip can be tested against a fake server.\n */\nimport * as Effect from 'effect/Effect';\nimport { baoDelete, baoRead, baoWrite } from './bao-http.ts';\nimport { BaoError } from './bao-status.ts';\n\n/** The endpoint the CLI's policy commands used — openbao v2.6.2 api/sys_policy.go:60, :100, :122. */\nexport const policyPath = (name: string) => `sys/policies/acl/${name}`;\n\n/**\n * The live policy text, or '' when the policy is genuinely absent. Anything else FAILS.\n *\n * 🔴 THE ABSENCE WORDING WAS THE POLICY COMMAND'S OWN, AND ASSUMING OTHERWISE MADE A NEW POLICY\n * UNCREATABLE. `No value found at` was measured for `bao read`; `bao policy read` never printed\n * it. Its API client turned a 404 into an empty string and the CLI reported that in its own\n * words — openbao v2.6.2 api/sys_policy.go:65-67 and command/policy_read.go:85-87:\n *\n * No policy named: <name> exit 2\n *\n * So `read` on a policy that did not exist yet FAILED instead of answering absent, and\n * `reconcile` failed at its own pre-write read. Every policy declared so far already existed,\n * which is the only reason nothing broke. MEASURED 2026-09-14 under the admin lane —\n * `bao policy read zz-probe-absent-policy-4c1e` printed exactly that line and exited 2. (The\n * agent lane cannot measure it: it is refused `sys/policies/acl` with a 403 first.)\n * ★ THE WORDING PROBLEM IS GONE WITH THE CLI. The line above was the CLI's rendering of the 404 that\n * the server returns for a missing policy (vault/logical_system.go handlePoliciesRead returns no\n * response, which RespondErrorCommon turns into 404). That status is now read directly, and a\n * refused read is a 403 — two codes, no text to confuse.\n *\n * ⚠️ `data.policy` IS THE TEXT, and a 200 without it is a failure, as it was in the CLI's client\n * (\"no policy found in response\", api/sys_policy.go:81-85).\n */\nexport const readPolicy = (name: string) =>\n Effect.flatMap(baoRead(policyPath(name)), (data) => {\n if (data === undefined) return Effect.succeed('');\n const text = data['policy'];\n return typeof text === 'string'\n ? Effect.succeed(text)\n : Effect.fail(new BaoError(200, 'GET', policyPath(name), ['no data.policy in the response']));\n });\n\n/**\n * ★ THE HCL TRAVELS IN THE REQUEST BODY (`{\"policy\": …}`, api/sys_policy.go:96-101). The CLI path\n * needed a scoped temp file because passing HCL on argv would have put every grant in the process\n * list; a JSON body never reaches argv, so the temp file is gone with it.\n */\nexport const writePolicy = (name: string, hcl: string) =>\n baoWrite('PUT', policyPath(name), { policy: hcl });\n\n/** Deleting a policy that is already gone answers success (handlePoliciesDelete returns nothing). */\nexport const deletePolicy = (name: string) => baoDelete(policyPath(name));\n",
69
+ "/**\n * The three OpenBao calls Bao.Policy makes — read, write and delete of `sys/policies/acl/<name>`.\n * Split from policy.ts so the trailing-newline round trip can be tested against a fake server.\n */\nimport {\n policiesDeleteAclPolicy,\n policiesReadAclPolicy,\n policiesWriteAclPolicy,\n} from '@distilled.cloud/openbao/policies';\nimport * as Effect from 'effect/Effect';\nimport { BaoError } from './bao-status.ts';\nimport { runBao, runBaoRead, runBaoWrite } from './distilled.ts';\n\n/** The endpoint the CLI's policy commands used — openbao v2.6.2 api/sys_policy.go:60, :100, :122. */\nexport const policyPath = (name: string) => `sys/policies/acl/${name}`;\n\n/**\n * The live policy text, or undefined only when the SDK reports PolicyNotFound. Other errors FAIL.\n *\n * 🔴 THE ABSENCE WORDING WAS THE POLICY COMMAND'S OWN, AND ASSUMING OTHERWISE MADE A NEW POLICY\n * UNCREATABLE. `No value found at` was measured for `bao read`; `bao policy read` never printed\n * it. Its API client turned a 404 into an empty string and the CLI reported that in its own\n * words — openbao v2.6.2 api/sys_policy.go:65-67 and command/policy_read.go:85-87:\n *\n * No policy named: <name> exit 2\n *\n * So `read` on a policy that did not exist yet FAILED instead of answering absent, and\n * `reconcile` failed at its own pre-write read. Every policy declared so far already existed,\n * which is the only reason nothing broke. MEASURED 2026-09-14 under the admin lane —\n * `bao policy read zz-probe-absent-policy-4c1e` printed exactly that line and exited 2. (The\n * agent lane cannot measure it: it is refused `sys/policies/acl` with a 403 first.)\n * ★ THE WORDING PROBLEM IS GONE WITH THE CLI. The line above was the CLI's rendering of the 404 that\n * the server returns for a missing policy (vault/logical_system.go handlePoliciesRead returns no\n * response, which RespondErrorCommon turns into 404). That status is now read directly, and a\n * refused read is a 403 — two codes, no text to confuse.\n *\n * ⚠️ `data.policy` IS THE TEXT, and a 200 without it is a failure, as it was in the CLI's client\n * (\"no policy found in response\", api/sys_policy.go:81-85).\n */\nexport const readPolicy = (name: string) =>\n runBaoRead(policiesReadAclPolicy({ name })).pipe(\n Effect.flatMap((data) => {\n const text = data['policy'];\n return typeof text === 'string'\n ? Effect.succeed(text)\n : Effect.fail(\n new BaoError(200, 'GET', policyPath(name), ['no data.policy in the response']),\n );\n }),\n Effect.catchTag('PolicyNotFound', () => Effect.succeed(undefined)),\n );\n\n/** Even a live empty policy occupies its name; rename guards must not overwrite it. */\nexport const policyExists = (name: string) =>\n Effect.map(readPolicy(name), (policy) => policy !== undefined);\n\n/**\n * ★ THE HCL TRAVELS IN THE REQUEST BODY (`{\"policy\": …}`, api/sys_policy.go:96-101). The CLI path\n * needed a scoped temp file because passing HCL on argv would have put every grant in the process\n * list; a JSON body never reaches argv, so the temp file is gone with it.\n * ★ A FULL-REPLACE WRITE: the whole policy text is sent every time, so it is safe to retry a\n * transport failure through `runBaoWrite` — a replayed attempt converges on the same policy\n * rather than compounding a partial one.\n */\nexport const writePolicy = (name: string, hcl: string) =>\n runBaoWrite(policiesWriteAclPolicy({ name, policy: hcl })).pipe(Effect.asVoid);\n\n/** Deleting a policy that is already gone answers success (handlePoliciesDelete returns nothing). */\nexport const deletePolicy = (name: string) =>\n runBao(policiesDeleteAclPolicy({ name })).pipe(\n Effect.catchTag('NotFound', () => Effect.void),\n Effect.asVoid,\n );\n",
70
+ "import { policyExists, policyPath } from './policy-wire.ts';\nimport { declaredString, judgeMoveWith, policyKey } from './rename.ts';\nimport { nameIdentity } from './rename-identity.ts';\n\n/** A policy is its name, keyed as OpenBao keys it (`policyKey`). */\nexport const policyIdentity = nameIdentity<{ readonly name: string }>(\n 'Bao.Policy',\n policyPath,\n policyKey,\n);\n\n/** The occupied-name guard must use the same SDK and refusal semantics as every other read. */\nexport const judgePolicyRename = (\n olds: unknown,\n news: unknown,\n output: { readonly name: string } | undefined,\n) =>\n judgeMoveWith(\n 'Bao.Policy',\n output === undefined ? declaredString(olds, 'name') : output.name,\n declaredString(news, 'name'),\n policyExists,\n policyKey,\n );\n",
67
71
  "/**\n * A role on the estate's proxmox secrets plugin — the mapping from one consumer to one PVE\n * mint user, plus the lease ceilings that consumer's tokens get. METADATA ONLY.\n *\n * ★ WHY THIS FAMILY MATTERS MORE THAN IT LOOKS. Declaring these roles is how the estate\n * replaces HAND-MADE PERMANENT PVE TOKENS with short-lived minted ones. On C1, SEVEN tokens\n * carry expire=0 and privsep=0 — root@pam!inventory-sync, agent@pve!executor,\n * metrics@pve!exporter, app@pve!app, iac@pve!ro, iac@pve!apply and\n * mint@pve!engine. Six of those are one Bao.ProxmoxRole plus a scoped PVE user away from\n * being a 5-minute lease instead of a forever key.\n *\n * The seventh cannot be. mint@pve!engine is the credential the ENGINE ITSELF\n * authenticates with in order to mint anything at all: the thing that issues short-lived\n * tokens needs a standing one, and no role can resolve that chicken-and-egg. It stays\n * permanent, which makes it the single most valuable token on the cluster and the one whose\n * rotation must be a deliberate, hand-run procedure rather than a plan.\n *\n * MEASURED here: `bao read proxmox-c1/config` returns parent_token_id\n * `mint@pve!engine`, parent_secret_set true, parent_secret_tail `…eb01` — the engine's\n * own key, present and, by the schema's own \"Write-only: never returned by a read\", not\n * retrievable. The seven-token inventory was handed to this change and NOT re-counted against\n * the PVE API in this session.\n *\n * ⛔ NO SECRET IN PROPS OR ATTRIBUTES — see policy.ts for the full reasoning. Every attribute\n * here is a mount path, a role name, a PVE username or a TTL. Nothing this resource stores\n * would help anyone authenticate to anything.\n *\n * ⛔ ISSUANCE IS NOT THIS RESOURCE, AND MUST NEVER BECOME ONE. `<mount>/creds/<name>` returns a\n * LIVE PVE TOKEN. Alchemy persists attributes unencrypted (StateEncoding.ts tags Redacted\n * values rather than encrypting them) into the `alchemy` Postgres, which a nightly job dumps\n * to a backup guest, from where PBS backs it up. A minted token declared as a resource would\n * outlive its own lease in at least four places, none of them OpenBao. This resource declares\n * the DOOR; walking through it is a runtime call, not a plan.\n *\n * ★ `defaultRemovalPolicy: 'retain'` — deleting a role breaks every consumer that mints from\n * it. Opt in with `.pipe(RemovalPolicy.destroy())`; see resource.ts in <estate>/proxmox.\n */\nimport { Resource } from 'alchemy';\nimport { isResolved } from 'alchemy/Diff';\nimport * as Provider from 'alchemy/Provider';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\nimport { refuseTakeover } from '../ownership/adopt.ts';\nimport { ownedRead } from '../ownership/probe.ts';\nimport { provingResumes } from '../ownership/resume.ts';\nimport { baoDelete, baoWrite } from './bao-http.ts';\nimport {\n type BaoProxmoxRoleAttributes,\n type BaoProxmoxRoleProps,\n matches,\n rescopeRefusal,\n rolePath,\n writeBody,\n} from './proxmox-role-form.ts';\nimport { readRole } from './proxmox-role-wire.ts';\nimport { declaredString, isPendingProp } from './rename.ts';\nimport { guardRename, judgeRename, roleIdentity } from './rename-identity.ts';\n\nexport type { BaoProxmoxRoleAttributes, BaoProxmoxRoleProps };\n\nexport interface BaoProxmoxRole extends Resource<\n 'Bao.ProxmoxRole',\n BaoProxmoxRoleProps,\n BaoProxmoxRoleAttributes,\n never,\n HttpClient.HttpClient\n> {}\n\nexport const BaoProxmoxRole = Resource<BaoProxmoxRole>('Bao.ProxmoxRole', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** Exact: the plugin stores `roles/<name>` verbatim. */\nconst IDENTITY = roleIdentity<BaoProxmoxRoleAttributes>('Bao.ProxmoxRole', rolePath);\n\nexport const BaoProxmoxRoleProvider = () =>\n Provider.effect(\n BaoProxmoxRole,\n Effect.succeed(\n BaoProxmoxRole.Provider.of({\n /**\n * ⛔ `bao list <mount>/roles` IS NOT A LIST OF THINGS THIS OWNS. MEASURED today:\n * proxmox-c1/roles answers `provision, read` and proxmox-c2/roles answers `read` —\n * four roles created by hand at bringup, none of them declared anywhere yet.\n * Returning them would invite Alchemy to adopt, and then delete, roles it never\n * created, and deleting a role is how every consumer of it stops being able to mint.\n */\n list: () => Effect.succeed([]),\n\n /** ⛔ Stateless: `Unowned` unless our own interrupted create made it (ownership/probe.ts). */\n read: Effect.fn(function* ({ fqn, instanceId, olds, output }) {\n const found = yield* readRole(olds);\n const ours = Effect.sync(() => found !== undefined && matches(found, olds));\n return yield* ownedRead({ fqn, instanceId, output }, found, ours);\n }),\n\n /**\n * ⛔ IT COMPARES THE LIVE ROLE, NOT THE STORED DIGEST. A mint_user edited in the\n * OpenBao UI re-scopes every future credential while the digest in Postgres still\n * says everything is fine — exactly the drift the hand-written check-* gates exist to\n * catch, and exactly what a provider that trusted its own state would walk past.\n */\n diff: Effect.fn(function* ({ news, olds, output }) {\n /**\n * ⛔ A NEW `mount` OR `name` IS A `replace` (rename.ts). It is a DIFFERENT path, so none of\n * the reasons below apply. Until 2026-09-21 it planned `update` and left the old role\n * minting under no state record. Under the default `retain` the old role still mints;\n * under `destroy` its consumers fail at the delete (REPLACE.md). ⛔ A move onto a role\n * that already exists fails the plan (`judgeMove`).\n * ⛔ THE RE-SCOPE GUARD TRAVELS WITH THE RENAME, checked here because the new generation's\n * reconcile finds no live role to compare. While `mintUser` or `allowMintUserChange` is\n * still an Output it cannot be checked, so the diff defers, and reconcile refuses the\n * resulting `update`.\n */\n const move = yield* judgeRename(IDENTITY, olds, news, output);\n // ★ No attributes: an unfinished generation, proven ours or not by provingResumes.\n if (output === undefined) return undefined;\n if (move !== undefined) {\n const mintUser = declaredString(news, 'mintUser');\n if (mintUser === undefined || isPendingProp(news, 'allowMintUserChange'))\n return undefined;\n const from = (yield* readRole(output))?.mintUser ?? output.mintUser;\n const allow = declaredString(news, 'allowMintUserChange');\n const refusal = rescopeRefusal(from, mintUser, allow);\n if (refusal === undefined) return { action: 'replace' } as const;\n return yield* Effect.die(\n new Error(`Bao.ProxmoxRole ${move.from} → ${move.to}: the rename ${refusal}`),\n );\n }\n if (!isResolved(news)) return undefined;\n const live = yield* readRole(news);\n if (live === undefined) return { action: 'update' } as const;\n if (matches(live, news)) return { action: 'noop' } as const;\n /**\n * ⛔ NEVER `replace`, NOT EVEN FOR A mint_user CHANGE. A replace deletes the role and\n * writes it back; between those steps `<mount>/creds/<name>` 404s, so anything\n * minting in that window fails. The end state is byte-identical to the in-place\n * write, because the plugin stores name, mint_user, ttl and max_ttl and nothing\n * else — there is no immutable identity a recreate could reset. So a replace here\n * buys an outage window in exchange for a louder-looking plan. The loudness a\n * re-scope deserves comes from reconcile REFUSING it below, which blocks rather\n * than destroys.\n *\n * ⚠️ CONSEQUENCE FOR THE READER OF A PLAN: a mint_user re-scope shows up here as a\n * plain `update`, indistinguishable from a TTL tweak. The refusal lands at DEPLOY,\n * not at plan. That is the safe ordering — nothing is written before the refusal —\n * but do not read a green plan as evidence that a mint_user change is approved.\n */\n return { action: 'update' } as const;\n }),\n\n reconcile: Effect.fn(function* ({ fqn, instanceId, news, output }) {\n const path = rolePath(news.mount, news.name);\n // ⛔ An `update` across a move the diff could not see — refused before any read or write.\n yield* guardRename(IDENTITY, news, output);\n const live = yield* readRole(news);\n if (live !== undefined)\n yield* refuseTakeover({ fqn, instanceId, output }, `Bao.ProxmoxRole ${path}`);\n /**\n * ⛔ A mint_user CHANGE RE-SCOPES EVERY CREDENTIAL THE ROLE WILL EVER MINT, SILENTLY.\n * The minted token inherits that PVE user's standing ACL and nothing else, so\n * swapping `hf-read@pve` for `hf-provision@pve` turns a read-only consumer into a\n * provisioning one with no other line of the declaration changing. A plan diff of\n * one string is not proportionate warning for that, so an existing role refuses the\n * move unless the declaration NAMES THE VALUE IT IS REPLACING. Creating a role never\n * trips this — there is nothing to re-scope — and the permission expires by itself\n * once the change lands, because live then equals the declaration.\n * ⚠️ A RENAME CREATES A NEW ROLE, SO IT NEVER REACHES THIS CHECK. The diff asks the same\n * question of the role being replaced (`rescopeRefusal`, proxmox-role-form.ts).\n */\n const rescope =\n live === undefined\n ? undefined\n : rescopeRefusal(live.mintUser, news.mintUser, news.allowMintUserChange);\n if (rescope !== undefined) {\n return yield* Effect.die(new Error(`Bao.ProxmoxRole ${path}: ${rescope}`));\n }\n if (live === undefined || !matches(live, news)) {\n const write = writeBody(news);\n /**\n * ⛔ AN UNPARSEABLE TTL IS A REFUSAL, NOT A ZERO. parseDuration accepts `3600s`,\n * `1h`, `6h`, `1d` and bare `0`, and NOTHING ELSE — a bare `3600` or a compound\n * `1h30m` returns undefined. Left alone that never equals the live value, so the\n * plan would report an update forever and each deploy would write a zero TTL.\n * Die with the offending props named instead.\n */\n if (!write.ok) {\n return yield* Effect.die(\n new Error(\n `Bao.ProxmoxRole ${path}: unparseable duration ` +\n `${write.bad.join(', ')}. Use 30s / 5m / 1h / 1d, or 0.`,\n ),\n );\n }\n yield* baoWrite('PUT', path, write.body);\n }\n const after = yield* readRole(news);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(\n `Bao.ProxmoxRole ${path}: write returned no error ` +\n 'but the role is still absent.',\n ),\n );\n }\n /**\n * ⚠️ A GREEN RECONCILE DOES NOT MEAN THE ROLE CAN MINT. The engine never grants ACLs\n * — it borrows the mint user's — so declaring `mint_user: hf-read@pve` neither\n * creates that PVE user nor gives it a single permission. If the user does not\n * exist, or exists with no ACL, the role writes and reads back perfectly and the\n * failure surfaces at `creds/<name>` time, in whatever consumer is unlucky. Verify\n * the PVE side out-of-band; this resource cannot and does not.\n */\n return after;\n }),\n\n /**\n * ⛔ DELETING A ROLE DOES NOT REVOKE THE TOKENS IT ALREADY MINTED — it only stops the\n * next mint. Outstanding leases run to their own expiry against the PVE user's ACL.\n * So this is an availability change for every consumer of `creds/<name>` and NOT a\n * containment action: to contain a leaked credential, revoke the lease (which deletes\n * the PVE token) or delete the token in PVE. Deleting the role only hides the door it\n * came through. The plugin's own test pins this (homeflare-openbao-plugins,\n * TestDeletingARoleLeavesItsOutstandingLeasesRevocable): the delete is one storage\n * delete, and each lease stays revocable without the role.\n *\n * ⚠️ IDEMPOTENT AS ALCHEMY REQUIRES — already gone is success. It used to get that by\n * going through `baoReadText`, which discarded the exit code entirely, so a REFUSED\n * delete was reported as a successful one and the resource left Alchemy's state while\n * the role stayed live. `baoDelete` keeps the idempotence — a 404 is success — and\n * fails on everything else, 403 and 503 included.\n */\n delete: Effect.fn(function* ({ output }) {\n yield* baoDelete(rolePath(output.mount, output.name));\n return undefined;\n }),\n }),\n ).pipe(Effect.map(provingResumes)),\n );\n",
68
72
  "/**\n * Wire and comparison half of Bao.ProxmoxRole — the resource itself is proxmox-role.ts.\n *\n * MEASURED 2026-09-13, read-only, against the live server (BAO_ADDR=http://127.0.0.1:8200,\n * BAO_NAMESPACE=homeflare). No write of any kind was issued to a role or a mount:\n *\n * bao read -format=json proxmox-c1/roles/read\n * → { max_ttl: 21600, mint_user: \"hf-read@pve\", name: \"read\", ttl: 3600 }\n * bao read -format=json proxmox-c1/roles/provision\n * → { max_ttl: 1800, mint_user: \"hf-provision@pve\", name: \"provision\", ttl: 300 }\n * GET /v1/proxmox-c1/?help=1 → components.schemas.WriteRolesNameRequest:\n * mint_user string — the ONLY required field, described as \"The `user@realm` whose\n * standing ACL is the minted token's entire privilege set. Created\n * out-of-band; this engine never grants ACLs.\"\n * ttl integer — \"format\": \"seconds\"\n * max_ttl integer — \"format\": \"seconds\", \"Narrows the mount's; can never widen it.\"\n *\n * ★ name + mint_user + ttl + max_ttl IS THE WHOLE ROLE. The plugin stores nothing else, so\n * `matches` below covers 100% of the server-side state: there is no unmanaged field left to\n * drift behind a green plan. That completeness is bought by making the TTLs REQUIRED props\n * rather than the optional-means-unmanaged shape Bao.Mount uses — see the ⛔ on writeBody.\n */\nimport { sha256 } from './digest.ts';\nimport { mountPath, parseDuration, ttlSeconds } from './mount-form.ts';\n\nexport interface BaoProxmoxRoleProps {\n /** Mount path of the proxmox secrets engine, e.g. `proxmox-c1`. A trailing slash is fine. */\n mount: string;\n /**\n * Role name, as `<mount>/roles/<name>` takes it.\n *\n * ⚠️ The plugin's own schema says the name \"Appears in the minted token's id, so keep it\n * short.\" Both live roles are one word (`read`, `provision`). A long name here becomes a\n * long PVE token id on every mint.\n */\n name: string;\n /**\n * ⛔ THE ENTIRE SECURITY BOUNDARY OF THIS RESOURCE. A minted token inherits this PVE user's\n * standing ACL and nothing else — the engine never grants ACLs, it only borrows one. Change\n * this string and every credential the role issues from then on carries a different\n * privilege set, with no other field in the declaration changing to hint at it. That is why\n * it is compared in `matches` below, and why reconcile refuses to move it without\n * `allowMintUserChange`.\n */\n mintUser: string;\n /** Default lease TTL for minted tokens, e.g. `1h`. REQUIRED — see the ⛔ on writeBody. */\n ttl: string;\n /**\n * Maximum lease TTL, e.g. `6h`. REQUIRED — see the ⛔ on writeBody.\n *\n * ⚠️ \"Narrows the mount's; can never widen it.\" A role declaring `6h` under a mount whose\n * max_lease_ttl is `1h` still READS BACK as 21600, so this resource reports noop and the\n * plan is green — while every actual mint is capped at 3600 by the mount. The role is not\n * lying and neither is the plan; the ceiling simply lives one level up. If a consumer gets\n * a shorter lease than declared here, check `bao read sys/mounts/<mount>` before touching\n * the role.\n */\n maxTtl: string;\n /**\n * Permission to re-scope `mintUser` on an EXISTING role: set it to the CURRENT live mint_user\n * that this change is allowed to replace.\n *\n * ★ IT IS A STRING AND NOT A BOOLEAN, AND THAT IS THE WHOLE POINT. A `true` left behind after\n * one legitimate rename would wave through every future re-scope of that role forever —\n * including one pasted in by whoever copies this block as a template. Naming the value being\n * replaced makes the permission SELF-EXPIRING: the moment the change lands, live equals\n * `mintUser`, the guard stops consulting it, and the next re-scope finds a stale string that\n * does not match live and is refused on its own merits.\n *\n * Not persisted, not in attributes, not in `matches` — it describes the operator's intent, not\n * the server, so changing it alone is correctly a noop. See the ⛔ in proxmox-role.ts reconcile.\n */\n allowMintUserChange?: string;\n}\n\nexport interface BaoProxmoxRoleAttributes {\n /** Mount path, trailing slash stripped. */\n mount: string;\n /** Role name. */\n name: string;\n /** The PVE `user@realm` live tokens are minted under. A name, never a credential. */\n mintUser: string;\n /** Live default lease TTL, rendered back into the duration shape props use. */\n ttl: string;\n /** Live maximum lease TTL, same shape. */\n maxTtl: string;\n /** SHA-256 of the managed fields — safe to persist; see policy.ts. */\n digest: string;\n}\n\nconst text = (value: unknown) => (typeof value === 'string' ? value : '');\n\n/**\n * Seconds back into the duration shape the props use.\n *\n * ⚠️ Third private copy of this function in the package (mount-form.ts and auth-role-form.ts\n * each keep one). Exporting a single copy means editing a file this change does not own, so\n * it is duplicated deliberately rather than silently. Worth collapsing in a follow-up.\n */\nconst ttlText = (seconds: number | undefined, fallback = '0') => {\n if (seconds === undefined) return fallback;\n if (seconds % 86400 === 0) return `${String(seconds / 86400)}d`;\n if (seconds % 3600 === 0) return `${String(seconds / 3600)}h`;\n if (seconds % 60 === 0) return `${String(seconds / 60)}m`;\n return `${String(seconds)}s`;\n};\n\n/** `proxmox-c1/roles/read` — read, write and delete all address the role here. */\nexport const rolePath = (mount: string, name: string) => `${mountPath(mount)}/roles/${name}`;\n\nexport const attributesOf = (\n props: Pick<BaoProxmoxRoleProps, 'mount' | 'name'>,\n live: Record<string, unknown>,\n): BaoProxmoxRoleAttributes => {\n const attrs = {\n mount: mountPath(props.mount),\n // ⚠️ The plugin echoes `name` in a role read, so it is taken from `live` with the prop only\n // as a fallback. Every other value below is live-only: the same split the sibling\n // resources use, so a read never launders a declaration back into itself as \"current\".\n name: text(live['name']) || props.name,\n mintUser: text(live['mint_user']),\n ttl: ttlText(ttlSeconds(live['ttl'])),\n maxTtl: ttlText(ttlSeconds(live['max_ttl'])),\n };\n return { ...attrs, digest: sha256(JSON.stringify(attrs)) };\n};\n\n/**\n * The body for `PUT <mount>/roles/<name>` — all strings, the `k=v` pairs `bao write` sent — or\n * the prop names whose duration would not parse.\n *\n * ⛔ EVERY WRITE CARRIES ALL THREE FIELDS, and both TTLs are required props, so `matches` covers\n * the whole role and no field is left unmanaged behind a green plan.\n * ⚠️ CORRECTED 2026-09-21 FROM THE PLUGIN SOURCE. This said a write REPLACES the role and resets an\n * omitted TTL to zero. The port in homeflare-openbao-plugins (secrets/proxmox/path_roles.go,\n * pathRolesWrite, commit 0e79154) MERGES: it loads the stored role and sets only the fields\n * present (`d.GetOk`). An omitted TTL would keep its old value, which is still a value this\n * resource would not be managing. The build running live was not re-checked against that source.\n *\n * ⚠️ Seconds go on the wire as integers, not as `1h`. The schema declares both TTLs\n * `\"format\": \"seconds\"`, and an integer is accepted unambiguously by every path that reads\n * them back — which is what keeps the round-trip through `matches` stable.\n */\nexport const writeBody = (\n props: BaoProxmoxRoleProps,\n): { ok: true; body: Record<string, string> } | { ok: false; bad: string[] } => {\n const ttl = parseDuration(props.ttl);\n const maxTtl = parseDuration(props.maxTtl);\n const bad: string[] = [];\n if (ttl === undefined) bad.push(`ttl=${props.ttl}`);\n if (maxTtl === undefined) bad.push(`maxTtl=${props.maxTtl}`);\n if (ttl === undefined || maxTtl === undefined) return { ok: false, bad };\n return {\n ok: true,\n body: { mint_user: props.mintUser, ttl: String(ttl), max_ttl: String(maxTtl) },\n };\n};\n\n/**\n * ⚠️ An unparseable declaration never equals anything, so it surfaces as an update that will\n * never settle rather than as a false noop. reconcile turns that loop into one named error;\n * see the `writeBody` refusal there.\n */\nconst sameTtl = (want: string, have: string) => {\n const wantSeconds = parseDuration(want);\n const haveSeconds = ttlSeconds(have);\n return wantSeconds !== undefined && wantSeconds === haveSeconds;\n};\n\n/**\n * Why moving the role's mint user from `before` to the declared one must be refused, or undefined.\n * The ⛔ on reconcile in proxmox-role.ts says why a re-scope needs `allowMintUserChange`.\n *\n * ★ ONE DEFINITION FOR BOTH PLACES THAT ASK. Reconcile asks it of the live role at the same path.\n * The diff asks it across a rename, where `before` is the role being replaced: a rename writes a\n * brand-new role, so reconcile alone would see nothing to re-scope, and a rename would become the\n * way around the guard.\n */\nexport const rescopeRefusal = (\n before: string,\n mintUser: string,\n allowMintUserChange: string | undefined,\n): string | undefined =>\n before === mintUser || allowMintUserChange === before\n ? undefined\n : `re-scopes mint_user ${before} → ${mintUser}. Every token this role mints inherits ` +\n `the ACL of that PVE user. To re-scope deliberately, declare allowMintUserChange: '${before}'.`;\n\n/** True when the live role already matches the declaration on every field the plugin stores. */\nexport const matches = (attributes: BaoProxmoxRoleAttributes, props: BaoProxmoxRoleProps) =>\n attributes.mintUser === props.mintUser &&\n sameTtl(props.ttl, attributes.ttl) &&\n sameTtl(props.maxTtl, attributes.maxTtl);\n",
69
73
  "/**\n * The read Bao.ProxmoxRole makes of `<mount>/roles/<name>`, split from proxmox-role.ts so the diff,\n * reconcile and the rename's re-scope check share one definition of \"the live role\".\n */\nimport * as Effect from 'effect/Effect';\nimport { baoRead } from './bao-http.ts';\nimport { type BaoProxmoxRoleProps, attributesOf, rolePath } from './proxmox-role-form.ts';\n\n/**\n * The live role, or undefined when OpenBao answers 404.\n *\n * ⚠️ A missing MOUNT and a missing ROLE both read as undefined here, because both answer 404:\n * an absent role is a read that found nothing, and a path under no mount is OpenBao's\n * unsupported-path error, which is also a 404 (sdk/logical/response_util.go). They are not the\n * same failure — one is a typo in `mount`, the other is a role that has yet to be created — so\n * reconcile lets OpenBao's own `errors` through on the write rather than inventing a message.\n * A bad mount says \"no handler for route\".\n */\nexport const readRole = (props: Pick<BaoProxmoxRoleProps, 'mount' | 'name'>) =>\n Effect.gen(function* () {\n const live = yield* baoRead(rolePath(props.mount, props.name));\n if (live === undefined) return undefined;\n return attributesOf(props, live);\n });\n",
@@ -71,7 +75,7 @@
71
75
  "/**\n * The wire-and-form half of Bao.SshRole: normalisation, argv, and the equality that decides\n * whether a plan says `noop`. Split from ssh-role.ts for the 250-line cap.\n *\n * ⚠️ EVERY FIELD TYPE BELOW WAS MEASURED, not assumed — OpenBao v2.6.2, read from the live\n * engine's own `sys/internal/specs/openapi`, schema `SshWriteRoleRequest`:\n * `allowed_users`, `allowed_extensions`, `allowed_critical_options`, `allowed_domains`\n * → `string`. ONE COMMA-SEPARATED STRING. Not a list, however much it reads like one.\n * `default_extensions`, `default_critical_options`, `allowed_user_key_lengths`\n * → `object`, `format: map`.\n * `ttl`, `max_ttl`, `not_before_duration` → `integer`, SECONDS.\n * A role read echoes exactly those types back, which is why csvList and extMap exist.\n */\nimport { sha256 } from './digest.ts';\nimport { parseDuration, ttlSeconds } from './mount-form.ts';\nimport { sshMountOf as mountOf } from './mount-path.ts';\n\nexport interface BaoSshRoleProps {\n /** Role name, as `<mount>/roles/{name}` takes it. */\n name: string;\n /** Secrets engine mount, no trailing slash. Defaults to `ssh`; `ssh-host` also exists. */\n mount?: string;\n /** Principals a certificate may carry. `['*']` is OpenBao's wildcard. */\n allowedUsers: readonly string[];\n /** Principal used when a sign request does not name one. */\n defaultUser?: string;\n /** Sign user certificates. Defaults to false — OpenBao's own default. */\n allowUserCertificates?: boolean;\n /** Sign host certificates. Defaults to false — OpenBao's own default. */\n allowHostCertificates?: boolean;\n /** Host-cert roles only: the domains a host certificate may claim. */\n allowedDomains?: readonly string[];\n /** Host-cert roles only: allow `host.example.com` under an allowed `example.com`. */\n allowSubdomains?: boolean;\n /** Host-cert roles only: allow the bare allowed domain itself. */\n allowBareDomains?: boolean;\n /**\n * Extensions a REQUESTER may ask for — not the ones that get stamped on. `[]` means none\n * may be requested, which is what all three live roles carry; `['*']` allows any.\n */\n allowedExtensions?: readonly string[];\n /** Extensions stamped on every certificate, e.g. `{ 'permit-pty': '' }`. */\n defaultExtensions?: Readonly<Record<string, string>>;\n /** Critical options a requester may ask for — `force-command`, `source-address`. */\n allowedCriticalOptions?: readonly string[];\n /** Critical options stamped on every certificate. See the ⛔ on erasure in ssh-role.ts. */\n defaultCriticalOptions?: Readonly<Record<string, string>>;\n /** ⛔ Skeleton-key flag — read the ⛔ in ssh-role.ts before setting this true. */\n allowEmptyPrincipals?: boolean;\n /** Certificate lifetime, e.g. `4h`. ⛔ `0` is NOT \"no expiry\" — see ssh-role.ts. */\n ttl: string;\n /** Ceiling on a requested lifetime, e.g. `8h`. */\n maxTtl: string;\n}\n\n/**\n * Every prop resolved to the value the full-replace write will actually produce.\n *\n * ★ Derived rather than retyped: `Required` is the whole difference between the two, and a\n * hand-copied twin is the kind of thing that silently loses a field in review.\n */\nexport type BaoSshRoleForm = Required<BaoSshRoleProps>;\n\n/** ⛔ NO SECRET HERE — names, flags, TTLs and a digest. The CA key is out of scope. */\nexport interface BaoSshRoleAttributes extends Omit<BaoSshRoleForm, 'maxTtl' | 'ttl'> {\n /**\n * ⚠️ SECONDS, NOT A DURATION STRING. OpenBao stores seconds and a plan should show what is\n * stored; `4h` in the props and 14400 here are the same role. Rendering seconds back\n * into `4h` needs a table of unit rules that mount-form.ts and auth-role-form.ts each\n * already carry a private copy of — a third copy is how the three drift apart.\n */\n ttlSeconds: number;\n maxTtlSeconds: number;\n /** Always `ca` on a healthy role. Stored so an otp/dynamic role reads as a mismatch. */\n keyType: string;\n /** SHA-256 of the managed fields — safe to persist; see policy.ts. */\n digest: string;\n}\n\nexport { mountOf };\n\nexport const readPath = (mount: string | undefined, name: string) =>\n `${mountOf(mount)}/roles/${name}`;\n\nconst text = (value: unknown) => (typeof value === 'string' ? value : '');\n\nconst bool = (value: unknown, fallback: boolean) => (typeof value === 'boolean' ? value : fallback);\n\n/**\n * ⚠️ SETS, NOT SEQUENCES. OpenBao stores these as one comma-separated string and promises\n * nothing about the order it hands back. Sorting and de-duplicating on BOTH sides is what\n * stops every plan from reporting an update on a role nobody touched.\n */\nexport const csvList = (value: unknown): readonly string[] => {\n const parts = Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string')\n : text(value).split(',');\n return [\n ...new Set(parts.map((entry) => entry.trim()).filter((entry) => entry.length > 0)),\n ].sort();\n};\n\n/**\n * ⚠️ A MAP WITH NO PROMISED ORDER. Key order also decides the digest and the argv, so it is\n * normalised once here and everything else reads the sorted copy.\n */\nexport const extMap = (value: unknown): Record<string, string> => {\n const out: Record<string, string> = {};\n if (typeof value !== 'object' || value === null || Array.isArray(value)) return out;\n const source = value as Record<string, unknown>;\n for (const key of Object.keys(source).sort()) out[key] = text(source[key]);\n return out;\n};\n\n/** ⛔ Every default here is what the WRITE produces, not what felt sensible. */\nexport const resolve = (props: BaoSshRoleProps): BaoSshRoleForm => ({\n name: props.name,\n mount: mountOf(props.mount),\n allowedUsers: csvList(props.allowedUsers),\n defaultUser: props.defaultUser ?? '',\n allowUserCertificates: props.allowUserCertificates ?? false,\n allowHostCertificates: props.allowHostCertificates ?? false,\n allowedDomains: csvList(props.allowedDomains),\n allowSubdomains: props.allowSubdomains ?? false,\n allowBareDomains: props.allowBareDomains ?? false,\n allowedExtensions: csvList(props.allowedExtensions),\n defaultExtensions: extMap(props.defaultExtensions ?? {}),\n allowedCriticalOptions: csvList(props.allowedCriticalOptions),\n defaultCriticalOptions: extMap(props.defaultCriticalOptions ?? {}),\n allowEmptyPrincipals: props.allowEmptyPrincipals ?? false,\n ttl: props.ttl,\n maxTtl: props.maxTtl,\n});\n\nexport const attributesOf = (\n form: BaoSshRoleForm,\n live: Record<string, unknown>,\n): BaoSshRoleAttributes => {\n const attrs = {\n name: form.name,\n mount: form.mount,\n allowedUsers: csvList(live['allowed_users']),\n defaultUser: text(live['default_user']),\n allowUserCertificates: bool(live['allow_user_certificates'], false),\n allowHostCertificates: bool(live['allow_host_certificates'], false),\n allowedDomains: csvList(live['allowed_domains']),\n allowSubdomains: bool(live['allow_subdomains'], false),\n allowBareDomains: bool(live['allow_bare_domains'], false),\n allowedExtensions: csvList(live['allowed_extensions']),\n defaultExtensions: extMap(live['default_extensions']),\n allowedCriticalOptions: csvList(live['allowed_critical_options']),\n defaultCriticalOptions: extMap(live['default_critical_options']),\n allowEmptyPrincipals: bool(live['allow_empty_principals'], false),\n keyType: text(live['key_type']) || 'ca',\n ttlSeconds: ttlSeconds(live['ttl']) ?? 0,\n maxTtlSeconds: ttlSeconds(live['max_ttl']) ?? 0,\n };\n return { ...attrs, digest: sha256(JSON.stringify(attrs)) };\n};\n\n/**\n * ⛔ THE MAPS CROSS THE WIRE AS JSON OBJECTS. A JSON STRING IS REJECTED, SO EVERY WRITE FAILED.\n * History: `bao write -output-curl-string` showed the CLI sending `k=v` values as strings,\n * so this once sent `\"{\\\"permit-pty\\\":\\\"\\\"}\"` on the reasoning that a `framework` TypeMap\n * JSON-decodes a string. ⚠️ IT DOES NOT. MEASURED 2026-09-21 against sdk v2.6.2 itself (a Go\n * probe of framework.FieldData.Validate, no server): TypeMap is `mapstructure.WeakDecode`\n * (framework/field_data.go:271-276), which refuses a string with \"expected type\n * 'map[string]interface {}', got unconvertible type 'string'\" — and framework/backend.go:\n * 281-285 answers that with a 400 before the handler runs. `\"{}\"` fails the same way, so every\n * Bao.SshRole write, not only those with extensions, would have been refused. It went unseen\n * because the adopted roles already matched and no write was ever sent. The same probe\n * accepted the object form and every other field of writeBody as sent.\n */\nconst mapValue = (map: Readonly<Record<string, string>>) => extMap(map);\n\n/**\n * ⛔ EVERY MANAGED FIELD IS SENT ON EVERY WRITE, INCLUDING THE FALSE ONES. The role write is\n * a full replace (see ssh-role.ts), so an omitted field is not \"left alone\" — it is reset.\n * Sending the resolved form makes the body and the declaration the same statement. Strings,\n * exactly the `k=v` pairs `bao write` sent, for `PUT <mount>/roles/<name>` — except the two\n * maps, which must be objects (the ⛔ on mapValue).\n */\nexport const writeBody = (form: BaoSshRoleForm): Record<string, unknown> => ({\n key_type: 'ca',\n allowed_users: form.allowedUsers.join(','),\n default_user: form.defaultUser,\n allow_user_certificates: String(form.allowUserCertificates),\n allow_host_certificates: String(form.allowHostCertificates),\n allowed_domains: form.allowedDomains.join(','),\n allow_subdomains: String(form.allowSubdomains),\n allow_bare_domains: String(form.allowBareDomains),\n allowed_extensions: form.allowedExtensions.join(','),\n default_extensions: mapValue(form.defaultExtensions),\n allowed_critical_options: form.allowedCriticalOptions.join(','),\n default_critical_options: mapValue(form.defaultCriticalOptions),\n allow_empty_principals: String(form.allowEmptyPrincipals),\n ttl: form.ttl,\n max_ttl: form.maxTtl,\n});\n\nconst sameList = (want: readonly string[], have: readonly string[]) =>\n want.length === have.length && want.every((entry, index) => entry === have[index]);\n\nconst sameMap = (\n want: Readonly<Record<string, string>>,\n have: Readonly<Record<string, string>>,\n) => {\n const keys = Object.keys(want);\n return keys.length === Object.keys(have).length && keys.every((key) => have[key] === want[key]);\n};\n\n/**\n * Compare in seconds, never as text — `60m` and `1h` are the same role.\n * ⚠️ An unparseable prop yields undefined, which equals no number, so it reports drift\n * rather than a false noop. `badDurations` is what turns that into a readable refusal.\n */\nconst sameTtl = (want: string, have: number) => parseDuration(want) === have;\n\n/**\n * ⛔ AN UNPARSEABLE TTL IS A PLAN THAT NEVER GOES GREEN. parseDuration understands `0` and\n * `<n>[smhd]` and nothing else. A prop like `4h30m` writes fine, reads back as 16200,\n * fails to parse on the want side, and reports `update` forever — and a resource that is\n * always dirty is one nobody reads the plan for any more.\n */\nexport const badDurations = (form: BaoSshRoleForm): readonly string[] =>\n (['ttl', 'maxTtl'] as const).filter((field) => parseDuration(form[field]) === undefined);\n\n/**\n * True when live already matches the declaration on every managed field.\n * ⛔ NOTHING IS SKIPPED FOR BEING UNDEFINED. mount.ts and auth-role.ts can treat an absent\n * prop as \"don't care\" because their writes are partial tunes; this one cannot, because\n * the write resets whatever it omits. Comparing the resolved form is what keeps a\n * hand-edited role from surviving forever behind a green plan.\n */\nexport const matches = (attributes: BaoSshRoleAttributes, form: BaoSshRoleForm) =>\n attributes.keyType === 'ca' &&\n sameList(form.allowedUsers, attributes.allowedUsers) &&\n attributes.defaultUser === form.defaultUser &&\n attributes.allowUserCertificates === form.allowUserCertificates &&\n attributes.allowHostCertificates === form.allowHostCertificates &&\n sameList(form.allowedDomains, attributes.allowedDomains) &&\n attributes.allowSubdomains === form.allowSubdomains &&\n attributes.allowBareDomains === form.allowBareDomains &&\n sameList(form.allowedExtensions, attributes.allowedExtensions) &&\n sameMap(form.defaultExtensions, attributes.defaultExtensions) &&\n sameList(form.allowedCriticalOptions, attributes.allowedCriticalOptions) &&\n sameMap(form.defaultCriticalOptions, attributes.defaultCriticalOptions) &&\n attributes.allowEmptyPrincipals === form.allowEmptyPrincipals &&\n sameTtl(form.ttl, attributes.ttlSeconds) &&\n sameTtl(form.maxTtl, attributes.maxTtlSeconds);\n",
72
76
  "/**\n * Bao.SshRole's guard against its own full-replace write: the live fields a write would reset that\n * the declaration does not model. Split from ssh-role.ts, whose reconcile calls it.\n */\nimport { extMap } from './ssh-role-form.ts';\n\n/**\n * Fields this resource deliberately does not model, mapped to the value OpenBao's own write\n * puts there when nobody says otherwise. The templating flags change how a principal is\n * DERIVED at signing time, which is a different kind of decision from which principals\n * exist; the rest are issuance mechanics. MEASURED against all three live roles — every one\n * of them sits on exactly these values, so the guard below fires on nothing that exists.\n */\nconst UNMANAGED_DEFAULTS: Readonly<Record<string, unknown>> = {\n algorithm_signer: 'default',\n allow_commas_in_identity_templates: false,\n allow_user_key_ids: false,\n allowed_domains_template: false,\n allowed_users_template: false,\n default_extensions_template: false,\n default_user_template: false,\n issuer_ref: 'default',\n key_id_format: '',\n not_before_duration: 30,\n};\n\n/**\n * ⚠️ ABSENT AND EMPTY BOTH COUNT AS \"NEVER SET\". A role this resource wrote omits these\n * fields entirely, so a stricter test would refuse on the provider's own output and\n * deadlock the update after next.\n */\nconst isDefault = (live: Record<string, unknown>, field: string) =>\n live[field] === undefined || live[field] === '' || live[field] === UNMANAGED_DEFAULTS[field];\n\n/**\n * ⛔ THE FIELDS A WRITE WOULD SILENTLY DESTROY. Because the write is a full replace, a role\n * someone tuned by hand — `allowed_user_key_lengths` (a minimum RSA size), a\n * `key_id_format` the audit trail is grepped by, a `not_before_duration` widened to\n * survive clock skew, a non-default issuer — loses all of it the moment this resource\n * decides to update. A vanished key-length floor is a security regression that no plan\n * output would ever mention, and a vanished backdating window breaks signing on exactly\n * the skewed host it was added for. So reconcile refuses instead of writing.\n */\nexport const wouldErase = (live: Record<string, unknown>): readonly string[] => {\n const lost = Object.keys(UNMANAGED_DEFAULTS).filter((field) => !isDefault(live, field));\n if (Object.keys(extMap(live['allowed_user_key_lengths'])).length > 0) {\n lost.push('allowed_user_key_lengths');\n }\n return lost.sort();\n};\n"
73
77
  ],
74
- "mappings": "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",
75
- "debugId": "8A440F36637B89AF64756E2164756E21",
78
+ "mappings": "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",
79
+ "debugId": "C687B72D0BAE7E8D64756E2164756E21",
76
80
  "names": []
77
81
  }