refactor: remove 3 orphaned files from background-agent/spawner
This commit is contained in:
parent
7e1293d273
commit
0265fa6990
@ -1,19 +0,0 @@
|
|||||||
import { randomUUID } from "crypto"
|
|
||||||
import type { BackgroundTask, LaunchInput } from "../types"
|
|
||||||
|
|
||||||
export function createTask(input: LaunchInput): BackgroundTask {
|
|
||||||
return {
|
|
||||||
id: `bg_${randomUUID().slice(0, 8)}`,
|
|
||||||
status: "pending",
|
|
||||||
queuedAt: new Date(),
|
|
||||||
description: input.description,
|
|
||||||
prompt: input.prompt,
|
|
||||||
agent: input.agent,
|
|
||||||
parentSessionID: input.parentSessionID,
|
|
||||||
parentMessageID: input.parentMessageID,
|
|
||||||
parentModel: input.parentModel,
|
|
||||||
parentAgent: input.parentAgent,
|
|
||||||
parentTools: input.parentTools,
|
|
||||||
model: input.model,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
import type { BackgroundTask, ResumeInput } from "../types"
|
|
||||||
import { log, getAgentToolRestrictions } from "../../../shared"
|
|
||||||
import { setSessionTools } from "../../../shared/session-tools-store"
|
|
||||||
import type { SpawnerContext } from "./spawner-context"
|
|
||||||
import { subagentSessions } from "../../claude-code-session-state"
|
|
||||||
import { getTaskToastManager } from "../../task-toast-manager"
|
|
||||||
|
|
||||||
export async function resumeTask(
|
|
||||||
task: BackgroundTask,
|
|
||||||
input: ResumeInput,
|
|
||||||
ctx: Pick<SpawnerContext, "client" | "concurrencyManager" | "onTaskError">
|
|
||||||
): Promise<void> {
|
|
||||||
const { client, concurrencyManager, onTaskError } = ctx
|
|
||||||
|
|
||||||
if (!task.sessionID) {
|
|
||||||
throw new Error(`Task has no sessionID: ${task.id}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (task.status === "running") {
|
|
||||||
log("[background-agent] Resume skipped - task already running:", {
|
|
||||||
taskId: task.id,
|
|
||||||
sessionID: task.sessionID,
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const concurrencyKey = task.concurrencyGroup ?? task.agent
|
|
||||||
await concurrencyManager.acquire(concurrencyKey)
|
|
||||||
task.concurrencyKey = concurrencyKey
|
|
||||||
task.concurrencyGroup = concurrencyKey
|
|
||||||
|
|
||||||
task.status = "running"
|
|
||||||
task.completedAt = undefined
|
|
||||||
task.error = undefined
|
|
||||||
task.parentSessionID = input.parentSessionID
|
|
||||||
task.parentMessageID = input.parentMessageID
|
|
||||||
task.parentModel = input.parentModel
|
|
||||||
task.parentAgent = input.parentAgent
|
|
||||||
if (input.parentTools) {
|
|
||||||
task.parentTools = input.parentTools
|
|
||||||
}
|
|
||||||
task.startedAt = new Date()
|
|
||||||
|
|
||||||
task.progress = {
|
|
||||||
toolCalls: task.progress?.toolCalls ?? 0,
|
|
||||||
lastUpdate: new Date(),
|
|
||||||
}
|
|
||||||
|
|
||||||
subagentSessions.add(task.sessionID)
|
|
||||||
|
|
||||||
const toastManager = getTaskToastManager()
|
|
||||||
if (toastManager) {
|
|
||||||
toastManager.addTask({
|
|
||||||
id: task.id,
|
|
||||||
description: task.description,
|
|
||||||
agent: task.agent,
|
|
||||||
isBackground: true,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
log("[background-agent] Resuming task:", { taskId: task.id, sessionID: task.sessionID })
|
|
||||||
|
|
||||||
log("[background-agent] Resuming task - calling prompt (fire-and-forget) with:", {
|
|
||||||
sessionID: task.sessionID,
|
|
||||||
agent: task.agent,
|
|
||||||
model: task.model,
|
|
||||||
promptLength: input.prompt.length,
|
|
||||||
})
|
|
||||||
|
|
||||||
const resumeModel = task.model
|
|
||||||
? { providerID: task.model.providerID, modelID: task.model.modelID }
|
|
||||||
: undefined
|
|
||||||
const resumeVariant = task.model?.variant
|
|
||||||
|
|
||||||
client.session
|
|
||||||
.promptAsync({
|
|
||||||
path: { id: task.sessionID },
|
|
||||||
body: {
|
|
||||||
agent: task.agent,
|
|
||||||
...(resumeModel ? { model: resumeModel } : {}),
|
|
||||||
...(resumeVariant ? { variant: resumeVariant } : {}),
|
|
||||||
tools: (() => {
|
|
||||||
const tools = {
|
|
||||||
...getAgentToolRestrictions(task.agent),
|
|
||||||
task: false,
|
|
||||||
call_omo_agent: true,
|
|
||||||
question: false,
|
|
||||||
}
|
|
||||||
setSessionTools(task.sessionID!, tools)
|
|
||||||
return tools
|
|
||||||
})(),
|
|
||||||
parts: [{ type: "text", text: input.prompt }],
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.catch((error: unknown) => {
|
|
||||||
log("[background-agent] resume prompt error:", error)
|
|
||||||
onTaskError(task, error instanceof Error ? error : new Error(String(error)))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
import type { QueueItem } from "../constants"
|
|
||||||
import { log, getAgentToolRestrictions, promptWithModelSuggestionRetry } from "../../../shared"
|
|
||||||
import { setSessionTools } from "../../../shared/session-tools-store"
|
|
||||||
import { subagentSessions } from "../../claude-code-session-state"
|
|
||||||
import { getTaskToastManager } from "../../task-toast-manager"
|
|
||||||
import { createBackgroundSession } from "./background-session-creator"
|
|
||||||
import { getConcurrencyKeyFromLaunchInput } from "./concurrency-key-from-launch-input"
|
|
||||||
import { resolveParentDirectory } from "./parent-directory-resolver"
|
|
||||||
import type { SpawnerContext } from "./spawner-context"
|
|
||||||
import { maybeInvokeTmuxCallback } from "./tmux-callback-invoker"
|
|
||||||
|
|
||||||
export async function startTask(item: QueueItem, ctx: SpawnerContext): Promise<void> {
|
|
||||||
const { task, input } = item
|
|
||||||
const { client, directory, concurrencyManager, tmuxEnabled, onSubagentSessionCreated, onTaskError } = ctx
|
|
||||||
|
|
||||||
log("[background-agent] Starting task:", {
|
|
||||||
taskId: task.id,
|
|
||||||
agent: input.agent,
|
|
||||||
model: input.model,
|
|
||||||
})
|
|
||||||
|
|
||||||
const concurrencyKey = getConcurrencyKeyFromLaunchInput(input)
|
|
||||||
const parentDirectory = await resolveParentDirectory({
|
|
||||||
client,
|
|
||||||
parentSessionID: input.parentSessionID,
|
|
||||||
defaultDirectory: directory,
|
|
||||||
})
|
|
||||||
|
|
||||||
const sessionID = await createBackgroundSession({
|
|
||||||
client,
|
|
||||||
input,
|
|
||||||
parentDirectory,
|
|
||||||
concurrencyManager,
|
|
||||||
concurrencyKey,
|
|
||||||
})
|
|
||||||
subagentSessions.add(sessionID)
|
|
||||||
|
|
||||||
await maybeInvokeTmuxCallback({
|
|
||||||
onSubagentSessionCreated,
|
|
||||||
tmuxEnabled,
|
|
||||||
sessionID,
|
|
||||||
parentID: input.parentSessionID,
|
|
||||||
title: input.description,
|
|
||||||
})
|
|
||||||
|
|
||||||
task.status = "running"
|
|
||||||
task.startedAt = new Date()
|
|
||||||
task.sessionID = sessionID
|
|
||||||
task.progress = {
|
|
||||||
toolCalls: 0,
|
|
||||||
lastUpdate: new Date(),
|
|
||||||
}
|
|
||||||
task.concurrencyKey = concurrencyKey
|
|
||||||
task.concurrencyGroup = concurrencyKey
|
|
||||||
|
|
||||||
log("[background-agent] Launching task:", { taskId: task.id, sessionID, agent: input.agent })
|
|
||||||
|
|
||||||
const toastManager = getTaskToastManager()
|
|
||||||
if (toastManager) {
|
|
||||||
toastManager.updateTask(task.id, "running")
|
|
||||||
}
|
|
||||||
|
|
||||||
log("[background-agent] Calling prompt (fire-and-forget) for launch with:", {
|
|
||||||
sessionID,
|
|
||||||
agent: input.agent,
|
|
||||||
model: input.model,
|
|
||||||
hasSkillContent: !!input.skillContent,
|
|
||||||
promptLength: input.prompt.length,
|
|
||||||
})
|
|
||||||
|
|
||||||
const launchModel = input.model
|
|
||||||
? { providerID: input.model.providerID, modelID: input.model.modelID }
|
|
||||||
: undefined
|
|
||||||
const launchVariant = input.model?.variant
|
|
||||||
|
|
||||||
promptWithModelSuggestionRetry(client, {
|
|
||||||
path: { id: sessionID },
|
|
||||||
body: {
|
|
||||||
agent: input.agent,
|
|
||||||
...(launchModel ? { model: launchModel } : {}),
|
|
||||||
...(launchVariant ? { variant: launchVariant } : {}),
|
|
||||||
system: input.skillContent,
|
|
||||||
tools: (() => {
|
|
||||||
const tools = {
|
|
||||||
...getAgentToolRestrictions(input.agent),
|
|
||||||
task: false,
|
|
||||||
call_omo_agent: true,
|
|
||||||
question: false,
|
|
||||||
}
|
|
||||||
setSessionTools(sessionID, tools)
|
|
||||||
return tools
|
|
||||||
})(),
|
|
||||||
parts: [{ type: "text", text: input.prompt }],
|
|
||||||
},
|
|
||||||
}).catch((error: unknown) => {
|
|
||||||
log("[background-agent] promptAsync error:", error)
|
|
||||||
onTaskError(task, error instanceof Error ? error : new Error(String(error)))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user