* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
16 KiB
Compliance & Audit (Filipino)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Pinagmulan ng katotohanan:
src/lib/compliance/,src/app/api/compliance/Huling na-update: 2026-06-28 — v3.8.40
Itinatala ng OmniRoute ang mga administratibong pagkilos, kaganapan sa authentication, pagbabago sa lifecycle ng mga kredensyal ng provider, at mga invocation ng MCP tool sa mga audit table na gumagamit ng SQLite. Tinatalakay ng pahinang ito kung ano ang itinatala, kung saan ito nakaimbak, kung gaano katagal itong pinananatili, kung paano maaaring mag-opt out ang mga API key, at kung paano i-query ang data.
Matatagpuan ang implementasyon sa src/lib/compliance/index.ts (T-43 — "Mga Kontrol sa Compliance") at src/lib/compliance/providerAudit.ts. Hindi kailanman nagta-throw ang mga audit write: kapag may anumang pagkabigo, tahimik na binabalewala ang call upang hindi masira ng audit logging ang pangunahing daloy ng request.
Ano ang Itinatala
Mga administratibong kaganapan sa audit (audit_log)
Ang bawat call sa logAuditEvent({ action, actor, target, details, ... }) ay lumilikha ng isang row. Sinusunod ng mga action string ang pattern na domain.verb (o domain.verb.outcome). Kabilang sa mga nakumpirmang uri ng action sa source tree ang:
| Action | Pinagmulan |
|---|---|
auth.login.success |
src/app/api/auth/login/route.ts |
auth.login.failed |
src/app/api/auth/login/route.ts |
auth.login.locked |
src/app/api/auth/login/route.ts |
auth.login.error |
src/app/api/auth/login/route.ts |
auth.login.misconfigured |
src/app/api/auth/login/route.ts |
auth.login.setup_required |
src/app/api/auth/login/route.ts |
auth.logout.success |
src/app/api/auth/logout/route.ts |
provider.credentials.created |
src/app/api/providers/route.ts |
provider.credentials.updated |
src/app/api/providers/[id]/route.ts |
provider.credentials.revoked |
src/app/api/providers/[id]/route.ts |
provider.credentials.batch_revoked |
src/app/api/providers/route.ts |
sync.token.created |
src/app/api/sync/tokens/route.ts |
sync.token.revoked |
src/app/api/sync/tokens/[id]/route.ts |
compliance.cleanup |
src/lib/compliance/index.ts |
Kinukuha ng bawat entry ang action, actor (na nagde-default sa "system"), target, details/metadata (JSON), ip_address, resource_type, status, request_id, at timestamp. Ang mga sensitibong key (apiKey, accessToken, refreshToken, password, anumang tumutugma sa *token/*secret/*apikey, atbp.) ay nire-redact nang recursive bilang "[redacted]" bago isulat ang row.
Mga call sa MCP tool (mcp_tool_audit)
Ang bawat invocation ng MCP tool ay nagsusulat ng isang row sa pamamagitan ng open-sse/mcp-server/audit.ts. Schema (mula sa src/lib/db/migrations/002_mcp_a2a_tables.sql):
| Column | Mga tala |
|---|---|
id |
awtomatikong nag-i-increment |
tool_name |
identifier ng MCP tool |
input_hash |
sha256 ng input (walang payload na iniimbak) |
output_summary |
maikli at pinutol na buod |
duration_ms |
kabuuang oras |
api_key_id |
tumatawag (maaaring null) |
success |
1 / 0 |
error_code |
terminal error code kapag nabigo |
created_at |
ISO timestamp |
Mga log ng request / paggamit
Ang mga ito ay operational telemetry (hindi mahigpit na admin audit), ngunit ginagamit ng mga ito ang parehong retention pipeline:
usage_history— pinagsama-samang paggamit kada requestcall_logs— kumpletong log kada request (napapailalim sa limitasyon sa dami ng row, tingnan sa ibaba)proxy_logs— log ng proxy traffic (napapailalim sa limitasyon sa dami ng row)request_detail_logs— legacy na detalyadong log ng request (pinu-prune pa rin kung mayroon)
Schema ng Storage
Ang audit_log ay ginagawa nang lazy ng ensureAuditLogSchema() sa unang paggamit:
CREATE TABLE IF NOT EXISTS audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL DEFAULT (datetime('now')),
action TEXT NOT NULL,
actor TEXT NOT NULL DEFAULT 'system',
target TEXT,
details TEXT,
ip_address TEXT,
resource_type TEXT,
status TEXT,
request_id TEXT,
metadata TEXT
);
Ginagawa ang mga index sa timestamp, action, actor, resource_type,
status, at request_id. Ang mga nawawalang column sa mga legacy DB ay idinaragdag sa pamamagitan ng
ALTER TABLE kapag kinakailangan.
Retention at Cleanup
Dalawang magkahiwalay na panahon ng retention ang sinusunod:
| Env var | Default | Nalalapat sa |
|---|---|---|
APP_LOG_RETENTION_DAYS |
7 |
audit_log, mcp_tool_audit |
CALL_LOG_RETENTION_DAYS |
7 |
usage_history, call_logs, proxy_logs, request_detail_logs |
CALL_LOGS_TABLE_MAX_ROWS |
100000 |
Pag-trim ayon sa limitasyon ng row para sa call_logs |
PROXY_LOGS_TABLE_MAX_ROWS |
100000 |
Pag-trim ayon sa limitasyon ng row para sa proxy_logs |
Pinapatakbo ng cleanupExpiredLogs() ang proseso ng retention. Tinatawag ito sa pagsisimula ng server
mula sa src/instrumentation-node.ts. Ang bawat pagtakbo ay nagla-log ng
compliance.cleanup audit event kasama ang bilang ng mga naburang entry sa bawat table. Ang pag-trim ng proxy/call
log ay ginagawa nang batch (BATCH_SIZE = 5000) upang maiwasan ang matagal na write lock.
Ang manu-manong cleanup ng history ng request ay hiwalay sa retention. Tinatawag ng pahina ng Request Logs
ang POST /api/settings/purge-request-history, na nagbubura sa call_logs,
legacy na request_detail_logs, at mga lokal na artifact ng request sa ilalim ng
${DATA_DIR}/call_logs/.
Ang mga default ay tinukoy sa src/lib/logEnv.ts
(DEFAULT_APP_LOG_RETENTION_DAYS = 7, DEFAULT_CALL_LOG_RETENTION_DAYS = 7).
noLog Opt-Out (bawat API key)
Maaaring lagyan ng flag ang mga API key upang hindi ma-log ang kanilang downstream call traffic. Ang
flag ay nasa table na api_keys (no_log INTEGER DEFAULT 0) at minamirror
sa isang in-memory set para sa mabilisang lookup.
# Gumawa ng no-log key (kailangan ng management auth)
curl -X POST http://localhost:20128/api/keys \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{"name": "Privacy key", "noLog": true}'
Mga helper (src/lib/compliance/index.ts):
setNoLog(apiKeyId, true|false)— i-toggle ang in-memory entryisNoLog(apiKeyId)— sinusuri sa request path; bumabalik sa isang 30 s na naka-cache na pagbasa mula saapi_keys.no_logNO_LOG_API_KEY_IDS(env, pinaghihiwalay ng kuwit) — paunang nilo-load sa in-memory set sa pag-boot; kapaki-pakinabang kapag hindi mo direktang ma-toggle ang column
Ang mga administratibong audit event (pag-login, mga pagbabago sa provider, mga MCP tool call, atbp.)
ay hindi naaapektuhan ng noLog — tanging ang pag-log ng traffic ng bawat request ang
hindi isinasali.
REST API
| Endpoint | Paraan | Paglalarawan | Auth |
|---|---|---|---|
/api/compliance/audit-log |
GET |
Mga naka-pahina at na-filter na admin audit entry | management |
/api/mcp/audit |
GET |
Mga naka-pahinang MCP tool audit entry | (open-sse) |
/api/mcp/audit/stats |
GET |
Pinagsama-samang estadistika ng MCP audit | (open-sse) |
Walang kasamang endpoint para sa pag-export ng CSV sa kasalukuyan — mag-export mula sa dashboard o direktang mag-query sa SQLite database.
Pag-query sa /api/compliance/audit-log
Mga sinusuportahang query param (opsyonal ang lahat, at gumagamit ang lahat ng LIKE %value% na pagtutugma para sa
mga text filter):
action,actor,target,resourceType(oresource_type),status,requestId(orequest_id)from/since,to/until— mga ISO timestamplimit(default na50, min na1, max na500)offset(default na0, max na10_000)
Ang tugon ay isang JSON array. Ibinabalik sa mga header ang metadata ng pagination:
x-total-count, x-page-limit, x-page-offset.
curl "http://localhost:20128/api/compliance/audit-log?action=provider.credentials&from=2026-05-01" \
-H "Cookie: auth_token=..."
Dashboard
Inilalantad ng dashboard ang audit data sa /dashboard/audit
(src/app/(dashboard)/dashboard/audit/page.tsx). May dalawang tab ang pahina:
- Pagsunod (
ComplianceTab.tsx) — mga admin audit event mula sa/api/compliance/audit-log. Nagfi-filter ayon sa uri ng event, kalubhaan (info / warning / critical, na hinango mula sa action + status), at saklaw ng petsa. Ang kalubhaan ay kinukuwenta sa client-side mula sa mga action/status string. - MCP (
McpAuditTab.tsx) — MCP tool audit mula sa/api/mcp/audit, na may mga filter ayon sa pangalan ng tool at tagumpay/pagkabigo.
Parehong gumagamit ng pagination ang mga tab, na may mga laki ng pahina na 50 (pagsunod) at 25 (MCP).
Mga Helper para sa Kredensyal ng Provider
Nagbibigay ang src/lib/compliance/providerAudit.ts ng mga shaping helper na ginagamit ng mga
route sa pamamahala ng provider kapag naglalabas ang mga ito ng mga credential event:
summarizeProviderConnectionForAudit(connection)— inaalis angapiKey,accessToken,refreshToken,idToken, atproviderSpecificData.consoleApiKeybago isulat ang snapshot ng koneksyon sadetails.getProviderAuditTarget(connection)— bumubuo ng stable na"<provider>:<name|id>"string para sa field natarget.extractProviderWarnings(...payloads)— sinusuri ang mga tugon ng provider para sa mga babala sa patakaran/kaligtasan ([sanitizer],prompt injection detected,content has been filtered,safety filter,policy violation) at inilalantad ang hanggang 5 tugma, na ang bawat isa ay pinaikli sa 400 character.
Mga Pinakamahusay na Kasanayan
- Markahan ang mga API key na humahawak ng PII (legal, medikal, atbp.) gamit ang
noLog: true. - I-tune ang
APP_LOG_RETENTION_DAYS/CALL_LOG_RETENTION_DAYSupang matugunan ang inyong patakaran sa pagpapanatili. Konserbatibo ang mga default na 7 araw. - I-export ang audit table sa labas ng platform (
sqlite3 dump) ayon sa anumang iskedyul na kinakailangan ng inyong programa sa pagsunod — walang built-in na pag-archive. - Subaybayan ang bilang ng
auth.login.failedatauth.login.lockedpara sa pagtukoy ng brute-force. - Kapag nagdaragdag ng mga bagong admin endpoint, tawagin ang
logAuditEvent({ ... })gamit ang isang stable nadomain.verb.outcomeaction string at ipasa ang request context sa pamamagitan nggetAuditRequestContext(request)upang awtomatikong makuha ang IP atrequestId.
Tingnan Din
docs/security/GUARDRAILS.md— pagtatakip ng PII, prompt injectiondocs/frameworks/MCP-SERVER.md— katalogo at mga saklaw ng MCP tooldocs/reference/ENVIRONMENT.md— kumpletong sanggunian ng mga environment variable- Pinagmulan:
src/lib/compliance/,src/app/api/compliance/,src/app/api/mcp/audit/,src/lib/logEnv.ts