Procházet zdrojové kódy

fix(schedule): reconcile cron stack layer

Tianyi Cui před 1 měsícem
rodič
revize
3fa4c012b1

+ 2 - 2
.agents/notes/implemented/feature/2026-08-05-durable-web-schedule.i18n.yaml

@@ -2,5 +2,5 @@
 # side as of the last confirmed-consistent state. Both languages carry equal authority;
 # after editing either side, bring the other along and re-record with:
 #   pnpm run verify-translation-pairing --write .agents/notes/implemented/feature/2026-08-05-durable-web-schedule.md
-2026-08-05-durable-web-schedule.md: 25db990be3ff4f962d8457acc20d888ffaef8c1c
-2026-08-05-durable-web-schedule.zh.md: b0fd1d0364810f48b95af6ddc9f466fecf56d1f7
+2026-08-05-durable-web-schedule.md: 1963d0437e585df3b1260c031dbb2a4a49dc9046
+2026-08-05-durable-web-schedule.zh.md: 65e482d4bb65edab02e7721511f82ce1af9de9b8

+ 2 - 0
apps/web/tests/schedule-after.e2e.ts

@@ -250,8 +250,10 @@ describe.skipIf(MODE === 'record')('web e2e: durable after reminder receipt', ()
   it('keeps the fixture inventory closed', async () => {
     await assertFixtureInventory(SNAPSHOT_DIR, [
       'at-receipt.expected.md',
+      'cron-receipt.expected.md',
       'every-batch.expected.md',
       'every-receipt.expected.md',
+      'mixed-batch.expected.md',
       'receipt.expected.md',
     ])
   })

+ 2 - 2
packages/schedule/tool-schedule/README.i18n.yaml

@@ -2,5 +2,5 @@
 # side as of the last confirmed-consistent state. Both languages carry equal authority;
 # after editing either side, bring the other along and re-record with:
 #   pnpm run verify-translation-pairing --write packages/schedule/tool-schedule/README.md
-README.md: 14ab3ec655968f0d072be8bf0ad2ab8c18a857e5
-README.zh.md: b948c6cb7d5f62611945e0d1ecc09c9b38a4cdbc
+README.md: 1c0e347d50fed2fe27741d584e6b3f158df1a081
+README.zh.md: 3665cf7e37a30458017eb16cc9171ec541fc55ea

+ 0 - 1
packages/schedule/tool-schedule/tests/cron.spec.ts

@@ -367,7 +367,6 @@ describe('durable Cron replay', () => {
       scheduleId: 'schedule-cron',
       prompt: 'daily review',
       occurrenceAt: '2026-08-08T01:00:00.000Z',
-      deliveryMode: 'session-local',
     })
   })
 

+ 0 - 11
packages/schedule/tool-schedule/tests/tools.spec.ts

@@ -650,17 +650,6 @@ describe('Schedule tool protocol', () => {
     expect(test.agent.session.events.filter(event => event.type === 'schedule/change')).toEqual([])
   })
 
-  it('rejects an empty or padded delete id before persistence', async () => {
-    const test = await harness()
-    for (const id of ['', ' schedule-1']) {
-      expect(value(await execute(test, 'schedule_delete', { id }))).toEqual({
-        code: 'invalid_rule',
-        message: 'schedule_delete id must be non-empty without surrounding whitespace.',
-      })
-    }
-    expect(test.flushes.count).toBe(0)
-  })
-
   it('returns a range error only after the create preflight', async () => {
     const test = await harness()
     expect(value(await execute(test, 'schedule_create', {