runtime-context.spec.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { describe, expect, it } from 'vitest'
  2. import { Context } from '@deepseek-ai/cordis'
  3. import { createUserMessage } from '@deepseek-ai/dsh-llm'
  4. import SessionStore, { SessionId } from '@deepseek-ai/dsh-session'
  5. import { RuntimeContextProjection } from '../src/runtime-context.ts'
  6. const SOURCE = '@deepseek-ai/dsh-system-prompt'
  7. function contextMessage(text: string) {
  8. return createUserMessage({
  9. content: [{ type: 'text', text }],
  10. source: { kind: 'plugin', plugin: SOURCE },
  11. })
  12. }
  13. describe('RuntimeContextProjection', () => {
  14. it('restores the latest visible owned snapshot and ignores other sessions', async () => {
  15. const ctx = new Context()
  16. await ctx.plugin(SessionStore)
  17. const session = ctx.sessions.create(SessionId('runtime-context-replay'))
  18. const retained = session.append('user/message', contextMessage('retained'), { surfaceOp: 'append' })
  19. const shadowed = session.append('user/message', contextMessage('shadowed'), { surfaceOp: 'append' })
  20. session.append('user/message', createUserMessage({
  21. content: [{ type: 'text', text: 'summary' }],
  22. source: { kind: 'plugin', plugin: 'test-compaction' },
  23. }), {
  24. surfaceOp: { op: 'replace', start: shadowed.seq, end: shadowed.seq },
  25. sourceEventSeqs: [shadowed.seq],
  26. })
  27. const projection = new RuntimeContextProjection(ctx, session)
  28. expect(session.surface.nodes).toContain(retained.seq)
  29. expect(projection.project('retained', [])).toBeUndefined()
  30. expect(projection.project('next', [{ name: 'sandbox:policy', text: 'policy' }])?.source).toEqual({
  31. kind: 'plugin',
  32. plugin: SOURCE,
  33. form: 'snapshot',
  34. sections: [{ name: 'sandbox:policy', text: 'policy' }],
  35. })
  36. const other = ctx.sessions.create(SessionId('runtime-context-other'))
  37. other.append('user/message', contextMessage('other'), { surfaceOp: 'append' })
  38. expect(projection.project('retained', [])).toBeUndefined()
  39. })
  40. })