feat(workflow): enforce review-only done for agent assignees + reviewer decision endpoint
This commit is contained in:
@@ -32,6 +32,7 @@ export * from "./task";
|
||||
export * from "./taskComment";
|
||||
export * from "./taskCommentCreate";
|
||||
export * from "./taskCreate";
|
||||
export * from "./taskReviewDecision";
|
||||
export * from "./taskUpdate";
|
||||
export * from "./team";
|
||||
export * from "./teamCreate";
|
||||
|
||||
11
frontend/src/api/generated/model/taskReviewDecision.ts
Normal file
11
frontend/src/api/generated/model/taskReviewDecision.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Generated by orval v8.2.0 🍺
|
||||
* Do not edit manually.
|
||||
* OpenClaw Agency API
|
||||
* OpenAPI spec version: 0.3.0
|
||||
*/
|
||||
|
||||
export interface TaskReviewDecision {
|
||||
decision: string;
|
||||
comment_body: string;
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import type {
|
||||
TaskComment,
|
||||
TaskCommentCreate,
|
||||
TaskCreate,
|
||||
TaskReviewDecision,
|
||||
TaskUpdate,
|
||||
} from ".././model";
|
||||
|
||||
@@ -467,6 +468,130 @@ export const useDispatchTaskTasksTaskIdDispatchPost = <
|
||||
queryClient,
|
||||
);
|
||||
};
|
||||
/**
|
||||
* Reviewer approves or requests changes.
|
||||
|
||||
- Approve => status=done
|
||||
- Changes => status=in_progress
|
||||
|
||||
Always writes a TaskComment by the reviewer for audit.
|
||||
* @summary Review Task
|
||||
*/
|
||||
export type reviewTaskTasksTaskIdReviewPostResponse200 = {
|
||||
data: Task;
|
||||
status: 200;
|
||||
};
|
||||
|
||||
export type reviewTaskTasksTaskIdReviewPostResponse422 = {
|
||||
data: HTTPValidationError;
|
||||
status: 422;
|
||||
};
|
||||
|
||||
export type reviewTaskTasksTaskIdReviewPostResponseSuccess =
|
||||
reviewTaskTasksTaskIdReviewPostResponse200 & {
|
||||
headers: Headers;
|
||||
};
|
||||
export type reviewTaskTasksTaskIdReviewPostResponseError =
|
||||
reviewTaskTasksTaskIdReviewPostResponse422 & {
|
||||
headers: Headers;
|
||||
};
|
||||
|
||||
export type reviewTaskTasksTaskIdReviewPostResponse =
|
||||
| reviewTaskTasksTaskIdReviewPostResponseSuccess
|
||||
| reviewTaskTasksTaskIdReviewPostResponseError;
|
||||
|
||||
export const getReviewTaskTasksTaskIdReviewPostUrl = (taskId: number) => {
|
||||
return `/tasks/${taskId}/review`;
|
||||
};
|
||||
|
||||
export const reviewTaskTasksTaskIdReviewPost = async (
|
||||
taskId: number,
|
||||
taskReviewDecision: TaskReviewDecision,
|
||||
options?: RequestInit,
|
||||
): Promise<reviewTaskTasksTaskIdReviewPostResponse> => {
|
||||
return customFetch<reviewTaskTasksTaskIdReviewPostResponse>(
|
||||
getReviewTaskTasksTaskIdReviewPostUrl(taskId),
|
||||
{
|
||||
...options,
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json", ...options?.headers },
|
||||
body: JSON.stringify(taskReviewDecision),
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
export const getReviewTaskTasksTaskIdReviewPostMutationOptions = <
|
||||
TError = HTTPValidationError,
|
||||
TContext = unknown,
|
||||
>(options?: {
|
||||
mutation?: UseMutationOptions<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>,
|
||||
TError,
|
||||
{ taskId: number; data: TaskReviewDecision },
|
||||
TContext
|
||||
>;
|
||||
request?: SecondParameter<typeof customFetch>;
|
||||
}): UseMutationOptions<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>,
|
||||
TError,
|
||||
{ taskId: number; data: TaskReviewDecision },
|
||||
TContext
|
||||
> => {
|
||||
const mutationKey = ["reviewTaskTasksTaskIdReviewPost"];
|
||||
const { mutation: mutationOptions, request: requestOptions } = options
|
||||
? options.mutation &&
|
||||
"mutationKey" in options.mutation &&
|
||||
options.mutation.mutationKey
|
||||
? options
|
||||
: { ...options, mutation: { ...options.mutation, mutationKey } }
|
||||
: { mutation: { mutationKey }, request: undefined };
|
||||
|
||||
const mutationFn: MutationFunction<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>,
|
||||
{ taskId: number; data: TaskReviewDecision }
|
||||
> = (props) => {
|
||||
const { taskId, data } = props ?? {};
|
||||
|
||||
return reviewTaskTasksTaskIdReviewPost(taskId, data, requestOptions);
|
||||
};
|
||||
|
||||
return { mutationFn, ...mutationOptions };
|
||||
};
|
||||
|
||||
export type ReviewTaskTasksTaskIdReviewPostMutationResult = NonNullable<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>
|
||||
>;
|
||||
export type ReviewTaskTasksTaskIdReviewPostMutationBody = TaskReviewDecision;
|
||||
export type ReviewTaskTasksTaskIdReviewPostMutationError = HTTPValidationError;
|
||||
|
||||
/**
|
||||
* @summary Review Task
|
||||
*/
|
||||
export const useReviewTaskTasksTaskIdReviewPost = <
|
||||
TError = HTTPValidationError,
|
||||
TContext = unknown,
|
||||
>(
|
||||
options?: {
|
||||
mutation?: UseMutationOptions<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>,
|
||||
TError,
|
||||
{ taskId: number; data: TaskReviewDecision },
|
||||
TContext
|
||||
>;
|
||||
request?: SecondParameter<typeof customFetch>;
|
||||
},
|
||||
queryClient?: QueryClient,
|
||||
): UseMutationResult<
|
||||
Awaited<ReturnType<typeof reviewTaskTasksTaskIdReviewPost>>,
|
||||
TError,
|
||||
{ taskId: number; data: TaskReviewDecision },
|
||||
TContext
|
||||
> => {
|
||||
return useMutation(
|
||||
getReviewTaskTasksTaskIdReviewPostMutationOptions(options),
|
||||
queryClient,
|
||||
);
|
||||
};
|
||||
/**
|
||||
* @summary Update Task
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user