current.spec.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { describe, expect, it } from 'vitest'
  2. import type { SessionFormatArtifact, SessionFormatHeader } from '@deepseek-ai/dsh-session-format'
  3. import {
  4. validateInstalledCurrentSessionArtifact,
  5. validateInstalledCurrentSessionHeader,
  6. } from '../src/current.ts'
  7. const currentHeader: SessionFormatHeader = {
  8. version: 3,
  9. id: 'installed-current',
  10. createdAt: 1,
  11. isSeeded: false,
  12. delegationDepth: 0,
  13. }
  14. describe('installed current Session restoration', () => {
  15. it('rejects version skew before entering current Session validation', () => {
  16. expect(() => { validateInstalledCurrentSessionHeader({ ...currentHeader, version: 0 }) })
  17. .toThrow(/installed Session format is v3, got v0/)
  18. const artifact: SessionFormatArtifact = {
  19. header: { ...currentHeader, version: 0 },
  20. inheritedEventCount: 0,
  21. events: [],
  22. }
  23. expect(() => { validateInstalledCurrentSessionArtifact(artifact) })
  24. .toThrow(/installed Session format is v3, got v0/)
  25. })
  26. it('accepts only current request-header reasons and the true starts-series marker', () => {
  27. const artifact = (reason: string, startsSeries?: boolean): SessionFormatArtifact => ({
  28. header: { ...currentHeader },
  29. inheritedEventCount: 0,
  30. events: [
  31. { type: 'turn/start', seq: 0, time: 1, data: { turn: 1 } },
  32. {
  33. type: 'request/header', seq: 1, time: 2,
  34. data: {
  35. header: { config: { provider: 'mock', model: 'mock' } },
  36. reason,
  37. ...(startsSeries === undefined ? {} : { startsSeries }),
  38. },
  39. },
  40. ],
  41. })
  42. expect(() => { validateInstalledCurrentSessionArtifact(artifact('fallback')) })
  43. .toThrow(/request\/header.*reason/)
  44. expect(() => { validateInstalledCurrentSessionArtifact(artifact('initial', false)) })
  45. .toThrow(/startsSeries/)
  46. expect(() => { validateInstalledCurrentSessionArtifact(artifact('series', true)) }).not.toThrow()
  47. })
  48. })