FN-5703: forward task:deleted events through in-process runtime
Ensure engine-side task deletes propagate through all runtime transports so GitHub tracking cleanup runs consistently. - extend IPC protocol and child-process runtime/worker plumbing to carry `task:deleted` events - forward `task:deleted` from in-process runtime through project runtime and project manager dispatch - add regression coverage for in-process runtime forwarding and GitHub tracking delete handling Files changed: .../src/__tests__/github-tracking-delete.test.ts | 29 ++++++++++++++++++ .../src/__tests__/in-process-runtime.test.ts | 34 +++++++++++++++++++++- packages/engine/src/ipc/ipc-protocol.ts | 14 ++++++++- packages/engine/src/project-manager.ts | 7 +++++ packages/engine/src/project-runtime.ts | 4 ++- .../engine/src/runtimes/child-process-runtime.ts | 6 ++++ .../engine/src/runtimes/child-process-worker.ts | 14 +++++++-- packages/engine/src/runtimes/in-process-runtime.ts | 10 ++++++- 8 files changed, 111 insertions(+), 7 deletions(-) Fusion-Task-Id: FN-5703 Fusion-Task-Lineage: 1406838b-5abf-4b86-8161-c2dd59f88a9b
This commit is contained in:
@@ -22,11 +22,13 @@ import {
|
||||
TASK_CREATED,
|
||||
TASK_MOVED,
|
||||
TASK_UPDATED,
|
||||
TASK_DELETED,
|
||||
ERROR_EVENT,
|
||||
HEALTH_CHANGED,
|
||||
type TaskCreatedPayload,
|
||||
type TaskMovedPayload,
|
||||
type TaskUpdatedPayload,
|
||||
type TaskDeletedPayload,
|
||||
type ErrorEventPayload,
|
||||
type HealthChangedPayload,
|
||||
} from "../ipc/ipc-protocol.js";
|
||||
@@ -296,6 +298,10 @@ export class ChildProcessRuntime
|
||||
this.emit("task:updated", payload.task);
|
||||
});
|
||||
|
||||
this.ipcHost.on(TASK_DELETED, (payload: TaskDeletedPayload) => {
|
||||
this.emit("task:deleted", payload.task, payload.meta);
|
||||
});
|
||||
|
||||
// Forward error events
|
||||
this.ipcHost.on(ERROR_EVENT, (payload: ErrorEventPayload) => {
|
||||
const error = new Error(payload.message);
|
||||
|
||||
@@ -18,6 +18,10 @@ import {
|
||||
STOP_RUNTIME,
|
||||
GET_STATUS,
|
||||
GET_METRICS,
|
||||
TASK_CREATED,
|
||||
TASK_MOVED,
|
||||
TASK_UPDATED,
|
||||
TASK_DELETED,
|
||||
ERROR_EVENT,
|
||||
type StartRuntimePayload,
|
||||
} from "../ipc/ipc-protocol.js";
|
||||
@@ -76,15 +80,19 @@ ipcWorker.onCommand(START_RUNTIME, async (payload: unknown) => {
|
||||
|
||||
// Forward runtime events to host
|
||||
runtime.on("task:created", (task) => {
|
||||
ipcWorker.sendEvent("TASK_CREATED", { task });
|
||||
ipcWorker.sendEvent(TASK_CREATED, { task });
|
||||
});
|
||||
|
||||
runtime.on("task:moved", (data) => {
|
||||
ipcWorker.sendEvent("TASK_MOVED", data);
|
||||
ipcWorker.sendEvent(TASK_MOVED, data);
|
||||
});
|
||||
|
||||
runtime.on("task:updated", (task) => {
|
||||
ipcWorker.sendEvent("TASK_UPDATED", { task });
|
||||
ipcWorker.sendEvent(TASK_UPDATED, { task });
|
||||
});
|
||||
|
||||
runtime.on("task:deleted", (task, meta) => {
|
||||
ipcWorker.sendEvent(TASK_DELETED, { task, meta });
|
||||
});
|
||||
|
||||
runtime.on("error", (error) => {
|
||||
|
||||
@@ -10,6 +10,7 @@ import type {
|
||||
PluginLoader,
|
||||
MessageStore,
|
||||
RoutineStore,
|
||||
GithubIssueAction,
|
||||
} from "@fusion/core";
|
||||
import { ChatStore, createCentralDatabase, isEphemeralAgent } from "@fusion/core";
|
||||
import { Scheduler } from "../scheduler.js";
|
||||
@@ -1284,7 +1285,8 @@ export class InProcessRuntime
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up event forwarding from TaskStore to runtime listeners.
|
||||
* Set up event forwarding from TaskStore to runtime listeners
|
||||
* for task:created, task:moved, task:updated, and task:deleted.
|
||||
*/
|
||||
private setupEventForwarding(): void {
|
||||
// Forward task:created events
|
||||
@@ -1305,6 +1307,12 @@ export class InProcessRuntime
|
||||
this.emit("task:updated", task);
|
||||
});
|
||||
|
||||
// Forward task:deleted events
|
||||
this.taskStore.on("task:deleted", (task: Task, meta?: { githubIssueAction?: GithubIssueAction }) => {
|
||||
this.recordActivity();
|
||||
this.emit("task:deleted", task, meta);
|
||||
});
|
||||
|
||||
runtimeLog.log("Event forwarding setup complete");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user