Add meetings, sprints, and approval decision notes

Migration 042 creates meetings and sprints tables, adds decision_notes
to approvals. Full-stack: MeetingService, SprintService, IPC channels,
preload bridge, domain types. UI: MeetingsPage with scheduling and
type filtering, SprintsPage with progress tracking, ApprovalDetailDialog
with decision notes textarea.
This commit is contained in:
ZacharyZhang-NY committed 2026-06-07 18:01:58 -04:00
1 parent 75e5d17a86
commit ed9b3a3dd1
18 files changed
+430 -12

No files matched your search

+28
View File
@@ -143,6 +143,7 @@ export interface DecideApprovalInput {
approvalId: string;
state: Extract<ApprovalState, "approved" | "declined">;
decidedByEmployeeId: string;
notes?: string;
}
export interface SyncEmployeeIdentityInput {
@@ -554,6 +555,33 @@ export interface DeleteAutomationRuleInput {
ruleId: string;
}
export interface CreateMeetingInput {
orgId: string;
title: string;
meetingType: string;
scheduledAt: string | null;
durationMinutes: number;
agenda: string;
}
export interface DeleteMeetingInput {
orgId: string;
meetingId: string;
}
export interface CreateSprintInput {
orgId: string;
name: string;
goal: string;
startDate: string;
endDate: string;
}
export interface DeleteSprintInput {
orgId: string;
sprintId: string;
}
export interface NativeDialogResult {
canceled: boolean;
filePaths: string[];
@@ -12,6 +12,10 @@ import type {
CreateAutomationRuleInput,
CreateDocumentInput,
CreateGoalInput,
CreateMeetingInput,
CreateSprintInput,
DeleteMeetingInput,
DeleteSprintInput,
CreateKnowledgeEntryInput,
CreateProjectInput,
CreateWorkspaceInput,
@@ -116,6 +120,10 @@ export interface DesktopApi {
createAutomationRule(input: CreateAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
updateAutomationRule(input: UpdateAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
deleteAutomationRule(input: DeleteAutomationRuleInput): Promise<DesktopResult<AppSnapshot>>;
createMeeting(input: CreateMeetingInput): Promise<DesktopResult<AppSnapshot>>;
deleteMeeting(input: DeleteMeetingInput): Promise<DesktopResult<AppSnapshot>>;
createSprint(input: CreateSprintInput): Promise<DesktopResult<AppSnapshot>>;
deleteSprint(input: DeleteSprintInput): Promise<DesktopResult<AppSnapshot>>;
createApproval(input: CreateApprovalInput): Promise<DesktopResult<AppSnapshot>>;
decideApproval(input: DecideApprovalInput): Promise<DesktopResult<AppSnapshot>>;
syncEmployeeIdentity(input: SyncEmployeeIdentityInput): Promise<DesktopResult<AppSnapshot>>;
+33
View File
@@ -178,11 +178,42 @@ export interface ApprovalRecord {
sourceEntityType: string | null;
sourceEntityId: string | null;
state: ApprovalState;
decisionNotes: string | null;
decidedByEmployeeId: string | null;
createdAt: string;
decidedAt: string | null;
}
export interface MeetingRecord {
id: string;
orgId: string;
title: string;
meetingType: string;
status: string;
scheduledAt: string | null;
durationMinutes: number;
agenda: string;
notes: string;
decisions: string;
createdAt: string;
updatedAt: string;
}
export interface SprintRecord {
id: string;
orgId: string;
name: string;
goal: string;
status: string;
startDate: string;
endDate: string;
velocityPoints: number;
completedPoints: number;
retrospective: string;
createdAt: string;
updatedAt: string;
}
export type {
ChatSpaceRecord,
ChatMessageRecord,
@@ -488,4 +519,6 @@ export interface AppSnapshot {
documents: DocumentRecord[];
knowledgeEntries: KnowledgeEntryRecord[];
automationRules: AutomationRuleRecord[];
meetings: MeetingRecord[];
sprints: SprintRecord[];
}
+4
View File
@@ -70,6 +70,10 @@ export const IPC_CHANNELS = {
createAutomationRule: "agentcompany:create-automation-rule",
updateAutomationRule: "agentcompany:update-automation-rule",
deleteAutomationRule: "agentcompany:delete-automation-rule",
createMeeting: "agentcompany:create-meeting",
deleteMeeting: "agentcompany:delete-meeting",
createSprint: "agentcompany:create-sprint",
deleteSprint: "agentcompany:delete-sprint",
search: "agentcompany:search",
rendererEvent: "agentcompany:renderer-event",
windowMinimize: "agentcompany:window-minimize",