Extract memind_adm admin server, add local dev tooling, and remove image-generation.
Split platform admin and ops APIs into standalone admin-server.mjs with network guards; simplify billing to RMB token pricing, refactor user auth, and add rsync deploy plus local-test scripts and docs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+8
-27
@@ -41,7 +41,6 @@ import type {
|
||||
SessionEvent,
|
||||
SessionListResponse,
|
||||
UsageRecord,
|
||||
UsageSummary,
|
||||
BalanceUpdate,
|
||||
} from '../types';
|
||||
|
||||
@@ -272,15 +271,14 @@ export async function checkAuth(): Promise<AuthStatus> {
|
||||
if (!response.ok) return { authenticated: false };
|
||||
const status = (await response.json()) as AuthStatus;
|
||||
if (status.authenticated) resetUnauthorizedGuard();
|
||||
if (status.authenticated && status.mode === 'user') {
|
||||
if (status.authenticated && status.mode === 'user' && !status.capabilities) {
|
||||
try {
|
||||
const me = await getMe();
|
||||
return {
|
||||
...status,
|
||||
user: me.user ?? status.user,
|
||||
capabilities: me.capabilities ?? status.capabilities,
|
||||
grantedSkills: me.grantedSkills ?? status.grantedSkills,
|
||||
unrestricted: me.unrestricted ?? status.unrestricted,
|
||||
capabilities: me.capabilities,
|
||||
grantedSkills: me.grantedSkills,
|
||||
user: me.user,
|
||||
};
|
||||
} catch {
|
||||
return status;
|
||||
@@ -301,14 +299,8 @@ export async function getMe(): Promise<{
|
||||
return portalFetch('/auth/me');
|
||||
}
|
||||
|
||||
export async function getMyUsageSummary(): Promise<UsageSummary> {
|
||||
const result = await portalFetch<{ summary: UsageSummary }>('/auth/usage/summary');
|
||||
return result.summary;
|
||||
}
|
||||
|
||||
export async function getMyUsage(limit = 20): Promise<UsageRecord[]> {
|
||||
const query = limit ? `?limit=${encodeURIComponent(String(limit))}` : '';
|
||||
const result = await portalFetch<{ records: UsageRecord[] }>(`/auth/usage${query}`);
|
||||
export async function getMyUsage(): Promise<UsageRecord[]> {
|
||||
const result = await portalFetch<{ records: UsageRecord[] }>('/auth/usage');
|
||||
return result.records ?? [];
|
||||
}
|
||||
|
||||
@@ -1018,19 +1010,8 @@ export async function getAdminDashboardSummary(): Promise<AdminDashboardSummary>
|
||||
return result.summary;
|
||||
}
|
||||
|
||||
export async function getAdminUsageSummary(userId?: string): Promise<UsageSummary> {
|
||||
const params = new URLSearchParams();
|
||||
if (userId) params.set('userId', userId);
|
||||
const query = params.toString() ? `?${params.toString()}` : '';
|
||||
const result = await portalFetch<{ summary: UsageSummary }>(`/admin-api/usage/summary${query}`);
|
||||
return result.summary;
|
||||
}
|
||||
|
||||
export async function listAdminUsage(userId?: string, limit = 20): Promise<UsageRecord[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (userId) params.set('userId', userId);
|
||||
if (limit) params.set('limit', String(limit));
|
||||
const query = params.toString() ? `?${params.toString()}` : '';
|
||||
export async function listAdminUsage(userId?: string): Promise<UsageRecord[]> {
|
||||
const query = userId ? `?userId=${encodeURIComponent(userId)}` : '';
|
||||
const result = await portalFetch<{ records: UsageRecord[] }>(`/admin-api/usage${query}`);
|
||||
return result.records ?? [];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user