wrangler.toml
Rama main · réplica de lectura del repositorio original.
name = "any-managed-agents"
main = "./server/worker.ts"
compatibility_date = "2026-05-07"
compatibility_flags = ["nodejs_compat"]
workers_dev = true
preview_urls = true
routes = [
{ pattern = "enbor.realmroot.dev", custom_domain = true },
]
[assets]
binding = "ASSETS"
directory = "./dist/client"
not_found_handling = "single-page-application"
run_worker_first = ["/api", "/api/*", "/runtime/*", "/.well-known/oauth-protected-resource/api"]
[vars]
ALLOWED_ORIGINS = "https://enbor.realmroot.dev,https://enbor.saltbo.workers.dev"
RUNTIME_MODE = "live"
SANDBOX_TRANSPORT = "rpc"
AI_GATEWAY_ID = "enbor"
OIDC_ISSUER = "https://id.realmroot.dev/api/auth"
OIDC_RESOURCE = "https://enbor.realmroot.dev/api"
OIDC_BROWSER_SCOPES = "openid profile email agents:read agents:write audit-records:read audit-records:write auth:read auth:write budgets:read budgets:write connectors:read connectors:write environments:read environments:write identities:read identities:write leases:read leases:write memory-stores:read memory-stores:write projects:read projects:write providers:read providers:write runners:read runners:write sessions:read sessions:write triggers:read triggers:write usage-records:read usage-records:write usage-summary:read usage-summary:write vaults:read vaults:write work-items:read work-items:write"
OIDC_RUNNER_CLIENT_ID = "01a01c2c-b25f-76fa-bc6f-edfc51f235e1"
OIDC_RUNNER_SCOPES = "openid profile email offline_access runners:read runners:write work-items:read work-items:write leases:read leases:write sessions:write"
[triggers]
crons = ["* * * * *"]
[ai]
binding = "AI"
[[ratelimits]]
name = "AUTH_CLIENT_RATE_LIMITER"
namespace_id = "89001"
simple = { limit = 10, period = 60 }
[[ratelimits]]
name = "AUTH_IP_RATE_LIMITER"
namespace_id = "89002"
simple = { limit = 100, period = 60 }
[[queues.producers]]
binding = "CLOUD_TURNS"
queue = "ama-cloud-turns"
[[queues.producers]]
binding = "TRIGGER_DISPATCHES"
queue = "ama-trigger-dispatches"
[[queues.consumers]]
queue = "ama-cloud-turns"
max_batch_size = 1
max_retries = 5
dead_letter_queue = "ama-cloud-turns-dlq"
# A cloud turn that keeps failing (infra / DB / queue errors) lands here after
# max_retries instead of being silently dropped, stranding the session. The DLQ
# consumer marks the session errored so clients recover. Provision the queue with
# `wrangler queues create ama-cloud-turns-dlq` before deploying.
[[queues.consumers]]
queue = "ama-cloud-turns-dlq"
max_batch_size = 1
max_retries = 1
[[queues.consumers]]
queue = "ama-trigger-dispatches"
max_batch_size = 1
max_retries = 5
dead_letter_queue = "ama-trigger-dispatches-dlq"
[[d1_databases]]
binding = "DB"
database_name = "any-managed-agents-db"
database_id = "1b821d59-c74b-47e4-9af3-3d83de81dc1c"
migrations_dir = "./migrations"
[[r2_buckets]]
binding = "SESSION_EVENTS"
bucket_name = "ama-session-events"
[[durable_objects.bindings]]
name = "SANDBOX"
class_name = "Sandbox"
[[durable_objects.bindings]]
name = "SESSION"
class_name = "SessionObject"
[[durable_objects.bindings]]
name = "RUNNER_POOL"
class_name = "RunnerPoolObject"
[[migrations]]
tag = "v1"
new_sqlite_classes = ["ManagedAgent"]
[[migrations]]
tag = "v2"
new_sqlite_classes = ["Sandbox"]
[[migrations]]
tag = "v3"
new_sqlite_classes = ["RunnerSessionChannelObject"]
# ManagedAgent (the agents-SDK chat DO) was never bound to a binding and is not
# the v1.0 runtime contract; the class is removed. The v1 tag stays as applied
# history; this migration drops the unused class.
[[migrations]]
tag = "v4"
deleted_classes = ["ManagedAgent"]
# The runner session channel DO is generalised into the per-session Session DO
# (browser transport + cloud event store + runner bridge). Rename preserves the
# existing sqlite-class lineage and any live instances; idFromName(sessionId)
# addressing is unchanged.
[[migrations]]
tag = "v5"
renamed_classes = [{ from = "RunnerSessionChannelObject", to = "SessionObject" }]
[[migrations]]
tag = "v6"
new_sqlite_classes = ["RunnerPoolObject"]
[[containers]]
class_name = "Sandbox"
name = "any-managed-agents-sandbox"
image = "./Dockerfile"
max_instances = 20
[observability]
enabled = true
[observability.traces]
enabled = true
head_sampling_rate = 0.05
[env.staging]
name = "any-managed-agents-staging"
routes = [
{ pattern = "enbor-staging.realmroot.dev", custom_domain = true },
]
[env.staging.vars]
RUNTIME_MODE = "live"
SANDBOX_TRANSPORT = "rpc"
AI_GATEWAY_ID = "enbor"
OIDC_ISSUER = "https://id.realmroot.dev/api/auth"
OIDC_RESOURCE = "https://enbor-staging.realmroot.dev/api"
OIDC_BROWSER_SCOPES = "openid profile email agents:read agents:write audit-records:read audit-records:write auth:read auth:write budgets:read budgets:write connectors:read connectors:write environments:read environments:write identities:read identities:write leases:read leases:write memory-stores:read memory-stores:write projects:read projects:write providers:read providers:write runners:read runners:write sessions:read sessions:write triggers:read triggers:write usage-records:read usage-records:write usage-summary:read usage-summary:write vaults:read vaults:write work-items:read work-items:write"
OIDC_RUNNER_CLIENT_ID = "01a01c2c-b25f-76fa-bc6f-edfc51f235e1"
OIDC_RUNNER_SCOPES = "openid profile email offline_access runners:read runners:write work-items:read work-items:write leases:read leases:write sessions:write"
ALLOWED_ORIGINS = "https://enbor-staging.realmroot.dev,https://enbor-staging.saltbo.workers.dev"
[env.staging.triggers]
crons = ["* * * * *"]
[env.staging.ai]
binding = "AI"
[[env.staging.ratelimits]]
name = "AUTH_CLIENT_RATE_LIMITER"
namespace_id = "89003"
simple = { limit = 10, period = 60 }
[[env.staging.ratelimits]]
name = "AUTH_IP_RATE_LIMITER"
namespace_id = "89004"
simple = { limit = 100, period = 60 }
[[env.staging.queues.producers]]
binding = "CLOUD_TURNS"
queue = "enbor-cloud-turns-staging"
[[env.staging.queues.producers]]
binding = "TRIGGER_DISPATCHES"
queue = "enbor-trigger-dispatches-staging"
[[env.staging.queues.consumers]]
queue = "enbor-cloud-turns-staging"
max_batch_size = 1
max_retries = 5
dead_letter_queue = "enbor-cloud-turns-staging-dlq"
[[env.staging.queues.consumers]]
queue = "enbor-cloud-turns-staging-dlq"
max_batch_size = 1
max_retries = 1
[[env.staging.queues.consumers]]
queue = "enbor-trigger-dispatches-staging"
max_batch_size = 1
max_retries = 5
dead_letter_queue = "enbor-trigger-dispatches-staging-dlq"
[[env.staging.d1_databases]]
binding = "DB"
database_name = "enbor-db-staging-v2"
database_id = "68036380-0b48-4ed4-95c6-a1cc001e4a64"
migrations_dir = "./migrations"
[[env.staging.r2_buckets]]
binding = "SESSION_EVENTS"
bucket_name = "enbor-session-events-staging"
[[env.staging.durable_objects.bindings]]
name = "SANDBOX"
class_name = "Sandbox"
[[env.staging.durable_objects.bindings]]
name = "SESSION"
class_name = "SessionObject"
[[env.staging.durable_objects.bindings]]
name = "RUNNER_POOL"
class_name = "RunnerPoolObject"
[[env.staging.containers]]
class_name = "Sandbox"
name = "any-managed-agents-staging-sandbox"
image = "./Dockerfile"
max_instances = 20
[env.e2e]
routes = []
[env.e2e.vars]
SANDBOX_TRANSPORT = "rpc"
OIDC_ISSUER = "https://oidc.test/api/auth"
OIDC_CLIENT_ID = "enbor-e2e"
OIDC_RUNNER_CLIENT_ID = "enbor-runner-e2e"
OIDC_RUNNER_SCOPES = "openid profile email offline_access"
ALLOWED_ORIGINS = "http://localhost:5173"
E2E_TEST_AUTH = "true"
E2E_FAKE_REALMROOT_ENROLLMENT = "true"
RUNTIME_MODE = "test"
VAULT_ENCRYPTION_KEY = "e2e-local-vault-encryption-key-not-for-production"
WEB_SESSION_ENCRYPTION_KEY = "e2e-local-web-session-key-not-for-production"
OIDC_CLIENT_SECRET = "e2e-local-confidential-client-secret"
[env.e2e.triggers]
crons = []
[env.e2e.ai]
binding = "AI"
[[env.e2e.ratelimits]]
name = "AUTH_CLIENT_RATE_LIMITER"
namespace_id = "89005"
simple = { limit = 10, period = 60 }
[[env.e2e.ratelimits]]
name = "AUTH_IP_RATE_LIMITER"
namespace_id = "89006"
simple = { limit = 100, period = 60 }
[[env.e2e.d1_databases]]
binding = "DB"
database_name = "enbor-db-staging-v2"
database_id = "68036380-0b48-4ed4-95c6-a1cc001e4a64"
migrations_dir = "./migrations"
[[env.e2e.r2_buckets]]
binding = "SESSION_EVENTS"
bucket_name = "enbor-session-events-staging"
[[env.e2e.durable_objects.bindings]]
name = "SANDBOX"
class_name = "Sandbox"
[[env.e2e.durable_objects.bindings]]
name = "SESSION"
class_name = "SessionObject"
[[env.e2e.durable_objects.bindings]]
name = "RUNNER_POOL"
class_name = "RunnerPoolObject"
[[env.e2e.containers]]
class_name = "Sandbox"
name = "enbor-e2e-sandbox"
image = "./Dockerfile"
max_instances = 1