Merge branch 'codex/simp-unify-agent-session-id' into codex/simp-ui-identity-residue

This commit is contained in:
Tianyi Cui
2026-07-14 09:38:39 +08:00
2 changed files with 12 additions and 2 deletions

View File

@@ -104,9 +104,10 @@ export function createStdioChat(ctx: Context, config: Config, runtime: StdioRunt
// with durable parentSession lineage. Keeping the matching candidates also
// covers HMR's publish-new-before-dispose-old ordering without ever falling
// through to an unrelated root owned by another app or test fixture.
const matchesConfiguredIdentity = (agent: Agent): boolean => config.resumeSessionId === undefined
const resumeSessionId = config.resumeSessionId === '' ? undefined : config.resumeSessionId
const matchesConfiguredIdentity = (agent: Agent): boolean => resumeSessionId === undefined
? agent.id.startsWith('main-session-')
: agent.id === config.resumeSessionId
: agent.id === resumeSessionId
const configuredRoots = new Set(ctx.agents.roots().filter(matchesConfiguredIdentity))
let target: Agent | undefined = [...configuredRoots].at(-1)
ctx.on('agent/created', (agent) => {

View File

@@ -747,6 +747,15 @@ describe('createStdioChat input', () => {
await new Promise(r => setImmediate(r))
expect(agent.sent).toHaveLength(1)
})
it('treats an empty resume session id as a fresh configured identity', async () => {
const { ctx, input } = await setup({ welcome: 'w', resumeSessionId: '' })
const agent = makeAgent('main-session-fresh')
ctx.agents.register(agent)
input.feed('hi')
await new Promise(r => setImmediate(r))
expect(agent.sent).toHaveLength(1)
})
})
describe('createStdioChat EOF exit', () => {