feat(KB-635): integrate mission workflows across CLI, extension, and engine
- Add mission CLI commands and pi extension tools for creating missions, milestones, slices, features, and task links - Extend core mission storage and schema migrations with auto-advance support, task slice linkage, and comment normalization coverage - Wire mission-aware scheduler and executor behavior so linked features progress with task execution and completed slices can auto-activate follow-on work - Add regression tests for mission CLI parsing, extension behaviors, scheduler mission semantics, and executor integration
This commit is contained in:
@@ -255,6 +255,7 @@ CREATE TABLE IF NOT EXISTS missions (
|
||||
description TEXT,
|
||||
status TEXT NOT NULL,
|
||||
interviewState TEXT NOT NULL,
|
||||
autoAdvance INTEGER DEFAULT 0,
|
||||
createdAt TEXT NOT NULL,
|
||||
updatedAt TEXT NOT NULL
|
||||
);
|
||||
@@ -395,6 +396,7 @@ export class Database {
|
||||
|
||||
if (version < 5) {
|
||||
this.applyMigration(5, () => {
|
||||
this.addColumnIfMissing("missions", "autoAdvance", "INTEGER DEFAULT 0");
|
||||
this.migrateLegacyCommentsToUnifiedComments();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -93,6 +93,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
|
||||
description: row.description || undefined,
|
||||
status: row.status as MissionStatus,
|
||||
interviewState: row.interviewState as InterviewState,
|
||||
autoAdvance: Boolean(row.autoAdvance),
|
||||
createdAt: row.createdAt,
|
||||
updatedAt: row.updatedAt,
|
||||
};
|
||||
@@ -169,19 +170,21 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
|
||||
description: input.description,
|
||||
status: "planning",
|
||||
interviewState: "not_started",
|
||||
autoAdvance: false,
|
||||
createdAt: now,
|
||||
updatedAt: now,
|
||||
};
|
||||
|
||||
this.db.prepare(`
|
||||
INSERT INTO missions (id, title, description, status, interviewState, createdAt, updatedAt)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
INSERT INTO missions (id, title, description, status, interviewState, autoAdvance, createdAt, updatedAt)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`).run(
|
||||
mission.id,
|
||||
mission.title,
|
||||
mission.description ?? null,
|
||||
mission.status,
|
||||
mission.interviewState,
|
||||
mission.autoAdvance ? 1 : 0,
|
||||
mission.createdAt,
|
||||
mission.updatedAt,
|
||||
);
|
||||
@@ -270,6 +273,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
|
||||
description = ?,
|
||||
status = ?,
|
||||
interviewState = ?,
|
||||
autoAdvance = ?,
|
||||
updatedAt = ?
|
||||
WHERE id = ?
|
||||
`).run(
|
||||
@@ -277,6 +281,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
|
||||
updated.description ?? null,
|
||||
updated.status,
|
||||
updated.interviewState,
|
||||
updated.autoAdvance ? 1 : 0,
|
||||
updated.updatedAt,
|
||||
updated.id,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user