Files
BrowserOS/packages/browseros-agent/apps/agent/lib/acl/api.ts
Dani Akash f1c108b2ed feat: mcp acl guard (#710)
* feat: guard MCP actions with persisted ACL rules

* chore: add safe OpenClaw lifecycle logging
2026-04-16 01:11:13 +05:30

41 lines
1.1 KiB
TypeScript

import type { AclRule } from '@browseros/shared/types/acl'
type AclRulesResponse = {
aclRules: AclRule[]
}
async function parseJsonResponse(
response: Response,
): Promise<Record<string, unknown>> {
return response.json().catch(() => ({}))
}
export async function fetchServerAclRules(baseUrl: string): Promise<AclRule[]> {
const response = await fetch(`${baseUrl}/acl-rules`)
if (!response.ok) {
const data = await parseJsonResponse(response)
throw new Error(String(data.error ?? `HTTP ${response.status}`))
}
const data = (await response.json()) as AclRulesResponse
return data.aclRules
}
export async function updateServerAclRules(
baseUrl: string,
aclRules: AclRule[],
): Promise<AclRule[]> {
const response = await fetch(`${baseUrl}/acl-rules`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ aclRules }),
})
if (!response.ok) {
const data = await parseJsonResponse(response)
throw new Error(String(data.error ?? `HTTP ${response.status}`))
}
const data = (await response.json()) as AclRulesResponse
return data.aclRules
}