aa2c7dfed3
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>
43 lines
1.7 KiB
TypeScript
43 lines
1.7 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 scene integration', () => {
|
|
const service = (db: DatabaseSync) =>
|
|
new InteractiveWritingService(db, new AiClientService(() => AI_TEST_CONFIG))
|
|
|
|
it('IT-INT-02: generateScene returns non-empty draft', async () => {
|
|
const db = new DatabaseSync(':memory:')
|
|
migrate(db)
|
|
const session = new AiSessionRepository(db).create('t', DEFAULT_AI_CONFIG.model)
|
|
const svc = service(db)
|
|
const flow = svc.start(session.id)
|
|
svc.confirmContext(flow.id, {
|
|
binding: {
|
|
chapterIds: [],
|
|
outlineIds: [],
|
|
settingIds: [],
|
|
inspirationIds: [],
|
|
knowledgeIds: []
|
|
},
|
|
systemPrompt: '林远在演武场测试灵根,众人围观。',
|
|
contextSummary: '0章·0纲·0设·0感·0知'
|
|
})
|
|
const plots = await svc.suggestPlots(flow.id)
|
|
svc.selectPlot(flow.id, { optionIds: [plots[0].id] })
|
|
const afterGen = await svc.generateScene(flow.id, () => {})
|
|
if (afterGen.step === 'naming_pause' && afterGen.namingPending) {
|
|
await svc.resolveNaming(flow.id, afterGen.namingPending.options[0], () => {})
|
|
}
|
|
const draft = svc.getSceneDraft(flow.id)
|
|
expect(draft.trim().length).toBeGreaterThan(50)
|
|
db.close()
|
|
}, 240_000)
|
|
})
|