feat(FN-3925): add task-level GitHub tracking controls to create-task and t
Adds GitHub tracking controls to the create-task flow and task detail modal, with wired patch transport to persist the setting. Includes a CLI extension alignment (FN-3921) and a post-merge typecheck fix (FN-3925). Fusion-Task-Id: FN-3925
This commit is contained in:
5
.changeset/FN-3874-github-tracking-task-ui.md
Normal file
5
.changeset/FN-3874-github-tracking-task-ui.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@runfusion/fusion": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Expose per-task GitHub tracking controls in task creation/editing and task detail, including repo override handling, linked-issue display, and manual unlink flow.
|
||||||
@@ -414,7 +414,7 @@ export default function kbExtension(pi: ExtensionAPI) {
|
|||||||
|
|
||||||
if (normalizedAgentId !== undefined && normalizedAgentId !== null) {
|
if (normalizedAgentId !== undefined && normalizedAgentId !== null) {
|
||||||
const candidateTask: Pick<Task, "id" | "column"> = { id: "<new>", column: "triage" };
|
const candidateTask: Pick<Task, "id" | "column"> = { id: "<new>", column: "triage" };
|
||||||
const error = await validateAssignableAgentId(ctx.cwd, normalizedAgentId, candidateTask);
|
const error = await validateAssignableAgentId(ctx.cwd ?? process.cwd(), normalizedAgentId, candidateTask);
|
||||||
if (error) {
|
if (error) {
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: error }],
|
content: [{ type: "text", text: error }],
|
||||||
@@ -532,8 +532,8 @@ export default function kbExtension(pi: ExtensionAPI) {
|
|||||||
}
|
}
|
||||||
if (params.agentId !== undefined) {
|
if (params.agentId !== undefined) {
|
||||||
const normalizedAgentId = normalizeNullableStringInput(params.agentId);
|
const normalizedAgentId = normalizeNullableStringInput(params.agentId);
|
||||||
if (normalizedAgentId !== null) {
|
if (normalizedAgentId !== undefined && normalizedAgentId !== null) {
|
||||||
const error = await validateAssignableAgentId(ctx.cwd, normalizedAgentId, task);
|
const error = await validateAssignableAgentId(ctx.cwd ?? process.cwd(), normalizedAgentId, task);
|
||||||
if (error) {
|
if (error) {
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: error }],
|
content: [{ type: "text", text: error }],
|
||||||
@@ -2677,7 +2677,7 @@ export default function kbExtension(pi: ExtensionAPI) {
|
|||||||
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
||||||
// Validate target agent exists and is not ephemeral
|
// Validate target agent exists and is not ephemeral
|
||||||
const delegateTask: Pick<Task, "id" | "column"> = { id: "<new>", column: "todo" };
|
const delegateTask: Pick<Task, "id" | "column"> = { id: "<new>", column: "todo" };
|
||||||
const agentError = await validateAssignableAgentId(ctx.cwd, params.agent_id, delegateTask, params.override === true);
|
const agentError = await validateAssignableAgentId(ctx.cwd ?? process.cwd(), params.agent_id, delegateTask, params.override === true);
|
||||||
if (agentError) {
|
if (agentError) {
|
||||||
return {
|
return {
|
||||||
content: [{ type: "text", text: `ERROR: ${agentError}` }],
|
content: [{ type: "text", text: `ERROR: ${agentError}` }],
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import type { Task, TaskDetail, TaskAttachment, Column, MergeResult, Settings, G
|
|||||||
import {
|
import {
|
||||||
COLUMN_LABELS,
|
COLUMN_LABELS,
|
||||||
DEFAULT_TASK_PRIORITY,
|
DEFAULT_TASK_PRIORITY,
|
||||||
|
REPO_OVERRIDE_RE,
|
||||||
TASK_PRIORITIES,
|
TASK_PRIORITIES,
|
||||||
VALID_TRANSITIONS,
|
VALID_TRANSITIONS,
|
||||||
getErrorMessage,
|
getErrorMessage,
|
||||||
@@ -37,7 +38,6 @@ import { TaskTokenStatsPanel } from "./TaskTokenStatsPanel";
|
|||||||
import { PluginSlot } from "./PluginSlot";
|
import { PluginSlot } from "./PluginSlot";
|
||||||
import { ProviderIcon } from "./ProviderIcon";
|
import { ProviderIcon } from "./ProviderIcon";
|
||||||
import { subscribeSse } from "../sse-bus";
|
import { subscribeSse } from "../sse-bus";
|
||||||
import { REPO_OVERRIDE_RE } from "./githubTracking";
|
|
||||||
import { usePluginUiSlots } from "../hooks/usePluginUiSlots";
|
import { usePluginUiSlots } from "../hooks/usePluginUiSlots";
|
||||||
import { appendTokenQuery } from "../auth";
|
import { appendTokenQuery } from "../auth";
|
||||||
import { extractDependencyDeleteConflict } from "../utils/taskDelete";
|
import { extractDependencyDeleteConflict } from "../utils/taskDelete";
|
||||||
|
|||||||
Reference in New Issue
Block a user