feat(mcp): подготовить сервер и доступ к приёмке

This commit is contained in:
Denozordec committed 2026-11-03 03:12:03 +07:00
commit bf3d50e1ff
3835 files changed
+537122

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
export type ContainerStatusFilter = "all" | "running" | "stopped" | "error" | "unknown"
const statuses = ["running","stopped","error","unknown"]
export function readContainersUrl(params: URLSearchParams) {
const server = params.get("server"), status = params.get("status"), search = params.get("q") ?? ""
let error: string | null = null
if (["server","status","q"].some(key=>params.getAll(key).length>1)) error="Параметры контекста контейнеров повторяются."
if(server!==null && (!/^[1-9]\d*$/.test(server)||!Number.isSafeInteger(Number(server)))) error="В ссылке указан неверный сервер."
if(status!==null&&!statuses.includes(status))error="В ссылке указан неизвестный статус."
if(search.length>200)error="Поиск в ссылке слишком длинный."
return {server:server??"all",status:(status??"all") as ContainerStatusFilter,search,error}
}
export function patchContainersUrl(params:URLSearchParams,changes:Record<string,string|null>) {
const next=new URLSearchParams(params)
for(const [key,value] of Object.entries(changes))if(value===null||value==="")next.delete(key);else next.set(key,value)
return "/containers"+(next.size?"?"+next.toString():"")
}