Explorar el Código

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

Tianyi Cui hace 2 meses
padre
commit
c84fc5d7f2

+ 3 - 2
packages/ui/stdio-agent/src/stdio-chat.ts

@@ -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) => {

+ 9 - 0
packages/ui/stdio-agent/tests/stdio-chat.spec.ts

@@ -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', () => {