@dayinxisheng/novel-tools 0.1.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.
- package/CHANGELOG.md +45 -0
- package/README.md +80 -0
- package/dist/commands/check.d.ts +6 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +105 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +31 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +52 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/query.d.ts +6 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +169 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/shared.d.ts +51 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +110 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/commands/snapshot.d.ts +6 -0
- package/dist/commands/snapshot.d.ts.map +1 -0
- package/dist/commands/snapshot.js +140 -0
- package/dist/commands/snapshot.js.map +1 -0
- package/dist/core/constants.d.ts +38 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +88 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/file.d.ts +55 -0
- package/dist/core/file.d.ts.map +1 -0
- package/dist/core/file.js +136 -0
- package/dist/core/file.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +145 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/yaml.d.ts +43 -0
- package/dist/core/yaml.d.ts.map +1 -0
- package/dist/core/yaml.js +90 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/services/event.service.d.ts +35 -0
- package/dist/services/event.service.d.ts.map +1 -0
- package/dist/services/event.service.js +177 -0
- package/dist/services/event.service.js.map +1 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +7 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/init.service.d.ts +51 -0
- package/dist/services/init.service.d.ts.map +1 -0
- package/dist/services/init.service.js +250 -0
- package/dist/services/init.service.js.map +1 -0
- package/dist/services/query.service.d.ts +43 -0
- package/dist/services/query.service.d.ts.map +1 -0
- package/dist/services/query.service.js +129 -0
- package/dist/services/query.service.js.map +1 -0
- package/dist/services/snapshot.service.d.ts +42 -0
- package/dist/services/snapshot.service.d.ts.map +1 -0
- package/dist/services/snapshot.service.js +234 -0
- package/dist/services/snapshot.service.js.map +1 -0
- package/dist/services/validate.service.d.ts +43 -0
- package/dist/services/validate.service.d.ts.map +1 -0
- package/dist/services/validate.service.js +278 -0
- package/dist/services/validate.service.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/output.d.ts +30 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +112 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/validation.d.ts +59 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +120 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { FileUtils } from '../core/file.js';
|
|
2
|
+
import { YamlUtils } from '../core/yaml.js';
|
|
3
|
+
import { STANDARD_DIRS, NOVEL_TYPES } from '../core/constants.js';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* 项目初始化服务类
|
|
7
|
+
*/
|
|
8
|
+
export class InitService {
|
|
9
|
+
/**
|
|
10
|
+
* 初始化新项目
|
|
11
|
+
*/
|
|
12
|
+
async initProject(options, basePath) {
|
|
13
|
+
const { novelName, novelType, targetWords = 100000 } = options;
|
|
14
|
+
const projectPath = path.join(basePath, novelName);
|
|
15
|
+
// 检查目录是否已存在
|
|
16
|
+
if (FileUtils.exists(projectPath)) {
|
|
17
|
+
throw new Error(`目录已存在: ${projectPath}`);
|
|
18
|
+
}
|
|
19
|
+
// 创建项目目录结构
|
|
20
|
+
await this.createDirectoryStructure(projectPath);
|
|
21
|
+
// 创建项目配置
|
|
22
|
+
await this.createProjectConfig(projectPath, novelName, novelType, targetWords);
|
|
23
|
+
// 创建静态设定模板
|
|
24
|
+
await this.createStaticSettingTemplates(projectPath, novelType);
|
|
25
|
+
// 创建主大纲模板
|
|
26
|
+
await this.createMainOutlineTemplate(projectPath, novelName);
|
|
27
|
+
// 创建弧列表模板
|
|
28
|
+
await this.createArcListTemplate(projectPath);
|
|
29
|
+
// 创建事件记录文件
|
|
30
|
+
await this.createEventsFile(projectPath);
|
|
31
|
+
// 创建 README
|
|
32
|
+
await this.createProjectReadme(projectPath, novelName);
|
|
33
|
+
return projectPath;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 创建目录结构
|
|
37
|
+
*/
|
|
38
|
+
async createDirectoryStructure(projectPath) {
|
|
39
|
+
for (const dir of STANDARD_DIRS) {
|
|
40
|
+
const dirPath = path.join(projectPath, dir);
|
|
41
|
+
await FileUtils.ensureDir(dirPath);
|
|
42
|
+
}
|
|
43
|
+
// 创建事件归档目录(第一卷)
|
|
44
|
+
const vol1EventsPath = path.join(projectPath, 'settings', 'events', 'vol1');
|
|
45
|
+
await FileUtils.ensureDir(vol1EventsPath);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 创建项目配置文件
|
|
49
|
+
*/
|
|
50
|
+
async createProjectConfig(projectPath, novelName, novelType, targetWords) {
|
|
51
|
+
const config = {
|
|
52
|
+
novel_name: novelName,
|
|
53
|
+
novel_type: novelType,
|
|
54
|
+
created_at: new Date().toISOString(),
|
|
55
|
+
target_words: targetWords,
|
|
56
|
+
current_words: 0,
|
|
57
|
+
current_volume: 1,
|
|
58
|
+
current_chapter: 1
|
|
59
|
+
};
|
|
60
|
+
const configPath = path.join(projectPath, 'project.json');
|
|
61
|
+
await FileUtils.writeJson(configPath, config);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 创建静态设定模板
|
|
65
|
+
*/
|
|
66
|
+
async createStaticSettingTemplates(projectPath, novelType) {
|
|
67
|
+
const typeConfig = NOVEL_TYPES[novelType];
|
|
68
|
+
const staticDir = path.join(projectPath, 'settings', 'static');
|
|
69
|
+
// 创建世界觿定模板
|
|
70
|
+
await this.createWorldTemplate(staticDir);
|
|
71
|
+
// 根据类型创建额外设定
|
|
72
|
+
if (typeConfig.staticFiles.includes('power_system.yaml')) {
|
|
73
|
+
await this.createPowerSystemTemplate(staticDir);
|
|
74
|
+
}
|
|
75
|
+
if (typeConfig.staticFiles.includes('era_background.yaml')) {
|
|
76
|
+
await this.createEraBackgroundTemplate(staticDir);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 创建世界觿定模板
|
|
81
|
+
*/
|
|
82
|
+
async createWorldTemplate(staticDir) {
|
|
83
|
+
const worldTemplate = {
|
|
84
|
+
name: '世界观名称',
|
|
85
|
+
description: '简要描述世界背景',
|
|
86
|
+
geography: {
|
|
87
|
+
continents: [],
|
|
88
|
+
important_locations: []
|
|
89
|
+
},
|
|
90
|
+
factions: [],
|
|
91
|
+
timeline: []
|
|
92
|
+
};
|
|
93
|
+
await YamlUtils.writeFile(path.join(staticDir, 'world.yaml'), worldTemplate);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 创建力量体系模板
|
|
97
|
+
*/
|
|
98
|
+
async createPowerSystemTemplate(staticDir) {
|
|
99
|
+
const powerTemplate = {
|
|
100
|
+
name: '力量体系名称',
|
|
101
|
+
description: '描述力量体系的基本原理',
|
|
102
|
+
levels: [
|
|
103
|
+
{ name: '第一境界', description: '境界描述' },
|
|
104
|
+
{ name: '第二境界', description: '境界描述' }
|
|
105
|
+
],
|
|
106
|
+
cultivation_methods: [],
|
|
107
|
+
special_abilities: []
|
|
108
|
+
};
|
|
109
|
+
await YamlUtils.writeFile(path.join(staticDir, 'power_system.yaml'), powerTemplate);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 创建时代背景模板
|
|
113
|
+
*/
|
|
114
|
+
async createEraBackgroundTemplate(staticDir) {
|
|
115
|
+
const eraTemplate = {
|
|
116
|
+
era: '时代名称',
|
|
117
|
+
time_period: '具体时间段',
|
|
118
|
+
political_system: '政治体制',
|
|
119
|
+
economic_system: '经济体制',
|
|
120
|
+
social_structure: '社会阶层结构',
|
|
121
|
+
cultural_features: '文化特色',
|
|
122
|
+
major_events: []
|
|
123
|
+
};
|
|
124
|
+
await YamlUtils.writeFile(path.join(staticDir, 'era_background.yaml'), eraTemplate);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* 创建主大纲模板
|
|
128
|
+
*/
|
|
129
|
+
async createMainOutlineTemplate(projectPath, novelName) {
|
|
130
|
+
const outlineContent = `# ${novelName} 大纲
|
|
131
|
+
|
|
132
|
+
## 核心概述
|
|
133
|
+
|
|
134
|
+
**一句话简介**:
|
|
135
|
+
|
|
136
|
+
**核心主题**:
|
|
137
|
+
|
|
138
|
+
**故事类型**:
|
|
139
|
+
|
|
140
|
+
## 主要人物
|
|
141
|
+
|
|
142
|
+
### 主角
|
|
143
|
+
|
|
144
|
+
**姓名**:
|
|
145
|
+
**性格特点**:
|
|
146
|
+
**成长轨迹**:
|
|
147
|
+
**核心动机**:
|
|
148
|
+
|
|
149
|
+
### 重要配角
|
|
150
|
+
|
|
151
|
+
## 世界观设定
|
|
152
|
+
|
|
153
|
+
(详见 settings/static/ 目录)
|
|
154
|
+
|
|
155
|
+
## 剧情结构
|
|
156
|
+
|
|
157
|
+
### 第一卷
|
|
158
|
+
|
|
159
|
+
**主题**:
|
|
160
|
+
|
|
161
|
+
**核心冲突**:
|
|
162
|
+
|
|
163
|
+
**主要剧情弧**:
|
|
164
|
+
|
|
165
|
+
### 第二卷
|
|
166
|
+
|
|
167
|
+
(待规划)
|
|
168
|
+
|
|
169
|
+
## 创作笔记
|
|
170
|
+
|
|
171
|
+
`;
|
|
172
|
+
await FileUtils.writeText(path.join(projectPath, 'outline', 'main_outline.md'), outlineContent);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 创建弧列表模板
|
|
176
|
+
*/
|
|
177
|
+
async createArcListTemplate(projectPath) {
|
|
178
|
+
const arcListTemplate = {
|
|
179
|
+
arcs: [
|
|
180
|
+
{
|
|
181
|
+
name: '开篇',
|
|
182
|
+
startChapter: 1,
|
|
183
|
+
endChapter: 10,
|
|
184
|
+
theme: '引入主角,建立世界观',
|
|
185
|
+
status: 'planning'
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
};
|
|
189
|
+
await YamlUtils.writeFile(path.join(projectPath, 'outline', 'arc_list.yaml'), arcListTemplate);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 创建事件记录文件
|
|
193
|
+
*/
|
|
194
|
+
async createEventsFile(projectPath) {
|
|
195
|
+
const eventsTemplate = {
|
|
196
|
+
description: '章节事件记录文件',
|
|
197
|
+
events: []
|
|
198
|
+
};
|
|
199
|
+
const eventsPath = path.join(projectPath, 'settings', 'events', 'current', 'events.json');
|
|
200
|
+
await FileUtils.writeJson(eventsPath, eventsTemplate);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 创建项目 README
|
|
204
|
+
*/
|
|
205
|
+
async createProjectReadme(projectPath, novelName) {
|
|
206
|
+
const readmeContent = `# ${novelName}
|
|
207
|
+
|
|
208
|
+
## 项目信息
|
|
209
|
+
|
|
210
|
+
- **创建时间**:${new Date().toLocaleDateString('zh-CN')}
|
|
211
|
+
- **目标字数**:100,000 字
|
|
212
|
+
- **当前进度**:第 1 卷,第 1 章
|
|
213
|
+
|
|
214
|
+
## 目录结构
|
|
215
|
+
|
|
216
|
+
\`\`\`
|
|
217
|
+
my-novel/
|
|
218
|
+
├── characters/ # 人物相关
|
|
219
|
+
│ ├── cards/ # 人物卡片
|
|
220
|
+
│ ├── samples/ # 人物样本
|
|
221
|
+
│ └── growth/ # 人物成长轨迹
|
|
222
|
+
├── settings/ # 设定相关
|
|
223
|
+
│ ├── static/ # 静态设定
|
|
224
|
+
│ ├── state/ # 状态快照
|
|
225
|
+
│ └── events/ # 事件记录
|
|
226
|
+
├── outline/ # 大纲
|
|
227
|
+
├── chapter_plans/ # 章节规划
|
|
228
|
+
├── drafts/ # 草稿
|
|
229
|
+
└── references/ # 参考资料
|
|
230
|
+
\`\`\`
|
|
231
|
+
|
|
232
|
+
## 使用工具
|
|
233
|
+
|
|
234
|
+
\`\`\`bash
|
|
235
|
+
# 查询设定
|
|
236
|
+
novel-tools query world
|
|
237
|
+
novel-tools query character <姓名>
|
|
238
|
+
|
|
239
|
+
# 一致性检查
|
|
240
|
+
novel-tools check outline
|
|
241
|
+
novel-tools check chapter <章节数>
|
|
242
|
+
|
|
243
|
+
# 生成快照
|
|
244
|
+
novel-tools snapshot --volume 1
|
|
245
|
+
\`\`\`
|
|
246
|
+
`;
|
|
247
|
+
await FileUtils.writeText(path.join(projectPath, 'README.md'), readmeContent);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=init.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.service.js","sourceRoot":"","sources":["../../src/services/init.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ProjectConfig, CharacterState, CharacterCardInfo, StateQueryResult, Relationship, Foreshadow } from '../core/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 查询服务类
|
|
4
|
+
*/
|
|
5
|
+
export declare class QueryService {
|
|
6
|
+
/**
|
|
7
|
+
* 查询静态设定
|
|
8
|
+
*/
|
|
9
|
+
queryStaticSetting(projectPath: string, settingType: string): Promise<any>;
|
|
10
|
+
/**
|
|
11
|
+
* 查询人物信息
|
|
12
|
+
*/
|
|
13
|
+
queryCharacter(projectPath: string, characterName: string): Promise<CharacterCardInfo>;
|
|
14
|
+
/**
|
|
15
|
+
* 查询指定卷结束时的状态
|
|
16
|
+
*/
|
|
17
|
+
queryStateAtVolume(projectPath: string, volume: number): Promise<StateQueryResult>;
|
|
18
|
+
/**
|
|
19
|
+
* 查询当前状态
|
|
20
|
+
*/
|
|
21
|
+
queryCurrentState(projectPath: string): Promise<StateQueryResult>;
|
|
22
|
+
/**
|
|
23
|
+
* 查询人物关系
|
|
24
|
+
*/
|
|
25
|
+
queryRelationships(projectPath: string, characterName?: string): Promise<Relationship[]>;
|
|
26
|
+
/**
|
|
27
|
+
* 查询伏笔
|
|
28
|
+
*/
|
|
29
|
+
queryForeshadows(projectPath: string, status?: string): Promise<Foreshadow[]>;
|
|
30
|
+
/**
|
|
31
|
+
* 查询人物当前状态
|
|
32
|
+
*/
|
|
33
|
+
queryCharacterState(projectPath: string, characterName: string): Promise<CharacterState | null>;
|
|
34
|
+
/**
|
|
35
|
+
* 获取项目配置
|
|
36
|
+
*/
|
|
37
|
+
getProjectConfig(projectPath: string): Promise<ProjectConfig | null>;
|
|
38
|
+
/**
|
|
39
|
+
* 验证项目路径
|
|
40
|
+
*/
|
|
41
|
+
validateProjectPath(projectPath: string): Promise<boolean>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=query.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.service.d.ts","sourceRoot":"","sources":["../../src/services/query.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACX,MAAM,kBAAkB,CAAC;AAQ1B;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAUhF;;OAEG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4B5F;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAexF;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBvE;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiB9F;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAUzF;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWrG;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAK1E;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIjE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { FileUtils } from '../core/file.js';
|
|
2
|
+
import { YamlUtils } from '../core/yaml.js';
|
|
3
|
+
import { CHARACTER_SUBDIRS, SETTING_FILE_MAP, ERROR_MESSAGES } from '../core/constants.js';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* 查询服务类
|
|
7
|
+
*/
|
|
8
|
+
export class QueryService {
|
|
9
|
+
/**
|
|
10
|
+
* 查询静态设定
|
|
11
|
+
*/
|
|
12
|
+
async queryStaticSetting(projectPath, settingType) {
|
|
13
|
+
const staticDir = path.join(projectPath, 'settings', 'static');
|
|
14
|
+
const filename = SETTING_FILE_MAP[settingType] || `${settingType}.yaml`;
|
|
15
|
+
const filePath = path.join(staticDir, filename);
|
|
16
|
+
const result = await YamlUtils.parseFile(filePath);
|
|
17
|
+
return result || {};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 查询人物信息
|
|
21
|
+
*/
|
|
22
|
+
async queryCharacter(projectPath, characterName) {
|
|
23
|
+
const cardsDir = path.join(projectPath, 'characters', 'cards');
|
|
24
|
+
// 搜索各类型人物目录
|
|
25
|
+
for (const subdir of CHARACTER_SUBDIRS) {
|
|
26
|
+
const cardPath = path.join(cardsDir, subdir, `${characterName}.md`);
|
|
27
|
+
if (FileUtils.exists(cardPath)) {
|
|
28
|
+
return {
|
|
29
|
+
found: true,
|
|
30
|
+
card_path: cardPath,
|
|
31
|
+
identity: subdir
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// 搜索待处理人物
|
|
36
|
+
const tempPath = path.join(projectPath, 'temp_settings', 'pending_characters', `${characterName}.md`);
|
|
37
|
+
if (FileUtils.exists(tempPath)) {
|
|
38
|
+
return {
|
|
39
|
+
found: true,
|
|
40
|
+
card_path: tempPath,
|
|
41
|
+
identity: 'pending'
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return { found: false, message: ERROR_MESSAGES.CHARACTER_NOT_FOUND(characterName) };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 查询指定卷结束时的状态
|
|
48
|
+
*/
|
|
49
|
+
async queryStateAtVolume(projectPath, volume) {
|
|
50
|
+
const stateDir = path.join(projectPath, 'settings', 'state');
|
|
51
|
+
const snapshotPath = path.join(stateDir, `vol${volume}_snapshot.yaml`);
|
|
52
|
+
const snapshot = await YamlUtils.parseFile(snapshotPath);
|
|
53
|
+
if (snapshot) {
|
|
54
|
+
return {
|
|
55
|
+
found: true,
|
|
56
|
+
...snapshot
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return { found: false, message: ERROR_MESSAGES.SNAPSHOT_NOT_FOUND(volume) };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 查询当前状态
|
|
63
|
+
*/
|
|
64
|
+
async queryCurrentState(projectPath) {
|
|
65
|
+
const stateDir = path.join(projectPath, 'settings', 'state');
|
|
66
|
+
const files = await FileUtils.globFiles(stateDir, 'vol*_snapshot.yaml');
|
|
67
|
+
if (files.length > 0) {
|
|
68
|
+
const latest = files[files.length - 1];
|
|
69
|
+
const snapshot = await YamlUtils.parseFile(latest);
|
|
70
|
+
if (snapshot) {
|
|
71
|
+
return {
|
|
72
|
+
found: true,
|
|
73
|
+
...snapshot
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { found: false, message: ERROR_MESSAGES.SNAPSHOT_NOT_FOUND() };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 查询人物关系
|
|
81
|
+
*/
|
|
82
|
+
async queryRelationships(projectPath, characterName) {
|
|
83
|
+
const state = await this.queryCurrentState(projectPath);
|
|
84
|
+
if (!state.found || !state.relationships) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
const relationships = state.relationships;
|
|
88
|
+
if (characterName) {
|
|
89
|
+
return relationships.filter(r => r.from === characterName || r.to === characterName);
|
|
90
|
+
}
|
|
91
|
+
return relationships;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 查询伏笔
|
|
95
|
+
*/
|
|
96
|
+
async queryForeshadows(projectPath, status = 'unresolved') {
|
|
97
|
+
const state = await this.queryCurrentState(projectPath);
|
|
98
|
+
if (!state.found || !state.foreshadows) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
return state.foreshadows[status] || [];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 查询人物当前状态
|
|
105
|
+
*/
|
|
106
|
+
async queryCharacterState(projectPath, characterName) {
|
|
107
|
+
const state = await this.queryCurrentState(projectPath);
|
|
108
|
+
if (!state.found || !state.characters) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const characters = state.characters;
|
|
112
|
+
return characters.find(c => c.name === characterName) || null;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 获取项目配置
|
|
116
|
+
*/
|
|
117
|
+
async getProjectConfig(projectPath) {
|
|
118
|
+
const configPath = path.join(projectPath, 'project.json');
|
|
119
|
+
return await FileUtils.readJson(configPath);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 验证项目路径
|
|
123
|
+
*/
|
|
124
|
+
async validateProjectPath(projectPath) {
|
|
125
|
+
const configPath = path.join(projectPath, 'project.json');
|
|
126
|
+
return FileUtils.exists(configPath);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=query.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../src/services/query.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Snapshot } from '../core/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 快照生成服务类
|
|
4
|
+
*/
|
|
5
|
+
export declare class SnapshotService {
|
|
6
|
+
/**
|
|
7
|
+
* 收集所有人物及其初始状态
|
|
8
|
+
*/
|
|
9
|
+
private collectCharacters;
|
|
10
|
+
/**
|
|
11
|
+
* 更新人物状态
|
|
12
|
+
*/
|
|
13
|
+
private updateCharacterStates;
|
|
14
|
+
/**
|
|
15
|
+
* 收集伏笔状态
|
|
16
|
+
*/
|
|
17
|
+
private collectForeshadows;
|
|
18
|
+
/**
|
|
19
|
+
* 收集人物关系
|
|
20
|
+
*/
|
|
21
|
+
private collectRelationships;
|
|
22
|
+
/**
|
|
23
|
+
* 生成快照
|
|
24
|
+
*/
|
|
25
|
+
generateSnapshot(projectPath: string, volume?: number, arc?: string): Promise<Snapshot>;
|
|
26
|
+
/**
|
|
27
|
+
* 保存快照
|
|
28
|
+
*/
|
|
29
|
+
saveSnapshot(projectPath: string, snapshot: Snapshot, volume?: number, arc?: string): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* 加载快照
|
|
32
|
+
*/
|
|
33
|
+
loadSnapshot(projectPath: string, volume?: number, arc?: string): Promise<Snapshot | null>;
|
|
34
|
+
/**
|
|
35
|
+
* 列出所有快照
|
|
36
|
+
*/
|
|
37
|
+
listSnapshots(projectPath: string): Promise<Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
path: string;
|
|
40
|
+
}>>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=snapshot.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.service.d.ts","sourceRoot":"","sources":["../../src/services/snapshot.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAA6D,MAAM,kBAAkB,CAAC;AAGvG;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyD7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC;IAiCpB;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;IAqBlB;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAsBhG;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CASzF"}
|