@actalk/inkos-core 0.1.0 → 0.3.1

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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agents/architect.d.ts +3 -3
  3. package/dist/agents/architect.d.ts.map +1 -1
  4. package/dist/agents/architect.js +91 -16
  5. package/dist/agents/architect.js.map +1 -1
  6. package/dist/agents/base.d.ts +2 -3
  7. package/dist/agents/base.d.ts.map +1 -1
  8. package/dist/agents/base.js.map +1 -1
  9. package/dist/agents/continuity.d.ts +1 -1
  10. package/dist/agents/continuity.d.ts.map +1 -1
  11. package/dist/agents/continuity.js +88 -17
  12. package/dist/agents/continuity.js.map +1 -1
  13. package/dist/agents/radar-source.d.ts +38 -0
  14. package/dist/agents/radar-source.d.ts.map +1 -0
  15. package/dist/agents/radar-source.js +92 -0
  16. package/dist/agents/radar-source.js.map +1 -0
  17. package/dist/agents/radar.d.ts +4 -1
  18. package/dist/agents/radar.d.ts.map +1 -1
  19. package/dist/agents/radar.js +35 -10
  20. package/dist/agents/radar.js.map +1 -1
  21. package/dist/agents/reviser.d.ts +2 -1
  22. package/dist/agents/reviser.d.ts.map +1 -1
  23. package/dist/agents/reviser.js +40 -18
  24. package/dist/agents/reviser.js.map +1 -1
  25. package/dist/agents/rules-reader.d.ts +26 -0
  26. package/dist/agents/rules-reader.d.ts.map +1 -0
  27. package/dist/agents/rules-reader.js +86 -0
  28. package/dist/agents/rules-reader.js.map +1 -0
  29. package/dist/agents/writer-prompts.d.ts +5 -0
  30. package/dist/agents/writer-prompts.d.ts.map +1 -0
  31. package/dist/agents/writer-prompts.js +289 -0
  32. package/dist/agents/writer-prompts.js.map +1 -0
  33. package/dist/agents/writer.d.ts +2 -2
  34. package/dist/agents/writer.d.ts.map +1 -1
  35. package/dist/agents/writer.js +31 -165
  36. package/dist/agents/writer.js.map +1 -1
  37. package/dist/index.d.ts +9 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +7 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/llm/provider.d.ts +41 -2
  42. package/dist/llm/provider.d.ts.map +1 -1
  43. package/dist/llm/provider.js +235 -9
  44. package/dist/llm/provider.js.map +1 -1
  45. package/dist/models/book-rules.d.ts +112 -0
  46. package/dist/models/book-rules.d.ts.map +1 -0
  47. package/dist/models/book-rules.js +45 -0
  48. package/dist/models/book-rules.js.map +1 -0
  49. package/dist/models/genre-profile.d.ts +42 -0
  50. package/dist/models/genre-profile.d.ts.map +1 -0
  51. package/dist/models/genre-profile.js +25 -0
  52. package/dist/models/genre-profile.js.map +1 -0
  53. package/dist/pipeline/agent.d.ts +14 -0
  54. package/dist/pipeline/agent.d.ts.map +1 -0
  55. package/dist/pipeline/agent.js +267 -0
  56. package/dist/pipeline/agent.js.map +1 -0
  57. package/dist/pipeline/runner.d.ts +51 -2
  58. package/dist/pipeline/runner.d.ts.map +1 -1
  59. package/dist/pipeline/runner.js +221 -11
  60. package/dist/pipeline/runner.js.map +1 -1
  61. package/genres/horror.md +51 -0
  62. package/genres/other.md +24 -0
  63. package/genres/urban.md +53 -0
  64. package/genres/xianxia.md +46 -0
  65. package/genres/xuanhuan.md +64 -0
  66. package/package.json +15 -9
@@ -3,9 +3,10 @@ import { WriterAgent } from "../agents/writer.js";
3
3
  import { ContinuityAuditor } from "../agents/continuity.js";
4
4
  import { ReviserAgent } from "../agents/reviser.js";
5
5
  import { RadarAgent } from "../agents/radar.js";
6
+ import { readGenreProfile } from "../agents/rules-reader.js";
6
7
  import { StateManager } from "../state/manager.js";
7
8
  import { dispatchNotification } from "../notify/dispatcher.js";
8
- import { writeFile } from "node:fs/promises";
9
+ import { readFile, readdir, writeFile } from "node:fs/promises";
9
10
  import { join } from "node:path";
10
11
  export class PipelineRunner {
11
12
  state;
@@ -22,18 +23,208 @@ export class PipelineRunner {
22
23
  bookId,
23
24
  };
24
25
  }
26
+ async loadGenreProfile(genre) {
27
+ const parsed = await readGenreProfile(this.config.projectRoot, genre);
28
+ return { profile: parsed.profile };
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // Atomic operations (composable by OpenClaw or agent mode)
32
+ // ---------------------------------------------------------------------------
25
33
  async runRadar() {
26
- const radar = new RadarAgent(this.agentCtx());
27
- return radar.scan(["tomato", "feilu"]);
34
+ const radar = new RadarAgent(this.agentCtx(), this.config.radarSources);
35
+ return radar.scan();
28
36
  }
29
37
  async initBook(book) {
30
38
  const architect = new ArchitectAgent(this.agentCtx(book.id));
31
39
  const bookDir = this.state.bookDir(book.id);
32
40
  await this.state.saveBookConfig(book.id, book);
33
- const foundation = await architect.generateFoundation(book);
34
- await architect.writeFoundationFiles(bookDir, foundation);
41
+ const { profile: gp } = await this.loadGenreProfile(book.genre);
42
+ const foundation = await architect.generateFoundation(book, this.config.externalContext);
43
+ await architect.writeFoundationFiles(bookDir, foundation, gp.numericalSystem);
35
44
  await this.state.saveChapterIndex(book.id, []);
36
45
  }
46
+ /** Write a single draft chapter. Saves chapter file + truth files + index + snapshot. */
47
+ async writeDraft(bookId, context) {
48
+ const releaseLock = await this.state.acquireBookLock(bookId);
49
+ try {
50
+ const book = await this.state.loadBookConfig(bookId);
51
+ const bookDir = this.state.bookDir(bookId);
52
+ const chapterNumber = await this.state.getNextChapterNumber(bookId);
53
+ const { profile: gp } = await this.loadGenreProfile(book.genre);
54
+ const writer = new WriterAgent(this.agentCtx(bookId));
55
+ const output = await writer.writeChapter({
56
+ book,
57
+ bookDir,
58
+ chapterNumber,
59
+ externalContext: context ?? this.config.externalContext,
60
+ });
61
+ // Save chapter file
62
+ const chaptersDir = join(bookDir, "chapters");
63
+ const paddedNum = String(chapterNumber).padStart(4, "0");
64
+ const sanitized = output.title.replace(/[/\\?%*:|"<>]/g, "").replace(/\s+/g, "_").slice(0, 50);
65
+ const filename = `${paddedNum}_${sanitized}.md`;
66
+ const filePath = join(chaptersDir, filename);
67
+ await writeFile(filePath, `# 第${chapterNumber}章 ${output.title}\n\n${output.content}`, "utf-8");
68
+ // Save truth files
69
+ await writer.saveChapter(bookDir, output, gp.numericalSystem);
70
+ // Update index
71
+ const existingIndex = await this.state.loadChapterIndex(bookId);
72
+ const now = new Date().toISOString();
73
+ const newEntry = {
74
+ number: chapterNumber,
75
+ title: output.title,
76
+ status: "drafted",
77
+ wordCount: output.wordCount,
78
+ createdAt: now,
79
+ updatedAt: now,
80
+ auditIssues: [],
81
+ };
82
+ await this.state.saveChapterIndex(bookId, [...existingIndex, newEntry]);
83
+ // Snapshot
84
+ await this.state.snapshotState(bookId, chapterNumber);
85
+ return { chapterNumber, title: output.title, wordCount: output.wordCount, filePath };
86
+ }
87
+ finally {
88
+ await releaseLock();
89
+ }
90
+ }
91
+ /** Audit the latest (or specified) chapter. Read-only, no lock needed. */
92
+ async auditDraft(bookId, chapterNumber) {
93
+ const book = await this.state.loadBookConfig(bookId);
94
+ const bookDir = this.state.bookDir(bookId);
95
+ const targetChapter = chapterNumber ?? (await this.state.getNextChapterNumber(bookId)) - 1;
96
+ if (targetChapter < 1) {
97
+ throw new Error(`No chapters to audit for "${bookId}"`);
98
+ }
99
+ const content = await this.readChapterContent(bookDir, targetChapter);
100
+ const auditor = new ContinuityAuditor(this.agentCtx(bookId));
101
+ const result = await auditor.auditChapter(bookDir, content, targetChapter, book.genre);
102
+ // Update index with audit result
103
+ const index = await this.state.loadChapterIndex(bookId);
104
+ const updated = index.map((ch) => ch.number === targetChapter
105
+ ? {
106
+ ...ch,
107
+ status: (result.passed ? "ready-for-review" : "audit-failed"),
108
+ updatedAt: new Date().toISOString(),
109
+ auditIssues: result.issues.map((i) => `[${i.severity}] ${i.description}`),
110
+ }
111
+ : ch);
112
+ await this.state.saveChapterIndex(bookId, updated);
113
+ return { ...result, chapterNumber: targetChapter };
114
+ }
115
+ /** Revise the latest (or specified) chapter based on audit issues. */
116
+ async reviseDraft(bookId, chapterNumber, mode = "rewrite") {
117
+ const releaseLock = await this.state.acquireBookLock(bookId);
118
+ try {
119
+ const book = await this.state.loadBookConfig(bookId);
120
+ const bookDir = this.state.bookDir(bookId);
121
+ const targetChapter = chapterNumber ?? (await this.state.getNextChapterNumber(bookId)) - 1;
122
+ if (targetChapter < 1) {
123
+ throw new Error(`No chapters to revise for "${bookId}"`);
124
+ }
125
+ // Read the current audit issues from index
126
+ const index = await this.state.loadChapterIndex(bookId);
127
+ const chapterMeta = index.find((ch) => ch.number === targetChapter);
128
+ if (!chapterMeta) {
129
+ throw new Error(`Chapter ${targetChapter} not found in index`);
130
+ }
131
+ // Re-audit to get structured issues (index only stores strings)
132
+ const content = await this.readChapterContent(bookDir, targetChapter);
133
+ const auditor = new ContinuityAuditor(this.agentCtx(bookId));
134
+ const auditResult = await auditor.auditChapter(bookDir, content, targetChapter, book.genre);
135
+ if (auditResult.passed) {
136
+ return { chapterNumber: targetChapter, wordCount: content.length, fixedIssues: ["No issues to fix"] };
137
+ }
138
+ const { profile: gp } = await this.loadGenreProfile(book.genre);
139
+ const reviser = new ReviserAgent(this.agentCtx(bookId));
140
+ const reviseOutput = await reviser.reviseChapter(bookDir, content, targetChapter, auditResult.issues, mode, book.genre);
141
+ if (reviseOutput.revisedContent.length === 0) {
142
+ throw new Error("Reviser returned empty content");
143
+ }
144
+ // Save revised chapter file
145
+ const chaptersDir = join(bookDir, "chapters");
146
+ const files = await readdir(chaptersDir);
147
+ const paddedNum = String(targetChapter).padStart(4, "0");
148
+ const existingFile = files.find((f) => f.startsWith(paddedNum) && f.endsWith(".md"));
149
+ if (existingFile) {
150
+ await writeFile(join(chaptersDir, existingFile), `# 第${targetChapter}章 ${chapterMeta.title}\n\n${reviseOutput.revisedContent}`, "utf-8");
151
+ }
152
+ // Update truth files
153
+ const storyDir = join(bookDir, "story");
154
+ if (reviseOutput.updatedState !== "(状态卡未更新)") {
155
+ await writeFile(join(storyDir, "current_state.md"), reviseOutput.updatedState, "utf-8");
156
+ }
157
+ if (gp.numericalSystem && reviseOutput.updatedLedger && reviseOutput.updatedLedger !== "(账本未更新)") {
158
+ await writeFile(join(storyDir, "particle_ledger.md"), reviseOutput.updatedLedger, "utf-8");
159
+ }
160
+ if (reviseOutput.updatedHooks !== "(伏笔池未更新)") {
161
+ await writeFile(join(storyDir, "pending_hooks.md"), reviseOutput.updatedHooks, "utf-8");
162
+ }
163
+ // Update index
164
+ const updatedIndex = index.map((ch) => ch.number === targetChapter
165
+ ? {
166
+ ...ch,
167
+ status: "ready-for-review",
168
+ wordCount: reviseOutput.wordCount,
169
+ updatedAt: new Date().toISOString(),
170
+ }
171
+ : ch);
172
+ await this.state.saveChapterIndex(bookId, updatedIndex);
173
+ // Re-snapshot
174
+ await this.state.snapshotState(bookId, targetChapter);
175
+ return {
176
+ chapterNumber: targetChapter,
177
+ wordCount: reviseOutput.wordCount,
178
+ fixedIssues: reviseOutput.fixedIssues,
179
+ };
180
+ }
181
+ finally {
182
+ await releaseLock();
183
+ }
184
+ }
185
+ /** Read all truth files for a book. */
186
+ async readTruthFiles(bookId) {
187
+ const bookDir = this.state.bookDir(bookId);
188
+ const storyDir = join(bookDir, "story");
189
+ const readSafe = async (path) => {
190
+ try {
191
+ return await readFile(path, "utf-8");
192
+ }
193
+ catch {
194
+ return "(文件不存在)";
195
+ }
196
+ };
197
+ const [currentState, particleLedger, pendingHooks, storyBible, volumeOutline, bookRules] = await Promise.all([
198
+ readSafe(join(storyDir, "current_state.md")),
199
+ readSafe(join(storyDir, "particle_ledger.md")),
200
+ readSafe(join(storyDir, "pending_hooks.md")),
201
+ readSafe(join(storyDir, "story_bible.md")),
202
+ readSafe(join(storyDir, "volume_outline.md")),
203
+ readSafe(join(storyDir, "book_rules.md")),
204
+ ]);
205
+ return { currentState, particleLedger, pendingHooks, storyBible, volumeOutline, bookRules };
206
+ }
207
+ /** Get book status overview. */
208
+ async getBookStatus(bookId) {
209
+ const book = await this.state.loadBookConfig(bookId);
210
+ const chapters = await this.state.loadChapterIndex(bookId);
211
+ const nextChapter = await this.state.getNextChapterNumber(bookId);
212
+ const totalWords = chapters.reduce((sum, ch) => sum + ch.wordCount, 0);
213
+ return {
214
+ bookId,
215
+ title: book.title,
216
+ genre: book.genre,
217
+ platform: book.platform,
218
+ status: book.status,
219
+ chaptersWritten: chapters.length,
220
+ totalWords,
221
+ nextChapter,
222
+ chapters: [...chapters],
223
+ };
224
+ }
225
+ // ---------------------------------------------------------------------------
226
+ // Full pipeline (convenience — runs draft + audit + revise in one shot)
227
+ // ---------------------------------------------------------------------------
37
228
  async writeNextChapter(bookId) {
38
229
  const releaseLock = await this.state.acquireBookLock(bookId);
39
230
  try {
@@ -47,16 +238,18 @@ export class PipelineRunner {
47
238
  const book = await this.state.loadBookConfig(bookId);
48
239
  const bookDir = this.state.bookDir(bookId);
49
240
  const chapterNumber = await this.state.getNextChapterNumber(bookId);
241
+ const { profile: gp } = await this.loadGenreProfile(book.genre);
50
242
  // 1. Write chapter
51
243
  const writer = new WriterAgent(this.agentCtx(bookId));
52
244
  const output = await writer.writeChapter({
53
245
  book,
54
246
  bookDir,
55
247
  chapterNumber,
248
+ externalContext: this.config.externalContext,
56
249
  });
57
250
  // 2. Audit chapter
58
251
  const auditor = new ContinuityAuditor(this.agentCtx(bookId));
59
- let auditResult = await auditor.auditChapter(bookDir, output.content, chapterNumber);
252
+ let auditResult = await auditor.auditChapter(bookDir, output.content, chapterNumber, book.genre);
60
253
  let finalContent = output.content;
61
254
  let finalWordCount = output.wordCount;
62
255
  let revised = false;
@@ -65,19 +258,19 @@ export class PipelineRunner {
65
258
  const criticalIssues = auditResult.issues.filter((i) => i.severity === "critical");
66
259
  if (criticalIssues.length > 0) {
67
260
  const reviser = new ReviserAgent(this.agentCtx(bookId));
68
- const reviseOutput = await reviser.reviseChapter(bookDir, output.content, chapterNumber, auditResult.issues);
261
+ const reviseOutput = await reviser.reviseChapter(bookDir, output.content, chapterNumber, auditResult.issues, "rewrite", book.genre);
69
262
  if (reviseOutput.revisedContent.length > 0) {
70
263
  finalContent = reviseOutput.revisedContent;
71
264
  finalWordCount = reviseOutput.wordCount;
72
265
  revised = true;
73
266
  // Re-audit the revised content
74
- auditResult = await auditor.auditChapter(bookDir, finalContent, chapterNumber);
267
+ auditResult = await auditor.auditChapter(bookDir, finalContent, chapterNumber, book.genre);
75
268
  // Update state files from revision
76
269
  const storyDir = join(bookDir, "story");
77
270
  if (reviseOutput.updatedState !== "(状态卡未更新)") {
78
271
  await writeFile(join(storyDir, "current_state.md"), reviseOutput.updatedState, "utf-8");
79
272
  }
80
- if (reviseOutput.updatedLedger !== "(账本未更新)") {
273
+ if (gp.numericalSystem && reviseOutput.updatedLedger && reviseOutput.updatedLedger !== "(账本未更新)") {
81
274
  await writeFile(join(storyDir, "particle_ledger.md"), reviseOutput.updatedLedger, "utf-8");
82
275
  }
83
276
  if (reviseOutput.updatedHooks !== "(伏笔池未更新)") {
@@ -89,12 +282,12 @@ export class PipelineRunner {
89
282
  // 4. Save chapter (original or revised)
90
283
  const chaptersDir = join(bookDir, "chapters");
91
284
  const paddedNum = String(chapterNumber).padStart(4, "0");
92
- const title = revised ? output.title : output.title;
285
+ const title = output.title;
93
286
  const filename = `${paddedNum}_${title.replace(/[/\\?%*:|"<>]/g, "").replace(/\s+/g, "_").slice(0, 50)}.md`;
94
287
  await writeFile(join(chaptersDir, filename), `# 第${chapterNumber}章 ${title}\n\n${finalContent}`, "utf-8");
95
288
  // Save original state files if not revised
96
289
  if (!revised) {
97
- await writer.saveChapter(bookDir, output);
290
+ await writer.saveChapter(bookDir, output, gp.numericalSystem);
98
291
  }
99
292
  // 5. Update chapter index
100
293
  const existingIndex = await this.state.loadChapterIndex(bookId);
@@ -137,5 +330,22 @@ export class PipelineRunner {
137
330
  status: auditResult.passed ? "approved" : "needs-review",
138
331
  };
139
332
  }
333
+ // ---------------------------------------------------------------------------
334
+ // Helpers
335
+ // ---------------------------------------------------------------------------
336
+ async readChapterContent(bookDir, chapterNumber) {
337
+ const chaptersDir = join(bookDir, "chapters");
338
+ const files = await readdir(chaptersDir);
339
+ const paddedNum = String(chapterNumber).padStart(4, "0");
340
+ const chapterFile = files.find((f) => f.startsWith(paddedNum) && f.endsWith(".md"));
341
+ if (!chapterFile) {
342
+ throw new Error(`Chapter ${chapterNumber} file not found in ${chaptersDir}`);
343
+ }
344
+ const raw = await readFile(join(chaptersDir, chapterFile), "utf-8");
345
+ // Strip the title line
346
+ const lines = raw.split("\n");
347
+ const contentStart = lines.findIndex((l, i) => i > 0 && l.trim().length > 0);
348
+ return contentStart >= 0 ? lines.slice(contentStart).join("\n") : raw;
349
+ }
140
350
  }
141
351
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAI/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAuDjC,MAAM,OAAO,cAAc;IACR,KAAK,CAAe;IACpB,MAAM,CAAiB;IAExC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAEO,QAAQ,CAAC,MAAe;QAC9B,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAC1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IAC9E,2DAA2D;IAC3D,8EAA8E;IAE9E,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAgB;QAC7B,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE/C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACzF,MAAM,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,OAAgB;QAC/C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAEpE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;gBACvC,IAAI;gBACJ,OAAO;gBACP,aAAa;gBACb,eAAe,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;aACxD,CAAC,CAAC;YAEH,oBAAoB;YACpB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,SAAS,KAAK,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE7C,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,aAAa,KAAK,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YAEhG,mBAAmB;YACnB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;YAE9D,eAAe;YACf,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAgB;gBAC5B,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,EAAE;aAChB,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;YAExE,WAAW;YACX,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAEtD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;QACvF,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,aAAsB;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3F,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvF,iCAAiC;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC/B,EAAE,CAAC,MAAM,KAAK,aAAa;YACzB,CAAC,CAAC;gBACE,GAAG,EAAE;gBACL,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAA0B;gBACtF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;aAC1E;YACH,CAAC,CAAC,EAAE,CACP,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,aAAsB,EAAE,OAAmB,SAAS;QACpF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3F,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,GAAG,CAAC,CAAC;YAC3D,CAAC;YAED,2CAA2C;YAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,WAAW,aAAa,qBAAqB,CAAC,CAAC;YACjE,CAAC;YAED,gEAAgE;YAChE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAE5F,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACxG,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,aAAa,CAC9C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CACtE,CAAC;YAEF,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,4BAA4B;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACrF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,SAAS,CACb,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAC/B,MAAM,aAAa,KAAK,WAAW,CAAC,KAAK,OAAO,YAAY,CAAC,cAAc,EAAE,EAC7E,OAAO,CACR,CAAC;YACJ,CAAC;YAED,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1F,CAAC;YACD,IAAI,EAAE,CAAC,eAAe,IAAI,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACjG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC7F,CAAC;YACD,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1F,CAAC;YAED,eAAe;YACf,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACpC,EAAE,CAAC,MAAM,KAAK,aAAa;gBACzB,CAAC,CAAC;oBACE,GAAG,EAAE;oBACL,MAAM,EAAE,kBAA2C;oBACnD,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC;gBACH,CAAC,CAAC,EAAE,CACP,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAExD,cAAc;YACd,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAEtD,OAAO;gBACL,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,WAAW,EAAE,YAAY,CAAC,WAAW;aACtC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAmB,EAAE;YACvD,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,GACtF,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;SAC1C,CAAC,CAAC;QAEL,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IAC9F,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEvE,OAAO;YACL,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,UAAU;YACV,WAAW;YACX,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,wEAAwE;IACxE,8EAA8E;IAE9E,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,MAAc;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhE,mBAAmB;QACnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;YACvC,IAAI;YACJ,OAAO;YACP,aAAa;YACb,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;SAC7C,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,IAAI,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CAC1C,OAAO,EACP,MAAM,CAAC,OAAO,EACd,aAAa,EACb,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,0CAA0C;QAC1C,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CACjC,CAAC;YACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,aAAa,CAC9C,OAAO,EACP,MAAM,CAAC,OAAO,EACd,aAAa,EACb,WAAW,CAAC,MAAM,EAClB,SAAS,EACT,IAAI,CAAC,KAAK,CACX,CAAC;gBAEF,IAAI,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;oBAC3C,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;oBACxC,OAAO,GAAG,IAAI,CAAC;oBAEf,+BAA+B;oBAC/B,WAAW,GAAG,MAAM,OAAO,CAAC,YAAY,CACtC,OAAO,EACP,YAAY,EACZ,aAAa,EACb,IAAI,CAAC,KAAK,CACX,CAAC;oBAEF,mCAAmC;oBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxC,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;wBAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAC1F,CAAC;oBACD,IAAI,EAAE,CAAC,eAAe,IAAI,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;wBACjG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBAC7F,CAAC;oBACD,IAAI,YAAY,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;wBAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;QAE5G,MAAM,SAAS,CACb,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAC3B,MAAM,aAAa,KAAK,KAAK,OAAO,YAAY,EAAE,EAClD,OAAO,CACR,CAAC;QAEF,2CAA2C;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC;QAED,0BAA0B;QAC1B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAgB;YAC5B,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc;YAChE,SAAS,EAAE,cAAc;YACzB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,EAAE,CAC1C;SACF,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;QAExE,0CAA0C;QAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAEtD,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBACrD,KAAK,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,GAAG;gBACxD,IAAI,EAAE;oBACJ,KAAK,MAAM,CAAC,KAAK,QAAQ,cAAc,GAAG;oBAC1C,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;oBACzB,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;oBAC5C,GAAG,WAAW,CAAC,MAAM;yBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;yBACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;iBACpD;qBACE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,IAAI,CAAC;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,aAAa;YACb,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,cAAc;YACzB,WAAW;YACX,OAAO;YACP,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc;SACzD,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,UAAU;IACV,8EAA8E;IAEtE,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,aAAqB;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,WAAW,aAAa,sBAAsB,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,uBAAuB;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: 恐怖
3
+ id: horror
4
+ chapterTypes: ["氛围章", "事件章", "揭示章", "过渡章", "回收章"]
5
+ fatigueWords: ["毛骨悚然", "不寒而栗", "浑身发冷", "头皮发麻", "鸡皮疙瘩", "心跳加速", "仿佛", "不禁", "宛如", "竟然"]
6
+ numericalSystem: false
7
+ powerScaling: false
8
+ eraResearch: false
9
+ pacingRule: "氛围递进:安全感→微妙不适→确认异常→恐惧升级→高潮→喘息,循环推进"
10
+ satisfactionTypes: ["真相揭示", "成功逃脱", "反杀怪物", "谜团解开", "同伴获救", "规则发现"]
11
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19]
12
+ ---
13
+
14
+ ## 题材禁忌
15
+
16
+ - 恐怖源头过早完全暴露(未知才恐怖)
17
+ - 主角无脑刚正面解决一切
18
+ - 用打脸/升级等爽文套路替代恐怖氛围
19
+ - 恐怖元素与日常场景割裂(好的恐怖来自日常的扭曲)
20
+ - 角色面对恐怖事件完全不害怕
21
+ - 用大量血腥描写替代心理恐惧
22
+
23
+ ## 恐惧层级
24
+
25
+ - 第一层:不适感(微妙的错位、违和)
26
+ - 第二层:不安(确认有异常,但看不清全貌)
27
+ - 第三层:恐惧(威胁明确化,逃生本能启动)
28
+ - 第四层:绝望(规则被打破,安全感彻底崩塌)
29
+ - 不要跳过层级直达高潮,递进才有力量
30
+
31
+ ## 语言铁律
32
+
33
+ - 恐怖用事实传达,不用情绪标签。✗"他感到一阵恐惧" → ✓"他后颈的汗毛一根根立起来"
34
+ - 禁止过度解释恐怖。异常现象只需呈现,不需叙述者出来总结"这一切都太不正常了"
35
+ - 克制叙事:越恐怖越冷静。句子随恐惧升级而变短,但叙述者语气始终平稳
36
+ - 被淘汰/伤害的配角必须有至少一个暗示其个人故事的细节(书包里的补习班收据、手机壳上的贴纸),让淘汰有重量
37
+
38
+ ## 叙事指导
39
+
40
+ 氛围是第一生产力。用五感细节(声音、气味、温度、触感)建立不安。
41
+ 恐怖来自对未知的恐惧,信息揭示要克制。
42
+ "看不见的"永远比"看见的"更可怕。
43
+
44
+ 角色的恐惧反应必须真实:颤抖、口干、思维混乱、判断力下降。
45
+ 求生本能驱动行为,不是英雄主义。
46
+ 每个安全区都是暂时的,喘息之后是更深的恐惧。
47
+
48
+ 规则感:恐怖世界有自己的规则,发现规则是生存的关键。
49
+ 信息管理:读者知道的和角色知道的之间的差距制造悬念。
50
+ 日常的扭曲比凭空出现的怪物更恐怖。
51
+ 每3章必须打破一次已建立的模式(规则矛盾、可信来源说谎、安全区失效),避免机械重复。
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: 通用
3
+ id: other
4
+ chapterTypes: ["推进章", "布局章", "过渡章", "回收章"]
5
+ fatigueWords: ["震惊", "不可思议", "难以置信", "深吸一口气", "仿佛", "不禁", "宛如", "竟然"]
6
+ numericalSystem: false
7
+ powerScaling: false
8
+ eraResearch: false
9
+ pacingRule: "每2-3章有一个明确的进展或反馈"
10
+ satisfactionTypes: ["目标达成", "困难克服", "真相揭示", "关系转变"]
11
+ auditDimensions: [1,2,3,6,7,8,9,10,13,14,15,16,17,18,19]
12
+ ---
13
+
14
+ ## 题材禁忌
15
+
16
+ - 无逻辑的巧合推进剧情
17
+ - 配角降智配合主角
18
+ - 无铺垫的高潮
19
+
20
+ ## 叙事指导
21
+
22
+ 根据具体题材调整叙事重心。
23
+ 保持因果逻辑链完整。
24
+ 人物行为由动机驱动,不由剧情需要驱动。
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: 都市
3
+ id: urban
4
+ chapterTypes: ["商战章", "社交章", "布局章", "过渡章", "回收章"]
5
+ fatigueWords: ["冷笑", "不可思议", "震惊", "难以置信", "深吸一口气", "眼中闪过一丝", "仿佛", "不禁", "宛如", "竟然", "核心动机", "信息边界"]
6
+ numericalSystem: false
7
+ powerScaling: false
8
+ eraResearch: true
9
+ pacingRule: "每2-3章一个小回报:商业收益、人脉拓展、对手受挫、信息优势"
10
+ satisfactionTypes: ["商战碾压", "身份揭示", "人脉兑现", "对手打脸", "资源收割", "地位跃升"]
11
+ auditDimensions: [1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
12
+ ---
13
+
14
+ ## 题材禁忌
15
+
16
+ - 无逻辑的商业奇迹(没有铺垫的暴富)
17
+ - 反派降智配合主角表演
18
+ - 无视现实法律和商业规则
19
+ - 用"一个电话搞定"跳过具体操作过程
20
+ - 女性角色沦为花瓶或奖励
21
+ - 混入玄幻/仙侠战力体系
22
+
23
+ ## 年代与现实约束
24
+
25
+ - 涉及法律、政策、商业规则必须符合设定年代
26
+ - 金融操作、公司运营必须有基本可信度
27
+ - 人物身份、职位、权限不能超出现实合理范围
28
+ - 地名、机构名、行业术语必须准确
29
+ - 物价、收入、生活水平符合时代设定
30
+
31
+ ## 语言铁律
32
+
33
+ - 人物内心独白必须口语化、直觉化,禁止商业分析/博弈论术语渗入叙事
34
+ - ✗"他迅速分析了当前的债务状况" → ✓"他把那叠皱巴巴的白条翻了三遍"
35
+ - ✗"信息落差就在这儿" → ✓"他们不知道的,他知道"
36
+ - ✗"以这种人的性格,这时候不会撕破脸" → ✓直接写对方的行为反应
37
+ - 法律/商业术语必须匹配设定年代的真实语感:2003年民间借条不会写"逾期处置授权",而是"到期没还,房子归乙方处理"
38
+ - 主角的判断通过行动和对话体现,不通过上帝视角的分析段落
39
+
40
+ ## 叙事指导
41
+
42
+ 以商战、社交博弈和信息差驱动剧情。
43
+ 权力来自人脉、资本、信息和制度位置,不来自武力。
44
+ 冲突解决靠谈判、交易、威慑、法律手段和利益交换。
45
+
46
+ 钱权必须落地,通过物、势、地位变化和小人物反应兑现爽点。
47
+ 人物关系网是核心资产,每次社交互动都应有利益计算。
48
+ 主角需要保留非功能性时刻:思考、犹豫、社交润滑。
49
+ 主角不是全知全能,必须在前5章内至少出现一次判断失误或信息偏差。
50
+
51
+ 时代厚重感、人情债与制度摩擦是都市文的灵魂。
52
+ 用场面、气味、动作、交易、压迫感切入,不要历史课件式开头。
53
+ 嵌入1-2个时代锚点(物价、新闻事件、流行用语)增强年代沉浸感。
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: 仙侠
3
+ id: xianxia
4
+ chapterTypes: ["战斗章", "悟道章", "布局章", "过渡章", "回收章"]
5
+ fatigueWords: ["冷笑", "蝼蚁", "倒吸凉气", "瞳孔骤缩", "天道", "大道", "因果", "气运", "仿佛", "不禁", "宛如", "竟然"]
6
+ numericalSystem: true
7
+ powerScaling: true
8
+ eraResearch: false
9
+ pacingRule: "修炼/悟道与战斗交替,每3-5章一次小突破或关键收获"
10
+ satisfactionTypes: ["悟道突破", "斗法碾压", "法宝收获", "身份揭示", "天劫渡过", "因果了结"]
11
+ auditDimensions: [1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19]
12
+ ---
13
+
14
+ ## 题材禁忌
15
+
16
+ - 主角为推剧情突然仁慈、犯蠢
17
+ - 修为无铺垫跳跃式突破
18
+ - 法宝凭空出现解决危机
19
+ - 天道规则前后矛盾
20
+ - 用"大道无形""天道感应"跳过具体修炼过程
21
+ - 同质资源不写衰减默认全额结算
22
+ - 风格混入都市腔、游戏系统播报腔
23
+
24
+ ## 修炼规则
25
+
26
+ - 境界突破必须有积累过程:悟道、丹药、战斗领悟、机缘
27
+ - 同质资源重复炼化必须写明衰减
28
+ - 法宝体系分品级,使用有代价(灵力、寿元、因果)
29
+ - 金手指/功法四维约束:
30
+ - 能力上限:有明确的境界/品阶天花板
31
+ - 附加代价:修炼/使用伴随代价(寿元、因果、心魔)
32
+ - 触发条件:突破/觉醒需要特定条件(悟道、机缘、天劫)
33
+ - 成长路径:功法随修为递进,不可跳阶获得
34
+ - 天道规则一旦设定不可违反,除非有明确的特殊机制
35
+ - 期初修为/资源从账本取,增量逐笔列出
36
+ - 跨大境界突破需要天劫或特殊条件
37
+
38
+ ## 叙事指导
39
+
40
+ 修炼与悟道是叙事核心,但必须融入剧情而非独立说教。
41
+ 悟道场景用五感描写,不用抽象哲理灌输。
42
+ 仙侠世界的规则感要强:因果、天劫、气运都是叙事工具。
43
+
44
+ 人情债与道义约束是仙侠特有的驱动力。
45
+ 门派政治、宗门博弈是重要的布局手段。
46
+ 战斗以法术、法宝、阵法为核心,注重空间感和规模感。
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: 玄幻
3
+ id: xuanhuan
4
+ chapterTypes: ["战斗章", "布局章", "过渡章", "回收章"]
5
+ fatigueWords: ["冷笑", "蝼蚁", "倒吸凉气", "瞳孔骤缩", "不可置信", "轰然炸裂", "满场死寂", "难以置信", "仿佛", "不禁", "宛如", "竟然"]
6
+ numericalSystem: true
7
+ powerScaling: true
8
+ eraResearch: false
9
+ pacingRule: "三章内必有明确反馈:打脸、收益兑现、信息反转、地位变化"
10
+ satisfactionTypes: ["打脸", "升级突破", "收益兑现", "智斗碾压", "身份揭示", "底牌亮出"]
11
+ auditDimensions: [1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19]
12
+ ---
13
+
14
+ ## 题材禁忌
15
+
16
+ - 主角为推剧情突然仁慈、犯蠢、讲武德
17
+ - 同质资源不写衰减默认全额结算
18
+ - 用"暴涨""海量"跳过数值结算
19
+ - 无铺垫的能力觉醒
20
+ - 反派像木桩一样排队送死
21
+ - 无铺垫强行让退场角色回归
22
+ - 在没有铺垫的情况下突然塞入新体系、新地图、新外挂解决问题
23
+ - 把所有章节都写成高爆裂战斗章
24
+ - 拆解知识库反向污染正文,写成"似曾相识"的拼装文
25
+ - 风格混入都市腔、科幻腔、游戏系统播报腔、轻小说吐槽腔
26
+
27
+ ## 数值规则
28
+
29
+ - 设定不可吃书:前文确立的设定数值后文不可无升级过程地随意改变
30
+ - 金手指四维约束:
31
+ - 能力上限:必须设定明确的能力天花板,不可无限升级
32
+ - 附加代价:使用伴随代价(寿命、体力、副作用),权衡利弊增强冲突
33
+ - 触发条件:激活与特定场景/事件关联,不可随时随地无条件使用
34
+ - 成长路径:随主角经历同步升级,解锁过程与剧情节点绑定
35
+ - 同质资源重复吞噬必须写明衰减,不得默认全额结算
36
+ - 同质吞噬衰减公式:收益 = 基础值 × max(0.3, 1 - 0.15×(N-1))
37
+ - 不要用"暴涨""海量""难以估量"跳过数值结算
38
+ - 期初值从账本取(不凭记忆),增量逐笔列出并注明来源
39
+ - 消耗逐笔列出并注明用途,期末 = 期初 + 增量 - 消耗,不得跳步
40
+ - 正文中出现的系统提示(如【气血值+X】)必须与POST_SETTLEMENT一致
41
+ - 若正文写了"比A还高"这类比较句,必须数值验证后再保留
42
+ - 数值连续性必须可追溯:同层级、同类型样本的增量不得无说明跨越一个数量级
43
+
44
+ ## 语言铁律
45
+
46
+ - 力量体系的量级感用体感传达,不用抽象数字。✗"他的火元从12缕增加到24缕" → ✓"手臂比先前有力了,握拳时指骨发紧"
47
+ - 同一高潮段(如吞火/突破/觉醒)中,同一意象域的渲染不超过两轮,第三轮必须切入新信息或新动作
48
+ - 搜尸/清点/装备段落禁止清单式列举,必须带入角色判断或取舍:✗"他翻出粗盐、水囊、黑面饼" → ✓"水囊最值钱,剩下那点水比命轻不了多少"
49
+
50
+ ## 叙事指导
51
+
52
+ 以战斗和资源获取驱动剧情。主角行为由利益驱动,杀伐果断。
53
+ 金手指/能力系统必须有限制:使用频率、范围限制或使用代价。
54
+ 设定不可吃书:前文确立的数值后文不可无升级过程地随意改变。
55
+
56
+ 三章内应有明确反馈,但反馈可以是打脸、收益兑现、信息反转、地位变化,不限于杀人。
57
+ 涉及吞噬时,收益必须同时落到资源说明与具体增量,不能只写抽象提升。
58
+ 小冲突尽快兑现反馈;不要把爽点无限后置。
59
+
60
+ 核心对手必须有脑子,有试探、有误判、有反扑。
61
+ 可以留人、钓鱼、示弱、借刀杀人,但前提只能是利益更大,绝不能是心软。
62
+
63
+ 用动作、伤势、声音、重量、冲击、温度来落地"强",少用空泛判断。
64
+ 每个场景至少推进一项:信息、地位、资源、伤亡、仇恨、境界。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actalk/inkos-core",
3
- "version": "0.1.0",
3
+ "version": "0.3.1",
4
4
  "description": "InkOS core: models, agents, pipeline, LLM integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -11,25 +11,31 @@
11
11
  "import": "./dist/index.js"
12
12
  }
13
13
  },
14
- "files": ["dist"],
14
+ "files": [
15
+ "dist",
16
+ "genres"
17
+ ],
15
18
  "license": "MIT",
16
19
  "repository": {
17
20
  "type": "git",
18
21
  "url": "https://github.com/Narcooo/inkos.git",
19
22
  "directory": "packages/core"
20
23
  },
21
- "scripts": {
22
- "build": "tsc",
23
- "dev": "tsc --watch",
24
- "test": "vitest run",
25
- "typecheck": "tsc --noEmit"
26
- },
27
24
  "dependencies": {
25
+ "@anthropic-ai/sdk": "^0.78.0",
26
+ "js-yaml": "^4.1.1",
28
27
  "openai": "^4.80.0",
29
28
  "zod": "^3.24.0"
30
29
  },
31
30
  "devDependencies": {
31
+ "@types/js-yaml": "^4.0.9",
32
32
  "typescript": "^5.8.0",
33
33
  "vitest": "^3.0.0"
34
+ },
35
+ "scripts": {
36
+ "build": "tsc",
37
+ "dev": "tsc --watch",
38
+ "test": "vitest run",
39
+ "typecheck": "tsc --noEmit"
34
40
  }
35
- }
41
+ }