Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29,071 changes: 16,343 additions & 12,728 deletions .i18n-state.json

Large diffs are not rendered by default.

48 changes: 24 additions & 24 deletions docs/i18n/am/README.md

Large diffs are not rendered by default.

55 changes: 31 additions & 24 deletions docs/i18n/am/docs/architecture/AUTHZ_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

---

> **ዋና የእውነት ምንጭ:** `src/server/authz/`, `src/shared/constants/publicApiRoutes.ts`, `src/lib/api/requireManagementAuth.ts`, `src/shared/utils/apiAuth.ts`
> **ለመጨረሻ ጊዜ የተዘመነው:** 2026-06-28 — v3.8.40
> **የእውነት ምንጭ:** `src/server/authz/`, `src/shared/constants/publicApiRoutes.ts`, `src/lib/api/requireManagementAuth.ts`, `src/shared/utils/apiAuth.ts`
> **መጨረሻ የተዘመነው:** 2026-09-22 — የወሰን ስም-ክልሎች ወደ MCP-SERVER.md ያመለክታሉ

OmniRoute እያንዳንዱን የAPI ጥያቄ የሚቆጣጠር፣ መስመርን የሚያውቅ የፈቃድ መስጫ ቧንቧ መስመር አለው። ምደባው **ቆራጥ** እና **በስህተት ጊዜ ዝግ** ነው — ሊመደብ የማይችል ማንኛውም ነገር `MANAGEMENT` ሆኖ ያበቃል፣ እንዲሁም ክፍለ-ጊዜ ወይም የአስተዳደር ደረጃ ያለው ቶከን ይጠይቃል። ይህ ገጽ መስመሮችን ለሚንከባከቡ ወይም አዳዲስ መዳረሻዎችን ለሚነድፉ መሐንዲሶች ሞዴሉን ያብራራል።
OmniRoute እያንዳንዱን የAPI ጥያቄ የሚቆጣጠር፣ መንገድን የሚያውቅ የፈቃድ መስጫ ሂደት አለው። ምደባው **ቁርጥ ያለ** እና **ሲሳነው-ዝግ** ነው — ሊመደብ የማይችል ማንኛውም ነገር `MANAGEMENT` ሆኖ ይመደባል፣ እንዲሁም ክፍለ-ጊዜ ወይም የአስተዳደር-ደረጃ ቶከን ይጠይቃል። ይህ ገጽ መንገዶችን ለሚንከባከቡ ወይም አዳዲስ የመዳረሻ ነጥቦችን ለሚነድፉ መሐንዲሶች ሞዴሉን ያብራራል።

![የAuthZ ቧንቧ መስመር (3 የመስመር ክፍሎች + የፖሊሲ ግምገማ)](../diagrams/exported/authz-pipeline.svg)
![የAuthZ ሂደት (3 የመንገድ ምድቦች + የፖሊሲ ግምገማ)](../diagrams/exported/authz-pipeline.svg)

> ምንጭ፦ [diagrams/authz-pipeline.mmd](../diagrams/authz-pipeline.mmd)

Expand Down Expand Up @@ -198,28 +198,35 @@ export async function POST(request: Request) {

setን በቅርጹ መሠረት ይምረጡ፣ በአመቺነት መሠረት አይደለም። አንድ መስመር ወደ `PUBLIC_API_ROUTES_EXACT` ይገባል (ወይም GET-only ከሆነ ወደ `PUBLIC_READONLY_CORS_API_ROUTES`)፤ ወደ `PUBLIC_API_ROUTE_PREFIXES` የሚገባው እውነተኛ ንዑስ ዛፍ ብቻ ነው፣ እና **በ`/` መጨረስ አለበት**። ነጠላ መስመርን በprefix ዝርዝሩ ውስጥ ማስቀመጥ፣ ተመሳሳይ መሪ ቁምፊዎችን የሚጋሩ ሁሉንም አጎራባች paths ይፋዊ ያደርጋል — ይህም በኋላ የሚታከሉ dynamic-segment siblingsን ይጨምራል (GHSA-74g9-q8f6-793h)። በ`tests/unit/public-api-routes.test.ts`፣ `tests/unit/authz/public-route-exact-match.test.ts` እና `tests/unit/authz/classify.test.ts` ያሉ unit testsን ያዘምኑ።

## የተደራሽነት ወሰኖች
## የፈቃድ ወሰኖች

የAPI ቁልፎች የ`scopes` ድርድር ይይዛሉ (እንደ JSON በ`api_keys.scopes` ውስጥ ይቀመጣል፤ `src/lib/db/apiKeys.ts`ን ይመልከቱ)።
ሦስት namespace-ዎች አሉ። እያንዳንዱ checker የሚያነበው የራሱን string-ዎች ብቻ ነው። `manage` ለ`read:compression` በ`scopeMatches` ለምን እንደማይዛመድ እና የ`read` access token ለምን `PATCH /api/keys/{id}` ማድረግ እንደማይችል ጨምሮ፣ የጎን-ለጎን ንጽጽሩ
[ሦስቱ የፈቃድ ወሰን namespace-ዎች](../frameworks/MCP-SERVER.md#three-scope-namespaces) ላይ ይገኛል።

### የአስተዳደር ወሰን
API key-ዎች የ`scopes` array ይይዛሉ (በ`api_keys.scopes` ውስጥ እንደ JSON ይከማቻል፤ `src/lib/db/apiKeys.ts`ን ይመልከቱ)።

- `manage` / `admin` — ቁልፉ እንደ Bearer ሲላክ የአስተዳደር API መጨረሻ ነጥቦችን እንዲደርስ ፈቃድ ይሰጠዋል።
### የአስተዳደር ፈቃድ ወሰን

### MCP ወሰኖች (`src/shared/constants/mcpScopes.ts`)
- `manage` / `admin` — `hasManageScope`። ወደ የአስተዳደር API route-ዎች የBearer መዳረሻ።
- `mcp:connect`፣ `self:usage`፣ `self:account-quota` እና
`policy:bypass-provider-quota` በትክክል የሚዛመዱ ተጨማሪ የፈቃድ ወሰኖች ናቸው። እነዚህ
ከ`MANAGEMENT_API_KEY_SCOPES` ውጭ ይገኛሉ። `mcp:connect` የሚከፍተው
የ`/api/mcp/` non-loopback ልዩ ፈቃድን ብቻ ነው።

እያንዳንዱ MCP መሣሪያ በ`MCP_TOOL_SCOPES` በኩል የተወሰኑ ወሰኖችን ይፈልጋል። ሙሉ ዝርዝሩ (`MCP_SCOPE_LIST`)፦
### የMCP tool ፈቃድ ወሰኖች

```
read:health, read:combos, write:combos, read:quota, read:usage,
read:models, execute:completions, execute:search, write:budget,
write:resilience, pricing:write, read:cache, write:cache,
read:compression, write:compression, read:proxies
```
Catalog እና የማዛመድ ደንቦች (ተመሳሳይ string፣ ወይም በ`*` የሚያበቃ የተፈቀደ ወሰን)፦
[የMCP tool ፈቃድ ወሰኖች](../frameworks/MCP-SERVER.md#mcp-tool-scopes)።
በ`src/shared/constants/mcpScopes.ts` ውስጥ ያለው `MCP_SCOPE_LIST` ያ ሙሉ catalog ሳይሆን የመጀመሪያው typed
subset ነው። `resolveCallerScopeContext()` ከMCP auth info፣ ከrequest metadata ወይም ከ`OMNIROUTE_MCP_SCOPES`
የፈቃድ ወሰኖችን ከወሰነ በኋላ፣ ማስፈጸሙ በ`open-sse/mcp-server/scopeEnforcement.ts`
ውስጥ ይከናወናል። `OMNIROUTE_MCP_ENFORCE_SCOPES=true` ካልሆነ በስተቀር እንደጠፋ ይቆያል።

### የAccess-token ፈቃድ ወሰኖች

በ`open-sse/mcp-server/server.ts` ውስጥ ያለው የወሰን ማስፈጸሚያ፣ `resolveCallerScopeContext()` ወሰኖችን ከMCP የማረጋገጫ መረጃ፣
ከጥያቄ ሜታዳታ ወይም ከ`OMNIROUTE_MCP_SCOPES` ከፈታ በኋላ የእያንዳንዱን መሣሪያ የወሰን ዝርዝር ወደ
`evaluateToolScopes()` ያስተላልፋል።
በ`oma_live_…` token-ዎች ላይ `read` / `write` / `admin`፣ በ`scopeSatisfies`
(`src/lib/accessTokens/scopes.ts`) ደረጃ የተሰጣቸው። ይህ ደረጃ የሚሠራው ለaccess-token
credential ብቻ ነው። [የአስተዳደር ማረጋገጫ](../guides/MANAGEMENT-AUTH.md)ን ይመልከቱ።

## ማረጋገጫ ያስፈልጋል መቀያየሪያ

Expand Down Expand Up @@ -265,9 +272,9 @@ x-omniroute-auth-scopes: comma-separated list

በhandler ውስጥ `assertAuth(req, expectedClass)`ን ይጠቀሙ — middlewareው ከተዘለለ፣ `AUTHZ_NOT_INITIALIZED` ኮድ ያለውን `AuthzAssertionError` ይጥላል (ይህም በሙከራዎች ውስጥ የውቅር ወደኋላ መመለሶችን ለመለየት ጠቃሚ ነው)።

## ተጨማሪ ይመልከቱ
## በተጨማሪ ይመልከቱ

- [API_REFERENCE.md](../reference/API_REFERENCE.md) — ለእያንዳንዱ endpoint የማንነት ማረጋገጫ ምልክት
- [COMPLIANCE.md](../security/COMPLIANCE.md) — ለማንነት ማረጋገጫ ክስተቶች የኦዲት መዝገብ
- [MCP-SERVER.md](../frameworks/MCP-SERVER.md) — የMCP scope ማስፈጸሚያ ዝርዝሮች
- ምንጭ፦ `src/server/authz/`, `src/lib/api/requireManagementAuth.ts`
- [API_REFERENCE.md](../reference/API_REFERENCE.md) — ለእያንዳንዱ endpoint የauth ምልክት
- [COMPLIANCE.md](../security/COMPLIANCE.md) — ለauth ክስተቶች የኦዲት መዝገብ
- [MCP-SERVER.md](../frameworks/MCP-SERVER.md#three-scope-namespaces) — ሦስት የscope namespace እና የMCP tool-scope ካታሎግ
- ምንጭ፦ `src/server/authz/`፣ `src/lib/api/requireManagementAuth.ts`
66 changes: 33 additions & 33 deletions docs/i18n/am/docs/compression/COMPRESSION_ENGINES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,43 +9,43 @@ OmniRoute መጭመቅ በሞተር ውሎች ዙሪያ የተገነባ ነው

## ሁነታዎች

| ሁነታ | የሞተር መንገድ | የታሰበ ግብዓት |
| ------------ | -------------------------------- | -------------------------------------- |
| `off` | የለም | የጥያቄውን ትክክለኛ ቅርጽ መጠበቅ |
| `lite` | Caveman lite ረዳቶች | ዝቅተኛ ስጋት ያለው ሁልጊዜ ንቁ ማጽዳት |
| `standard` | Caveman | በተፈጥሯዊ ቋንቋ የተጻፈ ጥያቄን ማጠቃለል |
| `aggressive` | Caveman + የታሪክ/መሣሪያ ማጠቃለያዎች | ረጅም የውይይት ክፍለ ጊዜዎች |
| `ultra` | Caveman + የመከርከሚያ ረዳቶች | ከአውድ ገደብ ማገገም |
| `rtk` | RTK | የተርሚናል፣ shell፣ build፣ test እና git ውጤት |
| `omniglyph` | OmniGlyph | በቤተኛው የአቅራቢ ግንኙነት ላይ አውድን እንደ ምስል መጠቀም |
| `stacked` | የማስኬጃ መስመር፣ ነባሩ `rtk -> caveman` | የተቀላቀሉ የመሣሪያ ምዝግቦች እና ስድ ጽሑፍ፣ ከፍተኛ ቁጠባ |

### OmniGlyph የመጭመቂያ መገለጫዎች

የ`omniglyph` ሞተር (ጥቅል `omniglyph`፣ 1.4.0+) በመጭመቂያ ቅንብሮች ውስጥ
በ`omniglyph.profile` አማካይነት በአጠቃላይ፣ ወይም በተደራረበው የማስኬጃ መስመር የደረጃ ውቅር አማካይነት
ለእያንዳንዱ ደረጃ የሚዘጋጅ በስም የተሰየመ የፍቺ መገለጫ ይቀበላል፦

| መገለጫ | ወሰን |
| ------------- | -------------------------------------------------------------------------- |
| `aggressive` | ነባሪ። የታተሙት ደረሰኞች የለኩት መመሪያ — የስርዓት፣ የመሣሪያ ሰነዶች እና ጥቅጥቅ ያለ ታሪክ ምስሎች |
| `balanced` | ንቁ ሁኔታን በቤተኛ ቅርጹ ያቆያል፣ የመጨረሻዎቹን 8 ዙሮች ይጠብቃል፣ የቆየ የተዘጋ ታሪክን ይሰብስባል |
| `coding-safe` | ሥልጣንን፣ የመሣሪያ ንድፎችን እና ንቁ የመሣሪያ ውጤትን በቤተኛ ቅርጻቸው ያቆያል፣ የመጨረሻዎቹን 12 ዙሮች ይጠብቃል |
| `passthrough` | ሳይለውጥ ያስተላልፋል፤ ሞተሩ ይዘለላል |
| ሁነታ | የኤንጂኑ ዱካ | የታሰበለት ግብዓት |
| ------------ | ------------------------------------------------------------------------------------ | ----------------------------------------- |
| `off` | የለም | የጥያቄውን ቃል በቃል ማቆየት |
| `lite` | Caveman lite አጋዥ መሣሪያዎች | ዝቅተኛ ስጋት ያለው፣ ሁልጊዜ የሚሠራ ማጽዳት |
| `standard` | Caveman | የተፈጥሮ ቋንቋ ጥያቄን ማጠቃለል |
| `aggressive` | Caveman + የታሪክ/የመሣሪያ ማጠቃለያዎች | ረጅም የውይይት ክፍለ ጊዜዎች |
| `ultra` | Caveman + የመከርከሚያ አጋዥ መሣሪያዎች | ከአውድ ገደብ ማገገም |
| `rtk` | RTK | የተርሚናል፣ ሼል፣ ግንባታ፣ ሙከራ እና git ውጤት |
| `omniglyph` | OmniGlyph | በቤተኛው አቅራቢ የመረጃ መስመር ላይ አውድን እንደ ምስል ማቅረብ |
| `stacked` | የማስኬጃ ቅደም ተከተል። የጥያቄው ነባሪ `session-dedup -> lite` ነው። `rtk -> caveman` በምርጫ የሚነቃ ነው። | የተቀላቀሉ የመሣሪያ ምዝግቦች እና ጽሑፍ፣ ከፍተኛው ቁጠባ |

### የOmniGlyph መጭመቂያ መገለጫዎች

የ`omniglyph` ኤንጂን (ጥቅል `omniglyph`፣ 1.4.0+) በመጭመቂያ ቅንብሮች ውስጥ በ`omniglyph.profile`
በዓለም አቀፍ ደረጃ፣ ወይም በተደራረበው የማስኬጃ ቅደም ተከተል የደረጃ ውቅር በኩል ለእያንዳንዱ ደረጃ
የሚዘጋጅ ስያሜ ያለው የትርጉም መገለጫ ይቀበላል፦

| መገለጫ | ወሰን |
| ------------- | ------------------------------------------------------------------------ |
| `aggressive` | ነባሪ። የታተሙት መዝገቦች የለኩት መመሪያ — የስርዓት ምስሎች፣ የመሣሪያ ሰነዶች እና ጥቅጥቅ ያለ ታሪክ |
| `balanced` | ንቁ ሁኔታን በቤተኛ መልኩ ያቆያል፣ የመጨረሻዎቹን 8 ዙሮች ይጠብቃል፣ የቆየውን የተዘጋ ታሪክ ይጨምቃል |
| `coding-safe` | ሥልጣንን፣ የመሣሪያ ንድፎችን እና ንቁ የመሣሪያ ውጤትን በቤተኛ መልኩ ያቆያል፣ የመጨረሻዎቹን 12 ዙሮች ይጠብቃል |
| `passthrough` | ሳይቀይር ያስተላልፋል፤ ኤንጂኑ ይታለፋል |

መገለጫው **ጣሪያ እንጂ ወለል አይደለም**፦ በጥቅሉ ውስጥ ያለው `mergeCompressionProfileOptions`
የጠሪው ሽረዛ መገለጫው የዘጋውን መረጃ-አጥፊ መስመር እንደገና እንዲከፍት አይፈቅድም፤ ስለዚህ የእያንዳንዱ ደረጃ
`preserveSystemPrompt: false` በ`coding-safe` ስር የስርዓት መጭመቅን እንደገና ማንቃት አይችልም።
ጠሪው ያደረገው ሽረዛ መገለጫው የዘጋውን መረጃ አጥፊ መስመር እንደገና እንዲከፍት አይፈቅድም፤ ስለዚህ የእያንዳንዱ ደረጃ
`preserveSystemPrompt: false` በ`coding-safe` ስር የስርዓት መጭመቂያን እንደገና ማንቃት አይችልም።

በዚህ የኮድ መሠረት ላይ እንደተለካው፦ `coding-safe` እና `balanced` `minCompressChars`ን ወደ
ከፍተኛው ያሳድጋሉ፣ እንዲሁም ስርዓቱን፣ የመሣሪያ ንድፎችን እና የመሣሪያ ውጤቶችን በቤተኛ ቅርጻቸው ያቆያሉ፤ ስለዚህ ገና
ታሪክ ያልሰበሰበ ክፍለ ጊዜ በ`below_min_chars` ላይ ይቆማል፣ ሞተሩም ምንም ነገር አይለውጥም። ነባሩ
ከሁሉ ደህንነቱ የተጠበቀው መገለጫ ሳይሆን `aggressive` የሆነው ለዚህ ነው።
በዚህ የኮድ መሠረት ላይ የተለካው፦ `coding-safe` እና `balanced` `minCompressChars`ን ወደ
ከፍተኛው እሴት ያሳድጋሉ፣ እንዲሁም ስርዓቱን፣ የመሣሪያ ንድፎችን እና የመሣሪያ ውጤቶችን በቤተኛ መልኩ ያቆያሉ፤ ስለዚህ ገና
ታሪክ ያላከማቸ ክፍለ ጊዜ `below_min_chars` ላይ ይቆማል፣ እና ኤንጂኑ ምንም ነገር አይለውጥም።
ለዚህም ነው ነባሪው ከደህንነቱ ከፍተኛ መገለጫ ይልቅ `aggressive` የሆነው።

ጥቅሉ የራሱን የሞዴል ወሰን እና መገለጫ ከአካባቢ ውቅሩ ይወስናል።
OmniRoute ውሳኔውን ፈጽሞ አይወክልም፦ አስማሚው የሞዴል መግቢያውን በጥቅሉ
እጅግ ገዳቢ በሆነው ወሰን ላይ ይቆልፋል፤ ስለዚህ የአስተናጋጅ አካባቢ ቅንብሮች የተፈቀዱ ዝርዝሩን ማጥበብ ብቻ ይችላሉ እንጂ
ከOmniRoute የተለኩ ደረሰኞች በላይ ማስፋት ፈጽሞ አይችሉም።
OmniRoute ውሳኔውን ፈጽሞ አያስተላልፍም፦ አስማሚው የሞዴሉን መግቢያ በጥቅሉ ከሚፈቀደው
በጣም ጥብቅ ወሰን ላይ ያስቀምጣል፤ ስለዚህ የአስተናጋጁ የአካባቢ ቅንብሮች የፈቃድ ዝርዝሩን ማጥበብ ብቻ ይችላሉ እንጂ
ከOmniRoute የተለኩ መዝገቦች በላይ ማስፋት አይችሉም።

## የኤንጂን ሬጅስትሪ

Expand Down Expand Up @@ -372,7 +372,7 @@ prefixes፣ ወዘተ) በአጠቃላይ ጠቃሚ ነው።

## ማረጋገጫ

ለዚህ ክፍል የተመረጡት gates እነዚህ ናቸው፦
ለዚህ ክፍል የተወሰኑት የማረጋገጫ ደረጃዎች፦

```bash
node --import tsx/esm --test tests/unit/compression/rtk-*.test.ts tests/unit/compression/pipeline-integration.test.ts tests/unit/compression/context-compression-api.test.ts
Expand Down
Loading
Loading