fix: preserve atlas handoff on start-work

This commit is contained in:
Jean Philippe Wan
2026-03-15 19:04:20 -04:00
parent 2fd6f4bf57
commit 711aac0f0a
2 changed files with 23 additions and 0 deletions

View File

@@ -404,6 +404,24 @@ describe("start-work hook", () => {
expect(updateSpy).toHaveBeenCalledWith("ses-prometheus-to-sisyphus", "atlas")
updateSpy.mockRestore()
})
test("should stamp the outgoing message with Atlas so follow-up events keep the handoff", async () => {
// given
const hook = createStartWorkHook(createMockPluginInput())
const output = {
message: {},
parts: [{ type: "text", text: "<session-context></session-context>" }],
}
// when
await hook["chat.message"](
{ sessionID: "ses-prometheus-to-atlas" },
output
)
// then
expect(output.message.agent).toBe("Atlas (Plan Executor)")
})
})
describe("worktree support", () => {

View File

@@ -11,6 +11,7 @@ import {
clearBoulderState,
} from "../../features/boulder-state"
import { log } from "../../shared/logger"
import { getAgentDisplayName } from "../../shared/agent-display-names"
import { updateSessionAgent } from "../../features/claude-code-session-state"
import { detectWorktreePath } from "./worktree-detector"
import { parseUserRequest } from "./parse-user-request"
@@ -23,6 +24,7 @@ interface StartWorkHookInput {
}
interface StartWorkHookOutput {
message?: Record<string, unknown>
parts: Array<{ type: string; text?: string }>
}
@@ -79,6 +81,9 @@ export function createStartWorkHook(ctx: PluginInput) {
log(`[${HOOK_NAME}] Processing start-work command`, { sessionID: input.sessionID })
updateSessionAgent(input.sessionID, "atlas")
if (output.message) {
output.message["agent"] = getAgentDisplayName("atlas")
}
const existingState = readBoulderState(ctx.directory)
const sessionId = input.sessionID