@dayinxisheng/novel-tools 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,267 @@
1
+ import { FileUtils } from '../core/file.js';
2
+ import { EventService } from './event.service.js';
3
+ import * as path from 'path';
4
+ /**
5
+ * 事件命令服务类
6
+ * 扩展 EventService,提供 CLI 命令所需的功能
7
+ */
8
+ export class EventCommandService {
9
+ eventService;
10
+ constructor() {
11
+ this.eventService = new EventService();
12
+ }
13
+ /**
14
+ * 交互式追加事件
15
+ */
16
+ async appendEventsInteractive(projectPath, chapter) {
17
+ const { createInterface } = await import('readline');
18
+ const rl = createInterface({
19
+ input: process.stdin,
20
+ output: process.stdout
21
+ });
22
+ const question = (prompt) => {
23
+ return new Promise(resolve => {
24
+ rl.question(prompt, resolve);
25
+ });
26
+ };
27
+ try {
28
+ console.log('请输入事件(每行一个 JSON 对象,空行结束):');
29
+ const events = [];
30
+ let lineCount = 0;
31
+ while (true) {
32
+ const line = await question('> ');
33
+ if (!line.trim()) {
34
+ break;
35
+ }
36
+ try {
37
+ const event = JSON.parse(line);
38
+ events.push(event);
39
+ lineCount++;
40
+ console.log(` ✓ 已解析第 ${lineCount} 条事件`);
41
+ }
42
+ catch (error) {
43
+ console.error(` ✗ JSON 解析失败: ${error instanceof Error ? error.message : String(error)}`);
44
+ }
45
+ }
46
+ if (events.length > 0) {
47
+ await this.eventService.appendChapterEvents(projectPath, chapter, events);
48
+ console.log(`\n✓ 已追加第 ${chapter} 章的 ${events.length} 条事件记录`);
49
+ }
50
+ else {
51
+ console.log('\n未添加任何事件');
52
+ }
53
+ }
54
+ finally {
55
+ rl.close();
56
+ }
57
+ }
58
+ /**
59
+ * 从文件追加事件
60
+ */
61
+ async appendEventsFromFile(projectPath, chapter, filePath) {
62
+ // 处理相对路径
63
+ const fullPath = path.isAbsolute(filePath)
64
+ ? filePath
65
+ : path.join(process.cwd(), filePath);
66
+ const content = await FileUtils.readText(fullPath);
67
+ let events;
68
+ try {
69
+ const data = JSON.parse(content);
70
+ events = Array.isArray(data) ? data : [data];
71
+ }
72
+ catch (error) {
73
+ throw new Error(`文件 JSON 格式错误: ${error instanceof Error ? error.message : String(error)}`);
74
+ }
75
+ await this.eventService.appendChapterEvents(projectPath, chapter, events);
76
+ console.log(`✓ 已从文件追加第 ${chapter} 章的 ${events.length} 条事件记录`);
77
+ }
78
+ /**
79
+ * 从 JSON 字符串追加事件
80
+ */
81
+ async appendEventsFromJson(projectPath, chapter, jsonString, replace = false) {
82
+ let events;
83
+ try {
84
+ const data = JSON.parse(jsonString);
85
+ events = Array.isArray(data) ? data : [data];
86
+ }
87
+ catch (error) {
88
+ throw new Error(`JSON 格式错误: ${error instanceof Error ? error.message : String(error)}`);
89
+ }
90
+ // 检查是否已存在
91
+ if (!replace) {
92
+ const existing = await this.eventService.loadEventsForChapter(projectPath, chapter);
93
+ if (existing.length > 0) {
94
+ console.warn(`警告: 第 ${chapter} 章已存在 ${existing.length} 条事件记录`);
95
+ console.warn('如需覆盖,请使用 --replace 选项');
96
+ return;
97
+ }
98
+ }
99
+ await this.eventService.appendChapterEvents(projectPath, chapter, events);
100
+ console.log(`✓ 已追加第 ${chapter} 章的 ${events.length} 条事件记录`);
101
+ }
102
+ /**
103
+ * 格式化摘要输出
104
+ */
105
+ formatSummary(summary, format = 'table') {
106
+ switch (format) {
107
+ case 'json':
108
+ return JSON.stringify(summary, null, 2);
109
+ case 'markdown':
110
+ return this.formatSummaryAsMarkdown(summary);
111
+ case 'table':
112
+ default:
113
+ return this.formatSummaryAsTable(summary);
114
+ }
115
+ }
116
+ /**
117
+ * 格式化摘要为表格
118
+ */
119
+ formatSummaryAsTable(summary) {
120
+ const lines = [];
121
+ lines.push('\n=== 章节摘要 ===\n');
122
+ // 关键事件
123
+ if (summary.key_events.length > 0) {
124
+ lines.push('关键事件:');
125
+ for (const event of summary.key_events) {
126
+ lines.push(` • [${event.type}] ${event.description}`);
127
+ }
128
+ lines.push('');
129
+ }
130
+ // 人物动向
131
+ if (Object.keys(summary.character_movements).length > 0) {
132
+ lines.push('人物动向:');
133
+ for (const [character, movements] of Object.entries(summary.character_movements)) {
134
+ lines.push(` ${character}: ${movements.join(', ')}`);
135
+ }
136
+ lines.push('');
137
+ }
138
+ // 关系变化
139
+ if (summary.relationship_changes.length > 0) {
140
+ lines.push('关系变化:');
141
+ for (const change of summary.relationship_changes) {
142
+ const from = change.from || '?';
143
+ const to = change.to || '?';
144
+ const relation = change.change || '';
145
+ lines.push(` ${to} → ${from}: ${relation}`);
146
+ }
147
+ lines.push('');
148
+ }
149
+ // 新元素
150
+ if (summary.new_elements.length > 0) {
151
+ lines.push('新元素:');
152
+ for (const element of summary.new_elements) {
153
+ const name = element.name || '';
154
+ lines.push(` • [${element.type}] ${name}`);
155
+ }
156
+ lines.push('');
157
+ }
158
+ // 伏笔
159
+ if (summary.foreshadows.planted.length > 0) {
160
+ lines.push('埋设伏笔:');
161
+ for (const foreshadow of summary.foreshadows.planted) {
162
+ lines.push(` • ${foreshadow}`);
163
+ }
164
+ lines.push('');
165
+ }
166
+ if (summary.foreshadows.advanced.length > 0) {
167
+ lines.push('呼应伏笔:');
168
+ for (const foreshadow of summary.foreshadows.advanced) {
169
+ lines.push(` • ${foreshadow}`);
170
+ }
171
+ }
172
+ return lines.join('\n');
173
+ }
174
+ /**
175
+ * 格式化摘要为 Markdown
176
+ */
177
+ formatSummaryAsMarkdown(summary) {
178
+ const lines = [];
179
+ lines.push('# 章节摘要\n');
180
+ // 关键事件
181
+ if (summary.key_events.length > 0) {
182
+ lines.push('## 关键事件');
183
+ for (const event of summary.key_events) {
184
+ lines.push(`- **${event.type}**: ${event.description}`);
185
+ }
186
+ lines.push('');
187
+ }
188
+ // 人物动向
189
+ if (Object.keys(summary.character_movements).length > 0) {
190
+ lines.push('## 人物动向');
191
+ for (const [character, movements] of Object.entries(summary.character_movements)) {
192
+ lines.push(`### ${character}`);
193
+ for (const movement of movements) {
194
+ lines.push(`- ${movement}`);
195
+ }
196
+ }
197
+ lines.push('');
198
+ }
199
+ // 关系变化
200
+ if (summary.relationship_changes.length > 0) {
201
+ lines.push('## 关系变化');
202
+ for (const change of summary.relationship_changes) {
203
+ const from = change.from || '?';
204
+ const to = change.to || '?';
205
+ const relation = change.change || '';
206
+ lines.push(`- ${to} → ${from}: ${relation}`);
207
+ }
208
+ lines.push('');
209
+ }
210
+ // 新元素
211
+ if (summary.new_elements.length > 0) {
212
+ lines.push('## 新元素');
213
+ for (const element of summary.new_elements) {
214
+ const name = element.name || '';
215
+ lines.push(`- [${element.type}] ${name}`);
216
+ }
217
+ lines.push('');
218
+ }
219
+ // 伏笔
220
+ if (summary.foreshadows.planted.length > 0) {
221
+ lines.push('## 埋设伏笔');
222
+ for (const foreshadow of summary.foreshadows.planted) {
223
+ lines.push(`- ${foreshadow}`);
224
+ }
225
+ lines.push('');
226
+ }
227
+ if (summary.foreshadows.advanced.length > 0) {
228
+ lines.push('## 呼应伏笔');
229
+ for (const foreshadow of summary.foreshadows.advanced) {
230
+ lines.push(`- ${foreshadow}`);
231
+ }
232
+ }
233
+ return lines.join('\n');
234
+ }
235
+ /**
236
+ * 列出事件
237
+ */
238
+ async listEvents(projectPath, chapter, type) {
239
+ const allEvents = await this.eventService.loadAllEvents(projectPath);
240
+ let filteredEvents = allEvents;
241
+ // 按章节过滤
242
+ if (chapter !== undefined) {
243
+ filteredEvents = filteredEvents.filter(group => group.chapter === chapter);
244
+ }
245
+ // 按类型过滤
246
+ if (type) {
247
+ filteredEvents = filteredEvents.map(group => ({
248
+ ...group,
249
+ events: group.events.filter(event => event.type === type)
250
+ })).filter(group => group.events.length > 0);
251
+ }
252
+ if (filteredEvents.length === 0) {
253
+ console.log('未找到匹配的事件记录');
254
+ return;
255
+ }
256
+ // 按章节排序
257
+ filteredEvents.sort((a, b) => a.chapter - b.chapter);
258
+ for (const group of filteredEvents) {
259
+ console.log(`\n第 ${group.chapter} 章 (${group.events.length} 条事件):`);
260
+ for (const event of group.events) {
261
+ const description = event.description || '';
262
+ console.log(` [${event.type}] ${description}`);
263
+ }
264
+ }
265
+ }
266
+ }
267
+ //# sourceMappingURL=event-command.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-command.service.js","sourceRoot":"","sources":["../../src/services/event-command.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export { QueryService } from './query.service.js';
2
2
  export { EventService } from './event.service.js';
3
+ export { EventCommandService } from './event-command.service.js';
3
4
  export { SnapshotService } from './snapshot.service.js';
4
5
  export { ValidateService } from './validate.service.js';
5
6
  export { InitService } from './init.service.js';
7
+ export { TempSettingService } from './temp-setting.service.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  // 导出所有服务
2
2
  export { QueryService } from './query.service.js';
3
3
  export { EventService } from './event.service.js';
4
+ export { EventCommandService } from './event-command.service.js';
4
5
  export { SnapshotService } from './snapshot.service.js';
5
6
  export { ValidateService } from './validate.service.js';
6
7
  export { InitService } from './init.service.js';
8
+ export { TempSettingService } from './temp-setting.service.js';
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { AddTempSettingOptions, PendingItem, ReviewQueue, MigrateOptions } from '../core/types.js';
2
+ /**
3
+ * 临时设定服务类
4
+ * 管理待审核的临时设定,包括人物和元素
5
+ */
6
+ export declare class TempSettingService {
7
+ private readonly REVIEW_QUEUE_FILE;
8
+ private readonly PENDING_CHARACTERS_DIR;
9
+ private readonly PENDING_ELEMENTS_DIR;
10
+ private readonly CHARACTERS_DIR;
11
+ private readonly SETTINGS_DIR;
12
+ /**
13
+ * 添加临时设定
14
+ */
15
+ addTempSetting(projectPath: string, options: AddTempSettingOptions): Promise<string>;
16
+ /**
17
+ * 列出待审核项
18
+ */
19
+ listPending(projectPath: string, type?: string): Promise<PendingItem[]>;
20
+ /**
21
+ * 获取审核队列
22
+ */
23
+ getReviewQueue(projectPath: string): Promise<ReviewQueue>;
24
+ /**
25
+ * 规范化待审核项(兼容旧格式)
26
+ */
27
+ private normalizePendingItems;
28
+ /**
29
+ * 审核通过并迁移
30
+ */
31
+ approveAndMigrate(projectPath: string, itemName: string, options: MigrateOptions): Promise<void>;
32
+ /**
33
+ * 拒绝并删除
34
+ */
35
+ rejectAndRemove(projectPath: string, itemName: string): Promise<void>;
36
+ /**
37
+ * 交互式审核
38
+ */
39
+ reviewInteractive(projectPath: string): Promise<void>;
40
+ /**
41
+ * 生成临时设定文件
42
+ */
43
+ private generateTempFile;
44
+ /**
45
+ * 生成临时文件内容
46
+ */
47
+ private generateTempFileContent;
48
+ /**
49
+ * 获取类型标签
50
+ */
51
+ private getTypeLabel;
52
+ /**
53
+ * 迁移到正式设定
54
+ */
55
+ private migrateToFormal;
56
+ /**
57
+ * 从审核队列中移除
58
+ */
59
+ private removeFromQueue;
60
+ /**
61
+ * 查找待审核项
62
+ */
63
+ private findPendingItem;
64
+ /**
65
+ * 更新审核队列
66
+ */
67
+ private updateReviewQueue;
68
+ }
69
+ //# sourceMappingURL=temp-setting.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temp-setting.service.d.ts","sourceRoot":"","sources":["../../src/services/temp-setting.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAG1B;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;IACvE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IAC7E,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAoC;IACzE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAEpD;;OAEG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC;IAoClB;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAe7E;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsB/D;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3E;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE3D;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;YACW,eAAe;IA4B7B;;OAEG;YACW,eAAe;IAO7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;YACW,iBAAiB;CAUhC"}