Merge pull request #1477 from kaizen403/fix/boulder-agent-tracking

fix: track agent in boulder state to fix session continuation (fixes #927)
This commit is contained in:
YeonGyu-Kim
2026-02-05 17:41:05 +09:00
committed by GitHub
8 changed files with 234 additions and 15 deletions
@@ -246,5 +246,33 @@ describe("boulder-state", () => {
expect(state.plan_name).toBe("auth-refactor")
expect(state.started_at).toBeDefined()
})
test("should include agent field when provided", () => {
//#given - plan path, session id, and agent type
const planPath = "/path/to/feature.md"
const sessionId = "ses-xyz789"
const agent = "atlas"
//#when - createBoulderState is called with agent
const state = createBoulderState(planPath, sessionId, agent)
//#then - state should include the agent field
expect(state.agent).toBe("atlas")
expect(state.active_plan).toBe(planPath)
expect(state.session_ids).toEqual([sessionId])
expect(state.plan_name).toBe("feature")
})
test("should allow agent to be undefined", () => {
//#given - plan path and session id without agent
const planPath = "/path/to/legacy.md"
const sessionId = "ses-legacy"
//#when - createBoulderState is called without agent
const state = createBoulderState(planPath, sessionId)
//#then - state should not have agent field (backward compatible)
expect(state.agent).toBeUndefined()
})
})
})
+3 -1
View File
@@ -139,12 +139,14 @@ export function getPlanName(planPath: string): string {
*/
export function createBoulderState(
planPath: string,
sessionId: string
sessionId: string,
agent?: string
): BoulderState {
return {
active_plan: planPath,
started_at: new Date().toISOString(),
session_ids: [sessionId],
plan_name: getPlanName(planPath),
...(agent !== undefined ? { agent } : {}),
}
}
+2
View File
@@ -14,6 +14,8 @@ export interface BoulderState {
session_ids: string[]
/** Plan name derived from filename */
plan_name: string
/** Agent type to use when resuming (e.g., 'atlas') */
agent?: string
}
export interface PlanProgress {