Update README with current features and screenshots

- Cross-platform support (Windows/Linux) with Windows Updates and Winget
- Added dependency confirmation workflow and refresh token authentication
- New screenshots: History, Live Operations, Windows Agent Details
- Local CLI features with terminal output and cache system
- Updated known limitations - Proxmox integration is broken
- Organized docs to docs/ folder and updated .gitignore
- Probably introduced a dozen bugs with Windows agents - stay tuned
This commit is contained in:
Fimeg
2025-10-17 15:28:22 -04:00
parent 61294ba514
commit 2ade509b63
65 changed files with 7342 additions and 424 deletions

View File

@@ -113,6 +113,40 @@ export const updateApi = {
installUpdate: async (id: string): Promise<void> => {
await api.post(`/updates/${id}/install`);
},
// Get update logs
getUpdateLogs: async (id: string, limit?: number): Promise<{ logs: any[]; count: number }> => {
const response = await api.get(`/updates/${id}/logs`, {
params: limit ? { limit } : undefined
});
return response.data;
},
// Retry a failed, timed_out, or cancelled command
retryCommand: async (commandId: string): Promise<{ message: string; command_id: string; new_id: string }> => {
const response = await api.post(`/commands/${commandId}/retry`);
return response.data;
},
// Cancel a pending or sent command
cancelCommand: async (commandId: string): Promise<{ message: string }> => {
const response = await api.post(`/commands/${commandId}/cancel`);
return response.data;
},
// Get active commands for live command control
getActiveCommands: async (): Promise<{ commands: any[]; count: number }> => {
const response = await api.get('/commands/active');
return response.data;
},
// Get recent commands for retry functionality
getRecentCommands: async (limit?: number): Promise<{ commands: any[]; count: number; limit: number }> => {
const response = await api.get('/commands/recent', {
params: limit ? { limit } : undefined
});
return response.data;
},
};
export const statsApi = {
@@ -123,6 +157,41 @@ export const statsApi = {
},
};
export const logApi = {
// Get all logs with filtering for universal log view
getAllLogs: async (params?: {
page?: number;
page_size?: number;
agent_id?: string;
action?: string;
result?: string;
since?: string;
}): Promise<{ logs: any[]; total: number; page: number; page_size: number }> => {
const response = await api.get('/logs', { params });
return response.data;
},
// Get active operations for live status view
getActiveOperations: async (): Promise<{ operations: any[]; count: number }> => {
const response = await api.get('/logs/active');
return response.data;
},
// Get active commands for live command control
getActiveCommands: async (): Promise<{ commands: any[]; count: number }> => {
const response = await api.get('/commands/active');
return response.data;
},
// Get recent commands for retry functionality
getRecentCommands: async (limit?: number): Promise<{ commands: any[]; count: number; limit: number }> => {
const response = await api.get('/commands/recent', {
params: limit ? { limit } : undefined
});
return response.data;
},
};
export const authApi = {
// Simple login (using API key or token)
login: async (credentials: { token: string }): Promise<{ token: string }> => {