| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { describe, expect, it } from 'vitest'
- import { createUserMessage } from '@deepseek-ai/dsh-llm'
- import * as timeContext from '@deepseek-ai/dsh-time-context'
- import {
- deriveClientTimeZoneContext,
- } from '@deepseek-ai/dsh-time-context'
- import { renderTimeZoneContext } from '../src/request-zone.ts'
- function request(clientTimeZone?: unknown) {
- return createUserMessage({
- content: [{ type: 'text', text: 'request' }],
- source: clientTimeZone === undefined
- ? { kind: 'user' }
- : { kind: 'user', clientTimeZone } as never,
- })
- }
- describe('request-zone derivation', () => {
- it('publishes derivation without exposing the internal renderer', () => {
- expect(timeContext.deriveClientTimeZoneContext).toBe(deriveClientTimeZoneContext)
- expect('renderTimeZoneContext' in timeContext).toBe(false)
- })
- it('derives missing, one resolved zone, and sorted unique mixed zones', () => {
- const plugin = createUserMessage({
- content: [],
- source: { kind: 'plugin', plugin: 'fixture' },
- })
- expect(deriveClientTimeZoneContext([plugin, request(), request(1)])).toEqual({ kind: 'missing' })
- expect(deriveClientTimeZoneContext([
- request('Asia/Shanghai'),
- request('Asia/Shanghai'),
- ])).toEqual({ kind: 'resolved', timeZone: 'Asia/Shanghai' })
- expect(deriveClientTimeZoneContext([
- request('Asia/Shanghai'),
- request('America/New_York'),
- ])).toEqual({
- kind: 'mixed',
- timeZones: ['America/New_York', 'Asia/Shanghai'],
- })
- })
- it('renders resolved, mixed, and unavailable policy lines', () => {
- expect(renderTimeZoneContext('Asia/Shanghai', {
- kind: 'resolved',
- timeZone: 'Asia/Shanghai',
- })).toBe(
- 'Session time zone: Asia/Shanghai.\nClient time zone for this request: Asia/Shanghai.',
- )
- expect(renderTimeZoneContext('UTC', {
- kind: 'mixed',
- timeZones: ['America/New_York', 'UTC'],
- })).toBe(
- 'Session time zone: UTC.\nClient time zone for this request: mixed ["America/New_York","UTC"].',
- )
- expect(renderTimeZoneContext(undefined, { kind: 'missing' })).toBe(
- 'Session time zone: unavailable.\nClient time zone for this request: missing.',
- )
- })
- })
|