F3: connect Prompt tools and web task controls to native Jobs

This commit is contained in:
Xin Wang
2026-10-23 16:14:17 +08:00
parent 33fde56edd
commit 9a4d48a86e
14 changed files with 362 additions and 23 deletions
+44 -2
View File
@@ -623,16 +623,31 @@ export type McpToolDefinition = {
};
};
export type TaskToolDefinition = {
schemaVersion: number;
type: "task";
config: {
provider: "opencode";
url: string;
directory: string;
username: string;
timeoutSeconds: number;
allowInterruptions: true;
executionMode: "immediate";
};
};
export type Tool = {
id: string;
name: string;
functionName: string;
type: "http" | "mcp" | "client";
type: "http" | "mcp" | "client" | "task";
description: string;
definition:
| HttpToolDefinition
| ClientToolDefinition
| McpToolDefinition;
| McpToolDefinition
| TaskToolDefinition;
secrets: Record<string, unknown>;
status: ToolStatus;
mcpServerId?: string | null;
@@ -966,3 +981,30 @@ export const batchRunsApi = {
{ method: "POST" },
),
};
// ---------- 提示词后台任务 ----------
export type BackgroundTask = {
id: string;
assistantId: string;
conversationId: string;
toolId: string;
instruction: string;
status: "queued" | "submitted" | "running" | "waiting_input" | "cancel_requested" | "succeeded" | "failed" | "cancelled" | "unknown";
summary: string;
result: string;
sequence: number;
createdAt: string;
updatedAt: string;
inputRequest: {
id?: string;
kind?: "permission" | "question";
permission?: string;
patterns?: string[];
questions?: Array<{ question: string; header?: string; multiple?: boolean; options?: Array<{ label: string; description: string }> }>;
};
};
export const backgroundTasksApi = {
list: (assistantId: string) => request<BackgroundTask[]>(`/api/background-tasks?assistant_id=${encodeURIComponent(assistantId)}`),
cancel: (id: string) => request<BackgroundTask>(`/api/background-tasks/${encodeURIComponent(id)}/cancel`, { method: "POST" }),
input: (id: string, value: { reply?: string; answers?: string[][] }) => request<BackgroundTask>(`/api/background-tasks/${encodeURIComponent(id)}/input`, { method: "POST", body: JSON.stringify(value) }),
};