mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 08:33:36 +00:00
feat: implement notifications and event history features
- Added Notification Service to manage project-level notifications, including creation, listing, marking as read, and dismissing notifications. - Introduced Event History Service to store and manage historical events, allowing for listing, retrieval, deletion, and replaying of events. - Integrated notifications into the server and UI, providing real-time updates for feature statuses and operations. - Enhanced sidebar and project switcher components to display unread notifications count. - Created dedicated views for managing notifications and event history, improving user experience and accessibility. These changes enhance the application's ability to inform users about important events and statuses, improving overall usability and responsiveness.
This commit is contained in:
@@ -32,7 +32,10 @@ import type {
|
||||
CreateIdeaInput,
|
||||
UpdateIdeaInput,
|
||||
ConvertToFeatureOptions,
|
||||
NotificationsAPI,
|
||||
EventHistoryAPI,
|
||||
} from './electron';
|
||||
import type { EventHistoryFilter } from '@automaker/types';
|
||||
import type { Message, SessionListItem } from '@/types/electron';
|
||||
import type { Feature, ClaudeUsageResponse, CodexUsageResponse } from '@/store/app-store';
|
||||
import type { WorktreeAPI, GitAPI, ModelDefinition, ProviderStatus } from '@/types/electron';
|
||||
@@ -514,7 +517,8 @@ type EventType =
|
||||
| 'worktree:init-completed'
|
||||
| 'dev-server:started'
|
||||
| 'dev-server:output'
|
||||
| 'dev-server:stopped';
|
||||
| 'dev-server:stopped'
|
||||
| 'notification:created';
|
||||
|
||||
/**
|
||||
* Dev server log event payloads for WebSocket streaming
|
||||
@@ -2440,6 +2444,43 @@ export class HttpApiClient implements ElectronAPI {
|
||||
},
|
||||
};
|
||||
|
||||
// Notifications API - project-level notifications
|
||||
notifications: NotificationsAPI & {
|
||||
onNotificationCreated: (callback: (notification: any) => void) => () => void;
|
||||
} = {
|
||||
list: (projectPath: string) => this.post('/api/notifications/list', { projectPath }),
|
||||
|
||||
getUnreadCount: (projectPath: string) =>
|
||||
this.post('/api/notifications/unread-count', { projectPath }),
|
||||
|
||||
markAsRead: (projectPath: string, notificationId?: string) =>
|
||||
this.post('/api/notifications/mark-read', { projectPath, notificationId }),
|
||||
|
||||
dismiss: (projectPath: string, notificationId?: string) =>
|
||||
this.post('/api/notifications/dismiss', { projectPath, notificationId }),
|
||||
|
||||
onNotificationCreated: (callback: (notification: any) => void): (() => void) => {
|
||||
return this.subscribeToEvent('notification:created', callback as EventCallback);
|
||||
},
|
||||
};
|
||||
|
||||
// Event History API - stored events for debugging and replay
|
||||
eventHistory: EventHistoryAPI = {
|
||||
list: (projectPath: string, filter?: EventHistoryFilter) =>
|
||||
this.post('/api/event-history/list', { projectPath, filter }),
|
||||
|
||||
get: (projectPath: string, eventId: string) =>
|
||||
this.post('/api/event-history/get', { projectPath, eventId }),
|
||||
|
||||
delete: (projectPath: string, eventId: string) =>
|
||||
this.post('/api/event-history/delete', { projectPath, eventId }),
|
||||
|
||||
clear: (projectPath: string) => this.post('/api/event-history/clear', { projectPath }),
|
||||
|
||||
replay: (projectPath: string, eventId: string, hookIds?: string[]) =>
|
||||
this.post('/api/event-history/replay', { projectPath, eventId, hookIds }),
|
||||
};
|
||||
|
||||
// MCP API - Test MCP server connections and list tools
|
||||
// SECURITY: Only accepts serverId, not arbitrary serverConfig, to prevent
|
||||
// drive-by command execution attacks. Servers must be saved first.
|
||||
|
||||
Reference in New Issue
Block a user