Implement full task inspector with subtasks, activity, and inline edit

Migration 041 adds parent_task_id to tasks for subtask hierarchy.
TaskDetailDialog now has three tabs: Overview (description, assignee,
project, goal, workspace, runs with error messages), Subtasks (child
tasks with status), and Activity (audit events and approval history).
Inline edit overlay covers title, description, assignee, risk, priority,
and parent task. Task delete is available from the dialog footer.
This commit is contained in:
ZacharyZhang-NY committed 2026-06-07 17:55:59 -04:00
1 parent 7a36a12d08
commit 75e5d17a86
12 files changed
+289 -69

No files matched your search

+16
View File
@@ -90,6 +90,22 @@ export interface RunTaskInput {
taskId: string;
}
export interface UpdateTaskInput {
orgId: string;
taskId: string;
title: string;
description: string;
assigneeAgentId: string | null;
risk: RiskLevel;
priority: TaskPriority;
parentTaskId: string | null;
}
export interface DeleteTaskInput {
orgId: string;
taskId: string;
}
export interface CreateGoalInput {
orgId: string;
title: string;
@@ -17,9 +17,11 @@ import type {
CreateWorkspaceInput,
DeleteAutomationRuleInput,
DeleteDocumentInput,
DeleteTaskInput,
DeleteKnowledgeEntryInput,
UpdateAutomationRuleInput,
UpdateDocumentInput,
UpdateTaskInput,
CreateAuditReplayInput,
CreateChatSpaceInput,
CreateComplianceExportInput,
@@ -99,6 +101,8 @@ export interface DesktopApi {
createAgent(input: CreateAgentInput): Promise<DesktopResult<AppSnapshot>>;
updateAgent(input: UpdateAgentInput): Promise<DesktopResult<AppSnapshot>>;
createTask(input: CreateTaskInput): Promise<DesktopResult<AppSnapshot>>;
updateTask(input: UpdateTaskInput): Promise<DesktopResult<AppSnapshot>>;
deleteTask(input: DeleteTaskInput): Promise<DesktopResult<AppSnapshot>>;
updateTaskStatus(input: UpdateTaskStatusInput): Promise<DesktopResult<AppSnapshot>>;
runTask(input: RunTaskInput): Promise<DesktopResult<AppSnapshot>>;
createGoal(input: CreateGoalInput): Promise<DesktopResult<AppSnapshot>>;
+1
View File
@@ -105,6 +105,7 @@ export interface TaskRecord {
goalId: string | null;
workspaceId: string | null;
priority: TaskPriority;
parentTaskId: string | null;
requiresFilesystem: boolean;
createdAt: string;
updatedAt: string;
+2
View File
@@ -7,6 +7,8 @@ export const IPC_CHANNELS = {
createAgent: "agentcompany:create-agent",
updateAgent: "agentcompany:update-agent",
createTask: "agentcompany:create-task",
updateTask: "agentcompany:update-task",
deleteTask: "agentcompany:delete-task",
updateTaskStatus: "agentcompany:update-task-status",
runTask: "agentcompany:run-task",
createApproval: "agentcompany:create-approval",