feat(settings): admin switch to allow or block members' test runs
Settings → AI tools → Tests on this server (admin, S3 only). Stored in /opt/agenthub/app/member-policy.json, which member-guard.js reads as the member at each Bash call — no restart; no file = blocked. GET/PUT /api/ai-tools/member-policy, audited, 409 ENOS3 outside S3.
This commit is contained in:
@@ -3782,6 +3782,14 @@ export const api = {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({ enabled }),
|
||||
}),
|
||||
/** GET /api/ai-tools/member-policy - what members' Claude may run (server mode, S3). */
|
||||
memberPolicy: () => request<MemberPolicyState>("/ai-tools/member-policy"),
|
||||
/** PUT /api/ai-tools/member-policy - an admin's switch. */
|
||||
setMemberPolicy: (allowTests: boolean) =>
|
||||
request<MemberPolicyState>("/ai-tools/member-policy", {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({ allowTests }),
|
||||
}),
|
||||
/** POST /api/ai-tools/refresh - re-read the login shell's PATH and re-detect. */
|
||||
refresh: () => request<AiToolsView>("/ai-tools/refresh", { method: "POST" }),
|
||||
/** PUT /api/ai-tools/:id - enable/disable a tool, make it the default, or set its default model ("" clears). */
|
||||
@@ -5274,6 +5282,13 @@ export interface ArtifactCandidate {
|
||||
}
|
||||
|
||||
/** `GET /api/ai-tools/omp-sharing` — never a token. */
|
||||
export interface MemberPolicyState {
|
||||
/** Server mode with per-user Linux accounts (S3): the only place it applies. */
|
||||
available: boolean;
|
||||
/** May members' Claude run test runners and container commands? Off by default. */
|
||||
allowTests: boolean;
|
||||
}
|
||||
|
||||
export interface OmpSharingState {
|
||||
/** Server mode with per-user Linux accounts (S3): the only place it applies. */
|
||||
available: boolean;
|
||||
|
||||
Reference in New Issue
Block a user