messageDisplay.test.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { describe, expect, it } from 'vitest'
  2. import { displayContentForMessage } from '@/utils/messageDisplay'
  3. describe('displayContentForMessage', () => {
  4. it('hides expanded attached context while restoring a missing reference', () => {
  5. const content = [
  6. '帮我看看这个文件',
  7. '',
  8. '--- Attached Context ---',
  9. '',
  10. '📄 @file:`/Users/samien/My Notes/方案.md` (981 tokens)',
  11. '```markdown',
  12. '# 很长的附加正文',
  13. '```',
  14. ].join('\n')
  15. expect(displayContentForMessage('user', content)).toBe(
  16. '@file:`/Users/samien/My Notes/方案.md`\n\n帮我看看这个文件',
  17. )
  18. })
  19. it('keeps visible references in place and deduplicates attached references', () => {
  20. const reference = '@url:`https://example.com/a b`'
  21. const content = [
  22. reference,
  23. '总结这篇文章',
  24. '',
  25. '--- Attached Context ---',
  26. '',
  27. `🌐 ${reference} (1200 tokens)`,
  28. '正文一',
  29. `🌐 ${reference} (1200 tokens)`,
  30. '正文二',
  31. ].join('\n')
  32. expect(displayContentForMessage('user', content)).toBe(`${reference}\n总结这篇文章`)
  33. })
  34. it('supports quoted refs and removes context warnings from user display', () => {
  35. const content = [
  36. '分析附件',
  37. '',
  38. '--- Attached Context ---',
  39. '',
  40. "📁 @folder:'/Users/samien/中文 文件夹' (20 tokens)",
  41. 'folder listing',
  42. '🛠 @tool:"desktop capture" (10 tokens)',
  43. 'tool output',
  44. ].join('\n')
  45. expect(displayContentForMessage('user', content)).toBe([
  46. "@folder:'/Users/samien/中文 文件夹'",
  47. '@tool:"desktop capture"',
  48. '',
  49. '分析附件',
  50. ].join('\n'))
  51. expect(displayContentForMessage('user', '继续\n\n--- Context Warnings ---\n抓取失败')).toBe('继续')
  52. })
  53. it('never rewrites assistant or system content', () => {
  54. const content = '回答\n\n--- Attached Context ---\n\n不应隐藏'
  55. expect(displayContentForMessage('assistant', content)).toBe(content)
  56. expect(displayContentForMessage('system', content)).toBe(content)
  57. })
  58. })