Files
bilin/tests/main/interactive-plots.test.ts
T
bing aa2c7dfed3 feat: ship v0.7.0 with AI knowledge context integration
Add semi-automatic knowledge suggestions and user-confirmed injection across chat, interactive, auto, and wizard modes; fix writing flows to persist full systemPrompt in contextJson.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 15:33:53 +08:00

34 lines
1.4 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { DatabaseSync } from 'node:sqlite'
import { migrate } from '../../src/main/db/migrate'
import { AiSessionRepository } from '../../src/main/db/repositories/ai-session.repo'
import { InteractiveWritingService } from '../../src/main/services/interactive-writing.service'
import { AiClientService } from '../../src/main/services/ai-client.service'
import { DEFAULT_AI_CONFIG } from '../../src/shared/types'
const AI_TEST_CONFIG = { ...DEFAULT_AI_CONFIG, timeoutMs: 240_000, maxTokens: 4096 }
describe('interactive plots integration', () => {
it('IT-INT-01: suggestPlots returns 3 options from LM Studio', async () => {
const db = new DatabaseSync(':memory:')
migrate(db)
const session = new AiSessionRepository(db).create('t', AI_TEST_CONFIG.model)
const service = new InteractiveWritingService(db, new AiClientService(() => AI_TEST_CONFIG))
const flow = service.start(session.id)
service.confirmContext(flow.id, {
binding: {
chapterIds: [],
outlineIds: [],
settingIds: [],
inspirationIds: [],
knowledgeIds: []
},
systemPrompt: '林远参加宗门入门考核,演武场测灵石前众人围观。',
contextSummary: '0章·0纲·0设·0感·0知'
})
const plots = await service.suggestPlots(flow.id)
expect(plots).toHaveLength(3)
db.close()
}, 180_000)
})