28 lines
1.7 KiB
TypeScript
28 lines
1.7 KiB
TypeScript
import { assertOwnedRoutingRecoveryAuthoritySql, acceptRoutingRecoveryAuthoritySql } from "./routing-recovery-authority.sql-helper.js"
|
|
|
|
// Guard precedes imports that configure a pool or load private MCP state.
|
|
assertOwnedRoutingRecoveryAuthoritySql()
|
|
process.env.AUTH_REQUIRED = "true"
|
|
process.env.AUTH_JWT_SECRET = "owned-routing-recovery-authority-acceptance-secret"
|
|
process.env.AUTH_ISSUER = "https://owned-routing-recovery-authority.test"
|
|
const { pool, closePool } = await import("../../db/index.js")
|
|
try {
|
|
const { applySqlMigrations } = await import("../../db/migrate.js")
|
|
await applySqlMigrations(pool)
|
|
console.log("captured recovery authority SQL acceptance:", JSON.stringify(await acceptRoutingRecoveryAuthoritySql()))
|
|
const { updateMcpSettings } = await import("./store.js")
|
|
await import("./actions.js")
|
|
const { acceptScopedRouteCommunitySwitch } = await import("./routing-community-scoped-acceptance.js")
|
|
const actor = { id: "owned-routing-recovery-authority", email: "routing-recovery@example.invalid", name: "Owned recovery authority",
|
|
apps: ["mm"], permissions: ["mm:settings:admin", "mm:mcp:admin", "mm:mcp:approve", "mm:network:read", "mm:network:write", "mm:filters:write", "mm:servers:admin"],
|
|
issuedAt: Date.now() - 1000, expiresAt: Date.now() + 900000 }
|
|
await updateMcpSettings({ enabled: true }, actor)
|
|
for (const lateInverseAuthorityChange of ["edit", "disable", "grant"] as const) {
|
|
const evidence = await acceptScopedRouteCommunitySwitch(actor, { lateInverseAuthorityChange })
|
|
console.log("genuine late inverse authority SQL acceptance:", JSON.stringify(evidence))
|
|
}
|
|
} finally {
|
|
await (await import("../../services/scheduler.js")).stopSchedulerForDatabaseOperation()
|
|
await closePool()
|
|
}
|