/* eslint-disable */ const D5 = window.PERSONA_DATA; // ---------- Configuration tree (the heart of the system) ---------- const PageConfig = () => { const [scope, setScope] = useState("org"); const [search, setSearch] = useState(""); const groups = useMemo(()=>{ const items = D5.configItems.filter(c => !search || c.key.includes(search.toLowerCase())); const g = {}; items.forEach(it => { const root = it.key.split(".")[0]; (g[root] = g[root] || []).push(it); }); return g; }, [search]); return (
8 katman çözümleyici · 1,847 config item

Configuration

Sistemde sabit kodlanmış hiçbir davranış yok. Her sayı, eşik, sağlayıcı, prompt — burada. Üst scope alt scope'u kilitleyebilir.
Resolution chain — for current request
{[ ["System","sys",false],["Env","prod",false],["Plan","Pro",false],["Org","Acme","active"],["Workspace","Studio",false],["User","zeki",false],["API key","—",false],["Request","—",false], ].map(([lbl,val,act],i)=>( {i>0 &&
}
{i+1}
{lbl}
{val}
))}
{I("search",14)} setSearch(e.target.value)} placeholder="engine.pipeline.audit.* …"/>
{["system","env","plan","org","workspace","user"].map(s => setScope(s)}>{s} )}
Key
Value
Source
Tier
Lock
{Object.entries(groups).map(([root, items])=>(
{root}
{items.map(c=>(
{c.key}
{c.val}
{c.src}
{c.tier}
{c.locked? "🔒 locked" : "—"}
))}
))}
); }; // ---------- Members / RBAC / SSO ---------- const PageMembers = () => { const [tab, setTab] = useState("members"); return (
Acme Studios · Pro

Members & access

{[["members","Members"],["roles","Roles & permissions"],["sso","SSO & SCIM"],["sessions","Sessions"]].map(([k,l])=>
setTab(k)}>{l}
)}
{tab==="members" && (
{D5.members.map(m=>( ))}
NameEmailRoleWorkspaceMFALast active
{m.name.split(" ").map(s=>s[0]).join("").slice(0,2)}
{m.name}
{m.email} {m.role} {m.workspace} {m.mfa? on : off} {m.last}
)} {tab==="roles" && (
{[ ["personas.read","✓","✓","✓","✓","✓","—","✓"], ["personas.create","✓","✓","✓","—","✓","—","—"], ["personas.publish","✓","✓","—","—","—","—","—"], ["personas.delete","✓","✓","—","—","—","—","—"], ["chat.run","✓","✓","✓","✓","✓","—","—"], ["config.read","✓","✓","✓","✓","—","—","✓"], ["config.write","✓","✓","—","—","—","—","—"], ["api_keys.manage","✓","✓","—","—","—","—","—"], ["billing.manage","✓","—","—","—","—","✓","—"], ["audit.read","✓","✓","—","—","—","—","✓"], ["members.invite","✓","✓","—","—","—","—","—"], ["sso.configure","✓","—","—","—","—","—","—"], ].map((r,i)=>( {r.slice(1).map((v,j)=>( ))} ))}
CapabilityOwnerAdminEditorViewerAPI-onlyBillingAuditor
{r[0]}{v}
)} {tab==="sso" && (

SAML 2.0 SSO

Status
configured
IdP
Okta · acme.okta.com
ACS URL
https://api.persona.dev/auth/saml/acs/org_acme
Entity ID
persona://org/acme
Enforcement
required for non-owner roles

SCIM provisioning

SCIM endpoint
https://api.persona.dev/scim/v2/org_acme
Bearer token
scim_⟨rotated 12d ago⟩
Last sync
3m ago · 14 users, 0 deprovisioned
Auto-deprovision
on (revoke API keys)
Enterprise feature. Group-to-role mapping configured in the Okta app.

IP allowlist

185.21.0.0/16acme office
2a05:d014::/32aws prod vpc
94.55.0.0/16zeki home (allow)

Session policy

Idle timeout60 min
Absolute max8 h
Concurrent sessions3 max
Require MFA
Step-up for billing
)} {tab==="sessions" && (
{[ ["zeki@persona.dev","macOS · Chrome 142","94.55.x.x","3h ago","2m"], ["can@acme.co","macOS · Safari 19","185.21.x.x","5h ago","18m"], ["selin@acme.co","Windows · Edge","185.21.x.x","yesterday","stale"], ].map((r,i)=>( ))}
UserDeviceIPStartedIdle
{r[0]}{r[1]}{r[2]}{r[3]}{r[4]}
)}
); }; // ---------- API Keys ---------- const PageKeys = () => (
Programmatic access

API keys

{D5.apiKeys.map(k=>( ))}
NamePrefixScopesRate limitLast used
{k.name} {k.prefix} {k.scopes.map(s=>{s})} {k.rate} {k.last}

Quick start

{`curl https://api.persona.dev/v1/personas \\ -H "Authorization: Bearer sk_live_…" \\ -H "Idempotency-Key: $(uuidgen)" \\ -d '{ "brief": "35, lonely bookseller in Istanbul", "language": "tr", "audit": true }'`}

OpenAI-compatible shim

{`POST /v1/chat/completions { "model": "persona://p_mert", "messages": [ {"role":"user","content":"Bugün dükkânda ne var?"} ], "stream": true }`}
); // ---------- Webhooks ---------- const PageWebhooks = () => (
Outbound events

Webhooks

{[ ["https://api.acme.co/persona/hooks", "persona.created · persona.updated · run.completed", "active", "99.4%", "182 ms"], ["https://hooks.slack.com/services/…", "moderation.flagged · drift.detected", "active", "100%", "94 ms"], ["https://eu.acme.co/persona/hooks", "all", "paused", "—", "—"], ].map((r,i)=>( ))}
EndpointEventsStatusSuccess rate (24h)Avg latency
{r[0]}{r[1]} {r[2]} {r[3]}{r[4]}

Recent deliveries

{[ ["persona.created","acme.co/hooks","200","1","2m ago"], ["run.completed","acme.co/hooks","200","1","2m ago"], ["moderation.flagged","slack","200","1","1h ago"], ["drift.detected","acme.co/hooks","500 → retried","3","2h ago"], ["persona.updated","eu.acme.co","timeout · dlq","5","3h ago"], ].map((r,i)=>( ))}
EventEndpointStatusAttemptsWhen
{r[0]}{r[1]} {r[2].includes("dlq")?{r[2]}:r[2].includes("retried")?{r[2]}:{r[2]}} {r[3]}{r[4]}
); window.PageConfig = PageConfig; window.PageMembers = PageMembers; window.PageKeys = PageKeys; window.PageWebhooks = PageWebhooks;