FN-5675: add mission branch strategy and planning breakdown controls
Add mission-level branch strategy support and expose planning breakdown controls across mission flows. - Extend mission/core data models and store logic to track and persist base-branch strategy metadata. - Update mission API routes and legacy adapters to read/write new mission branch strategy fields. - Enhance MissionManager and PlanningModeModal UX to configure branch strategy and planning breakdown behavior. - Add/adjust coverage across core, dashboard, and roadmap plugin tests for mission branch and planning flow behavior. - Add a changeset and mission docs updates for the new mission branch strategy behavior. Files changed: .changeset/fn-5675-mission-branch-strategy.md | 9 + docs/missions.md | 13 ++ packages/core/src/__tests__/db-migrate.test.ts | 12 +- .../src/__tests__/db-mission-base-branch.test.ts | 14 +- packages/core/src/__tests__/db.test.ts | 34 ++-- packages/core/src/__tests__/goals-schema.test.ts | 2 +- packages/core/src/__tests__/insight-store.test.ts | 10 +- packages/core/src/__tests__/mission-store.test.ts | 148 +++++++++++++- packages/core/src/__tests__/run-audit.test.ts | 2 +- packages/core/src/__tests__/secrets-schema.test.ts | 6 +- .../core/src/__tests__/store-merge-queue.test.ts | 2 +- packages/core/src/__tests__/task-documents.test.ts | 2 +- packages/core/src/db.ts | 9 +- packages/core/src/index.ts | 1 + packages/core/src/mission-store.ts | 64 ++++-- packages/core/src/mission-types.ts | 9 + packages/dashboard/app/api/legacy.ts | 23 ++- .../dashboard/app/components/MissionManager.tsx | 226 +++++++++++++++++++-- .../dashboard/app/components/PlanningModeModal.tsx | 9 +- .../components/__tests__/MissionManager.test.tsx | 100 +++++++++ .../PlanningModeModal.planning-flow.test.tsx | 91 +++++++++ packages/dashboard/app/components/mission-types.ts | 4 + .../dashboard/src/__tests__/mission-e2e.test.ts | 49 ++++- packages/dashboard/src/mission-routes.ts | 41 +++- .../src/store/__tests__/roadmap-store.test.ts | 4 +- 25 files changed, 808 insertions(+), 76 deletions(-) Fusion-Task-Id: FN-5675 Fusion-Task-Lineage: cfd13c13-9eff-4b82-90c3-88505d51bfb2
This commit is contained in:
@@ -3426,10 +3426,25 @@ export function createTasksFromPlanning(
|
||||
planningSessionId: string,
|
||||
subtasks: PlanningSubtaskDraft[],
|
||||
projectId?: string,
|
||||
options?: {
|
||||
branchSelection?: {
|
||||
mode: "project-default" | "auto-new" | "existing" | "custom-new";
|
||||
branchName?: string;
|
||||
baseBranch?: string;
|
||||
};
|
||||
branchAssignment?: {
|
||||
mode: "shared" | "per-task-derived";
|
||||
};
|
||||
},
|
||||
): Promise<{ tasks: Task[] }> {
|
||||
return api<{ tasks: Task[] }>(withProjectId("/planning/create-tasks", projectId), {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ planningSessionId, subtasks }),
|
||||
body: JSON.stringify({
|
||||
planningSessionId,
|
||||
subtasks,
|
||||
...(options?.branchSelection ? { branchSelection: options.branchSelection } : {}),
|
||||
...(options?.branchAssignment ? { branchAssignment: options.branchAssignment } : {}),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6803,6 +6818,10 @@ export interface Mission {
|
||||
title: string;
|
||||
description?: string;
|
||||
baseBranch?: string;
|
||||
branchStrategy?: {
|
||||
mode: "project-default" | "existing" | "custom-new" | "auto-per-task";
|
||||
branchName?: string;
|
||||
};
|
||||
status: MissionStatus;
|
||||
interviewState: "not_started" | "in_progress" | "completed" | "needs_update";
|
||||
autoAdvance?: boolean;
|
||||
@@ -6890,7 +6909,7 @@ export function fetchMissions(projectId?: string): Promise<MissionWithSummary[]>
|
||||
}
|
||||
|
||||
/** Create a new mission */
|
||||
export function createMission(input: { title: string; description?: string; autoAdvance?: boolean; autopilotEnabled?: boolean; baseBranch?: string }, projectId?: string): Promise<Mission> {
|
||||
export function createMission(input: { title: string; description?: string; autoAdvance?: boolean; autopilotEnabled?: boolean; baseBranch?: string; branchStrategy?: Mission["branchStrategy"] }, projectId?: string): Promise<Mission> {
|
||||
return api<Mission>(withProjectId("/missions", projectId), {
|
||||
method: "POST",
|
||||
body: JSON.stringify(input),
|
||||
|
||||
Reference in New Issue
Block a user