Bläddra i källkod

fix: reject empty configured session ids

Tianyi Cui 2 månader sedan
förälder
incheckning
9745a0d43a

+ 1 - 1
packages/core/agent-loop/src/index.ts

@@ -377,7 +377,7 @@ export class AgentLoop extends Service implements AgentFactory {
   static Config = z.object({
     agents: z.array(z.object({
       id: z.string().required(),
-      sessionId: z.string(),
+      sessionId: z.string().min(1),
       model: z.string(),
       cwd: z.string(),
       resumeSessionId: z.string(),

+ 9 - 0
packages/core/agent-loop/tests/config-session-id.spec.ts

@@ -35,6 +35,15 @@ async function makeCoreContext(): Promise<Context> {
 }
 
 describe('config-driven session id', () => {
+  it('rejects an empty exact id before publishing an agent', async () => {
+    const ctx = await makeCoreContext()
+    await expect(ctx.plugin(AgentLoop, {
+      agents: [{ id: 'main', sessionId: SessionId(''), model: 'mock' }],
+    })).rejects.toThrow('expected string length >= 1')
+    expect(ctx.agents.get(SessionId(''))).toBeUndefined()
+    await ctx.fiber.dispose()
+  })
+
   it('accepts one exact fresh id and rejects it alongside a resume id', async () => {
     const exact = await makeCoreContext()
     await exact.plugin(AgentLoop, {