Tighten CLI retry behavior and restore constructor-safe test/runtime wiring. - move CLI merge retries back to todo before clearing retry metadata so resets persist - add a plugin SDK runtime shim for @fusion/core board actions and alias it in the CLI bundle - harden CLI daemon, serve, dashboard, research, and task tests against stale non-constructible mocks - add a patch changeset for the published CLI package Files changed: .changeset/fn-6173-cli-fixes.md | 5 + packages/cli/src/__tests__/task-retry.test.ts | 4 +- packages/cli/src/commands/__tests__/daemon.test.ts | 182 ++++++++++-------- .../cli/src/commands/__tests__/dashboard.test.ts | 69 ++++--- .../cli/src/commands/__tests__/research.test.ts | 27 ++- packages/cli/src/commands/__tests__/serve.test.ts | 204 ++++++++++++--------- packages/cli/src/commands/__tests__/task.test.ts | 61 +++--- packages/cli/src/commands/task.ts | 15 +- packages/cli/src/plugin-sdk-core-runtime-shim.ts | 33 ++++ packages/cli/tsup.config.ts | 7 + 10 files changed, 385 insertions(+), 222 deletions(-) Fusion-Task-Id: FN-6173 Fusion-Task-Lineage: 50bdbadd-39f7-4b43-bcf8-3891271917db
34 lines
974 B
TypeScript
34 lines
974 B
TypeScript
import type { BoardActionTaskStore, ColumnId, Task } from "@fusion/core";
|
|
|
|
export const WORKFLOW_EXTENSION_SCHEMA_VERSION = 1 as const;
|
|
|
|
export function workflowExtensionRegistryId(pluginId: string, extensionId: string): string {
|
|
return `plugin:${pluginId}:${extensionId}`;
|
|
}
|
|
|
|
export interface MoveBoardTaskInput {
|
|
taskId: string;
|
|
column: ColumnId;
|
|
preserveProgress?: boolean;
|
|
source?: "user" | "engine" | "scheduler";
|
|
}
|
|
|
|
export interface UpdateBoardTaskInput {
|
|
taskId: string;
|
|
updates: Record<string, unknown>;
|
|
}
|
|
|
|
export function createBoardActionServices(store: BoardActionTaskStore) {
|
|
return {
|
|
moveTask(input: MoveBoardTaskInput): Promise<Task> {
|
|
return store.moveTask(input.taskId, input.column, {
|
|
preserveProgress: input.preserveProgress,
|
|
moveSource: input.source ?? "user",
|
|
});
|
|
},
|
|
updateTask(input: UpdateBoardTaskInput): Promise<Task> {
|
|
return store.updateTask(input.taskId, input.updates);
|
|
},
|
|
};
|
|
}
|