@actalk/inkos-core 0.5.1 → 0.6.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/dist/agents/architect.d.ts +6 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +362 -83
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/chapter-analyzer.d.ts +6 -0
- package/dist/agents/chapter-analyzer.d.ts.map +1 -1
- package/dist/agents/chapter-analyzer.js +220 -17
- package/dist/agents/chapter-analyzer.js.map +1 -1
- package/dist/agents/composer.d.ts +28 -0
- package/dist/agents/composer.d.ts.map +1 -0
- package/dist/agents/composer.js +154 -0
- package/dist/agents/composer.js.map +1 -0
- package/dist/agents/consolidator.d.ts.map +1 -1
- package/dist/agents/consolidator.js +17 -8
- package/dist/agents/consolidator.js.map +1 -1
- package/dist/agents/continuity.d.ts +10 -0
- package/dist/agents/continuity.d.ts.map +1 -1
- package/dist/agents/continuity.js +312 -133
- package/dist/agents/continuity.js.map +1 -1
- package/dist/agents/en-prompt-sections.d.ts.map +1 -1
- package/dist/agents/en-prompt-sections.js +1 -0
- package/dist/agents/en-prompt-sections.js.map +1 -1
- package/dist/agents/length-normalizer.d.ts +32 -0
- package/dist/agents/length-normalizer.d.ts.map +1 -0
- package/dist/agents/length-normalizer.js +156 -0
- package/dist/agents/length-normalizer.js.map +1 -0
- package/dist/agents/planner.d.ts +42 -0
- package/dist/agents/planner.d.ts.map +1 -0
- package/dist/agents/planner.js +382 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/agents/post-write-validator.d.ts +6 -1
- package/dist/agents/post-write-validator.d.ts.map +1 -1
- package/dist/agents/post-write-validator.js +88 -2
- package/dist/agents/post-write-validator.js.map +1 -1
- package/dist/agents/reviser.d.ts +10 -1
- package/dist/agents/reviser.d.ts.map +1 -1
- package/dist/agents/reviser.js +151 -36
- package/dist/agents/reviser.js.map +1 -1
- package/dist/agents/rules-reader.d.ts +1 -0
- package/dist/agents/rules-reader.d.ts.map +1 -1
- package/dist/agents/rules-reader.js +13 -0
- package/dist/agents/rules-reader.js.map +1 -1
- package/dist/agents/settler-delta-parser.d.ts +7 -0
- package/dist/agents/settler-delta-parser.d.ts.map +1 -0
- package/dist/agents/settler-delta-parser.js +35 -0
- package/dist/agents/settler-delta-parser.js.map +1 -0
- package/dist/agents/settler-prompts.d.ts +2 -0
- package/dist/agents/settler-prompts.d.ts.map +1 -1
- package/dist/agents/settler-prompts.js +77 -63
- package/dist/agents/settler-prompts.js.map +1 -1
- package/dist/agents/writer-parser.d.ts +3 -2
- package/dist/agents/writer-parser.d.ts.map +1 -1
- package/dist/agents/writer-parser.js +44 -13
- package/dist/agents/writer-parser.js.map +1 -1
- package/dist/agents/writer-prompts.d.ts +2 -1
- package/dist/agents/writer-prompts.d.ts.map +1 -1
- package/dist/agents/writer-prompts.js +65 -21
- package/dist/agents/writer-prompts.js.map +1 -1
- package/dist/agents/writer.d.ts +28 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +426 -67
- package/dist/agents/writer.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/llm/provider.d.ts +1 -0
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +19 -6
- package/dist/llm/provider.js.map +1 -1
- package/dist/models/chapter.d.ts +71 -0
- package/dist/models/chapter.d.ts.map +1 -1
- package/dist/models/chapter.js +3 -0
- package/dist/models/chapter.js.map +1 -1
- package/dist/models/input-governance.d.ts +351 -0
- package/dist/models/input-governance.d.ts.map +1 -0
- package/dist/models/input-governance.js +78 -0
- package/dist/models/input-governance.js.map +1 -0
- package/dist/models/length-governance.d.ts +93 -0
- package/dist/models/length-governance.d.ts.map +1 -0
- package/dist/models/length-governance.js +34 -0
- package/dist/models/length-governance.js.map +1 -0
- package/dist/models/project.d.ts +5 -0
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +2 -0
- package/dist/models/project.js.map +1 -1
- package/dist/models/runtime-state.d.ts +521 -0
- package/dist/models/runtime-state.d.ts.map +1 -0
- package/dist/models/runtime-state.js +78 -0
- package/dist/models/runtime-state.js.map +1 -0
- package/dist/pipeline/agent.d.ts +2 -1
- package/dist/pipeline/agent.d.ts.map +1 -1
- package/dist/pipeline/agent.js +90 -5
- package/dist/pipeline/agent.js.map +1 -1
- package/dist/pipeline/runner.d.ts +65 -1
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +1029 -73
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/state/manager.d.ts +14 -0
- package/dist/state/manager.d.ts.map +1 -1
- package/dist/state/manager.js +114 -0
- package/dist/state/manager.js.map +1 -1
- package/dist/state/memory-db.d.ts +15 -0
- package/dist/state/memory-db.d.ts.map +1 -1
- package/dist/state/memory-db.js +119 -10
- package/dist/state/memory-db.js.map +1 -1
- package/dist/state/runtime-state-store.d.ts +23 -0
- package/dist/state/runtime-state-store.d.ts.map +1 -0
- package/dist/state/runtime-state-store.js +100 -0
- package/dist/state/runtime-state-store.js.map +1 -0
- package/dist/state/state-bootstrap.d.ts +19 -0
- package/dist/state/state-bootstrap.d.ts.map +1 -0
- package/dist/state/state-bootstrap.js +394 -0
- package/dist/state/state-bootstrap.js.map +1 -0
- package/dist/state/state-projections.d.ts +5 -0
- package/dist/state/state-projections.d.ts.map +1 -0
- package/dist/state/state-projections.js +164 -0
- package/dist/state/state-projections.js.map +1 -0
- package/dist/state/state-reducer.d.ts +12 -0
- package/dist/state/state-reducer.d.ts.map +1 -0
- package/dist/state/state-reducer.js +146 -0
- package/dist/state/state-reducer.js.map +1 -0
- package/dist/state/state-validator.d.ts +12 -0
- package/dist/state/state-validator.d.ts.map +1 -0
- package/dist/state/state-validator.js +56 -0
- package/dist/state/state-validator.js.map +1 -0
- package/dist/utils/chapter-splitter.d.ts +2 -0
- package/dist/utils/chapter-splitter.d.ts.map +1 -1
- package/dist/utils/chapter-splitter.js +22 -4
- package/dist/utils/chapter-splitter.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -3
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/context-filter.js +1 -1
- package/dist/utils/context-filter.js.map +1 -1
- package/dist/utils/governed-context.d.ts +7 -0
- package/dist/utils/governed-context.d.ts.map +1 -0
- package/dist/utils/governed-context.js +22 -0
- package/dist/utils/governed-context.js.map +1 -0
- package/dist/utils/governed-working-set.d.ts +18 -0
- package/dist/utils/governed-working-set.d.ts.map +1 -0
- package/dist/utils/governed-working-set.js +295 -0
- package/dist/utils/governed-working-set.js.map +1 -0
- package/dist/utils/hook-governance.d.ts +26 -0
- package/dist/utils/hook-governance.d.ts.map +1 -0
- package/dist/utils/hook-governance.js +128 -0
- package/dist/utils/hook-governance.js.map +1 -0
- package/dist/utils/hook-health.d.ts +14 -0
- package/dist/utils/hook-health.d.ts.map +1 -0
- package/dist/utils/hook-health.js +68 -0
- package/dist/utils/hook-health.js.map +1 -0
- package/dist/utils/length-metrics.d.ts +10 -0
- package/dist/utils/length-metrics.d.ts.map +1 -0
- package/dist/utils/length-metrics.js +85 -0
- package/dist/utils/length-metrics.js.map +1 -0
- package/dist/utils/long-span-fatigue.d.ts +28 -0
- package/dist/utils/long-span-fatigue.d.ts.map +1 -0
- package/dist/utils/long-span-fatigue.js +359 -0
- package/dist/utils/long-span-fatigue.js.map +1 -0
- package/dist/utils/memory-retrieval.d.ts +39 -0
- package/dist/utils/memory-retrieval.d.ts.map +1 -0
- package/dist/utils/memory-retrieval.js +574 -0
- package/dist/utils/memory-retrieval.js.map +1 -0
- package/dist/utils/spot-fix-patches.d.ts +14 -0
- package/dist/utils/spot-fix-patches.d.ts.map +1 -0
- package/dist/utils/spot-fix-patches.js +75 -0
- package/dist/utils/spot-fix-patches.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GenreProfile } from "../models/genre-profile.js";
|
|
2
|
+
import type { LengthCountingMode } from "../models/length-governance.js";
|
|
2
3
|
import type { WriteChapterOutput } from "./writer.js";
|
|
3
4
|
export interface CreativeOutput {
|
|
4
5
|
readonly title: string;
|
|
@@ -6,11 +7,11 @@ export interface CreativeOutput {
|
|
|
6
7
|
readonly wordCount: number;
|
|
7
8
|
readonly preWriteCheck: string;
|
|
8
9
|
}
|
|
9
|
-
export declare function parseCreativeOutput(chapterNumber: number, content: string): CreativeOutput;
|
|
10
|
+
export declare function parseCreativeOutput(chapterNumber: number, content: string, countingMode?: LengthCountingMode): CreativeOutput;
|
|
10
11
|
export type ParsedWriterOutput = Omit<WriteChapterOutput, "postWriteErrors" | "postWriteWarnings">;
|
|
11
12
|
/**
|
|
12
13
|
* Parse LLM output that uses === TAG === delimiters into structured chapter data.
|
|
13
14
|
* Shared by WriterAgent (writing new chapters) and ChapterAnalyzerAgent (analyzing existing chapters).
|
|
14
15
|
*/
|
|
15
|
-
export declare function parseWriterOutput(chapterNumber: number, content: string, genreProfile: GenreProfile): ParsedWriterOutput;
|
|
16
|
+
export declare function parseWriterOutput(chapterNumber: number, content: string, genreProfile: GenreProfile, countingMode?: LengthCountingMode): ParsedWriterOutput;
|
|
16
17
|
//# sourceMappingURL=writer-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer-parser.d.ts","sourceRoot":"","sources":["../../src/agents/writer-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"writer-parser.d.ts","sourceRoot":"","sources":["../../src/agents/writer-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,YAAY,GAAE,kBAA+B,GAC5C,cAAc,CA4BhB;AA2ED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;AAEnG;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,EAC1B,YAAY,GAAE,kBAA+B,GAC5C,kBAAkB,CA4BpB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { countChapterLength } from "../utils/length-metrics.js";
|
|
2
|
+
export function parseCreativeOutput(chapterNumber, content, countingMode = "zh_chars") {
|
|
2
3
|
const extract = (tag) => {
|
|
3
4
|
const regex = new RegExp(`=== ${tag} ===\\s*([\\s\\S]*?)(?==== [A-Z_]+ ===|$)`);
|
|
4
5
|
const match = content.match(regex);
|
|
@@ -8,16 +9,16 @@ export function parseCreativeOutput(chapterNumber, content) {
|
|
|
8
9
|
// Fallback: if === TAG === parsing fails (common with local/small models),
|
|
9
10
|
// try to extract usable content from the raw output
|
|
10
11
|
if (!chapterContent) {
|
|
11
|
-
chapterContent = fallbackExtractContent(content);
|
|
12
|
+
chapterContent = fallbackExtractContent(content, countingMode);
|
|
12
13
|
}
|
|
13
14
|
let title = extract("CHAPTER_TITLE");
|
|
14
15
|
if (!title) {
|
|
15
|
-
title = fallbackExtractTitle(content, chapterNumber);
|
|
16
|
+
title = fallbackExtractTitle(content, chapterNumber, countingMode);
|
|
16
17
|
}
|
|
17
18
|
return {
|
|
18
19
|
title,
|
|
19
20
|
content: chapterContent,
|
|
20
|
-
wordCount: chapterContent
|
|
21
|
+
wordCount: countChapterLength(chapterContent, countingMode),
|
|
21
22
|
preWriteCheck: extract("PRE_WRITE_CHECK"),
|
|
22
23
|
};
|
|
23
24
|
}
|
|
@@ -26,17 +27,29 @@ export function parseCreativeOutput(chapterNumber, content) {
|
|
|
26
27
|
* Tries common patterns from local/small models, then falls back to
|
|
27
28
|
* stripping metadata and returning the longest prose block.
|
|
28
29
|
*/
|
|
29
|
-
function fallbackExtractContent(raw) {
|
|
30
|
+
function fallbackExtractContent(raw, countingMode) {
|
|
30
31
|
// Try markdown heading: # 第N章 ... followed by content
|
|
31
32
|
const headingMatch = raw.match(/^#\s*第\d+章[^\n]*\n+([\s\S]+)/m);
|
|
32
33
|
if (headingMatch) {
|
|
33
34
|
return headingMatch[1].trim();
|
|
34
35
|
}
|
|
36
|
+
if (countingMode === "en_words") {
|
|
37
|
+
const englishHeadingMatch = raw.match(/^#\s*Chapter\s+\d+(?::|\s+)([^\n]*)\n+([\s\S]+)/im);
|
|
38
|
+
if (englishHeadingMatch) {
|
|
39
|
+
return englishHeadingMatch[2].trim();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
35
42
|
// Try "正文" or "内容" labeled section
|
|
36
43
|
const labelMatch = raw.match(/(?:正文|内容|章节内容)[::]\s*\n+([\s\S]+)/);
|
|
37
44
|
if (labelMatch) {
|
|
38
45
|
return labelMatch[1].trim();
|
|
39
46
|
}
|
|
47
|
+
if (countingMode === "en_words") {
|
|
48
|
+
const englishLabelMatch = raw.match(/(?:content|chapter content)[::]\s*\n+([\s\S]+)/i);
|
|
49
|
+
if (englishLabelMatch) {
|
|
50
|
+
return englishLabelMatch[1].trim();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
40
53
|
// Last resort: strip lines that look like metadata/tags, keep the rest
|
|
41
54
|
const lines = raw.split("\n");
|
|
42
55
|
const proseLines = lines.filter((line) => {
|
|
@@ -55,24 +68,30 @@ function fallbackExtractContent(raw) {
|
|
|
55
68
|
/**
|
|
56
69
|
* Fallback title extraction when === CHAPTER_TITLE === tag is missing.
|
|
57
70
|
*/
|
|
58
|
-
function fallbackExtractTitle(raw, chapterNumber) {
|
|
71
|
+
function fallbackExtractTitle(raw, chapterNumber, countingMode) {
|
|
59
72
|
// Try: # 第N章 Title
|
|
60
73
|
const headingMatch = raw.match(/^#\s*第\d+章\s*(.+)/m);
|
|
61
74
|
if (headingMatch) {
|
|
62
75
|
return headingMatch[1].trim();
|
|
63
76
|
}
|
|
77
|
+
if (countingMode === "en_words") {
|
|
78
|
+
const englishHeadingMatch = raw.match(/^#\s*Chapter\s+\d+(?::|\s+)\s*(.+)/im);
|
|
79
|
+
if (englishHeadingMatch) {
|
|
80
|
+
return englishHeadingMatch[1].trim();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
64
83
|
// Try: 章节标题:Title or CHAPTER_TITLE: Title (without === delimiters)
|
|
65
84
|
const labelMatch = raw.match(/(?:章节标题|CHAPTER_TITLE)[::]\s*(.+)/);
|
|
66
85
|
if (labelMatch) {
|
|
67
86
|
return labelMatch[1].trim();
|
|
68
87
|
}
|
|
69
|
-
return
|
|
88
|
+
return defaultChapterTitle(chapterNumber, countingMode);
|
|
70
89
|
}
|
|
71
90
|
/**
|
|
72
91
|
* Parse LLM output that uses === TAG === delimiters into structured chapter data.
|
|
73
92
|
* Shared by WriterAgent (writing new chapters) and ChapterAnalyzerAgent (analyzing existing chapters).
|
|
74
93
|
*/
|
|
75
|
-
export function parseWriterOutput(chapterNumber, content, genreProfile) {
|
|
94
|
+
export function parseWriterOutput(chapterNumber, content, genreProfile, countingMode = "zh_chars") {
|
|
76
95
|
const extract = (tag) => {
|
|
77
96
|
const regex = new RegExp(`=== ${tag} ===\\s*([\\s\\S]*?)(?==== [A-Z_]+ ===|$)`);
|
|
78
97
|
const match = content.match(regex);
|
|
@@ -81,20 +100,32 @@ export function parseWriterOutput(chapterNumber, content, genreProfile) {
|
|
|
81
100
|
const chapterContent = extract("CHAPTER_CONTENT");
|
|
82
101
|
return {
|
|
83
102
|
chapterNumber,
|
|
84
|
-
title: extract("CHAPTER_TITLE") ||
|
|
103
|
+
title: extract("CHAPTER_TITLE") || defaultChapterTitle(chapterNumber, countingMode),
|
|
85
104
|
content: chapterContent,
|
|
86
|
-
wordCount: chapterContent
|
|
105
|
+
wordCount: countChapterLength(chapterContent, countingMode),
|
|
87
106
|
preWriteCheck: extract("PRE_WRITE_CHECK"),
|
|
88
107
|
postSettlement: extract("POST_SETTLEMENT"),
|
|
89
|
-
updatedState: extract("UPDATED_STATE") ||
|
|
108
|
+
updatedState: extract("UPDATED_STATE") || defaultStatePlaceholder(countingMode),
|
|
90
109
|
updatedLedger: genreProfile.numericalSystem
|
|
91
|
-
? (extract("UPDATED_LEDGER") ||
|
|
110
|
+
? (extract("UPDATED_LEDGER") || defaultLedgerPlaceholder(countingMode))
|
|
92
111
|
: "",
|
|
93
|
-
updatedHooks: extract("UPDATED_HOOKS") ||
|
|
112
|
+
updatedHooks: extract("UPDATED_HOOKS") || defaultHooksPlaceholder(countingMode),
|
|
94
113
|
chapterSummary: extract("CHAPTER_SUMMARY"),
|
|
95
114
|
updatedSubplots: extract("UPDATED_SUBPLOTS"),
|
|
96
115
|
updatedEmotionalArcs: extract("UPDATED_EMOTIONAL_ARCS"),
|
|
97
116
|
updatedCharacterMatrix: extract("UPDATED_CHARACTER_MATRIX"),
|
|
98
117
|
};
|
|
99
118
|
}
|
|
119
|
+
function defaultChapterTitle(chapterNumber, countingMode) {
|
|
120
|
+
return countingMode === "en_words" ? `Chapter ${chapterNumber}` : `第${chapterNumber}章`;
|
|
121
|
+
}
|
|
122
|
+
function defaultStatePlaceholder(countingMode) {
|
|
123
|
+
return countingMode === "en_words" ? "(state card not updated)" : "(状态卡未更新)";
|
|
124
|
+
}
|
|
125
|
+
function defaultLedgerPlaceholder(countingMode) {
|
|
126
|
+
return countingMode === "en_words" ? "(ledger not updated)" : "(账本未更新)";
|
|
127
|
+
}
|
|
128
|
+
function defaultHooksPlaceholder(countingMode) {
|
|
129
|
+
return countingMode === "en_words" ? "(hooks pool not updated)" : "(伏笔池未更新)";
|
|
130
|
+
}
|
|
100
131
|
//# sourceMappingURL=writer-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer-parser.js","sourceRoot":"","sources":["../../src/agents/writer-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writer-parser.js","sourceRoot":"","sources":["../../src/agents/writer-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { BookConfig, FanficMode } from "../models/book.js";
|
|
2
2
|
import type { GenreProfile } from "../models/genre-profile.js";
|
|
3
3
|
import type { BookRules } from "../models/book-rules.js";
|
|
4
|
+
import type { LengthSpec } from "../models/length-governance.js";
|
|
4
5
|
export interface FanficContext {
|
|
5
6
|
readonly fanficCanon: string;
|
|
6
7
|
readonly fanficMode: FanficMode;
|
|
7
8
|
readonly allowedDeviations: ReadonlyArray<string>;
|
|
8
9
|
}
|
|
9
|
-
export declare function buildWriterSystemPrompt(book: BookConfig, genreProfile: GenreProfile, bookRules: BookRules | null, bookRulesBody: string, genreBody: string, styleGuide: string, styleFingerprint?: string, chapterNumber?: number, mode?: "full" | "creative", fanficContext?: FanficContext, languageOverride?: "zh" | "en"): string;
|
|
10
|
+
export declare function buildWriterSystemPrompt(book: BookConfig, genreProfile: GenreProfile, bookRules: BookRules | null, bookRulesBody: string, genreBody: string, styleGuide: string, styleFingerprint?: string, chapterNumber?: number, mode?: "full" | "creative", fanficContext?: FanficContext, languageOverride?: "zh" | "en", inputProfile?: "legacy" | "governed", lengthSpec?: LengthSpec): string;
|
|
10
11
|
//# sourceMappingURL=writer-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer-prompts.d.ts","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAKjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnD;AAMD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,EACzB,aAAa,CAAC,EAAE,MAAM,EACtB,IAAI,GAAE,MAAM,GAAG,UAAmB,EAClC,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,IAAI,GAAG,IAAI,EAC9B,YAAY,GAAE,QAAQ,GAAG,UAAqB,EAC9C,UAAU,CAAC,EAAE,UAAU,GACtB,MAAM,CAsDR"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { buildFanficCanonSection, buildCharacterVoiceProfiles, buildFanficModeInstructions } from "./fanfic-prompt-sections.js";
|
|
2
2
|
import { buildEnglishCoreRules, buildEnglishAntiAIRules, buildEnglishCharacterMethod, buildEnglishPreWriteChecklist, buildEnglishGenreIntro } from "./en-prompt-sections.js";
|
|
3
|
+
import { buildLengthSpec } from "../utils/length-metrics.js";
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// Public API
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
6
|
-
export function buildWriterSystemPrompt(book, genreProfile, bookRules, bookRulesBody, genreBody, styleGuide, styleFingerprint, chapterNumber, mode = "full", fanficContext, languageOverride) {
|
|
7
|
+
export function buildWriterSystemPrompt(book, genreProfile, bookRules, bookRulesBody, genreBody, styleGuide, styleFingerprint, chapterNumber, mode = "full", fanficContext, languageOverride, inputProfile = "legacy", lengthSpec) {
|
|
7
8
|
const isEnglish = (languageOverride ?? genreProfile.language) === "en";
|
|
9
|
+
const governed = inputProfile === "governed";
|
|
10
|
+
const resolvedLengthSpec = lengthSpec ?? buildLengthSpec(book.chapterWordCount, isEnglish ? "en" : "zh");
|
|
8
11
|
const outputSection = mode === "creative"
|
|
9
|
-
? buildCreativeOutputFormat(book, genreProfile)
|
|
10
|
-
: buildOutputFormat(book, genreProfile);
|
|
12
|
+
? buildCreativeOutputFormat(book, genreProfile, resolvedLengthSpec)
|
|
13
|
+
: buildOutputFormat(book, genreProfile, resolvedLengthSpec);
|
|
11
14
|
const sections = isEnglish
|
|
12
15
|
? [
|
|
13
16
|
buildEnglishGenreIntro(book, genreProfile),
|
|
14
17
|
buildEnglishCoreRules(book),
|
|
15
|
-
|
|
16
|
-
|
|
18
|
+
buildGovernedInputContract("en", governed),
|
|
19
|
+
buildLengthGuidance(resolvedLengthSpec, "en"),
|
|
20
|
+
!governed ? buildEnglishAntiAIRules() : "",
|
|
21
|
+
!governed ? buildEnglishCharacterMethod() : "",
|
|
17
22
|
buildGenreRules(genreProfile, genreBody),
|
|
18
23
|
buildProtagonistRules(bookRules),
|
|
19
24
|
buildBookRulesBody(bookRulesBody),
|
|
@@ -22,19 +27,21 @@ export function buildWriterSystemPrompt(book, genreProfile, bookRules, bookRules
|
|
|
22
27
|
fanficContext ? buildFanficCanonSection(fanficContext.fanficCanon, fanficContext.fanficMode) : "",
|
|
23
28
|
fanficContext ? buildCharacterVoiceProfiles(fanficContext.fanficCanon) : "",
|
|
24
29
|
fanficContext ? buildFanficModeInstructions(fanficContext.fanficMode, fanficContext.allowedDeviations) : "",
|
|
25
|
-
buildEnglishPreWriteChecklist(book, genreProfile),
|
|
30
|
+
!governed ? buildEnglishPreWriteChecklist(book, genreProfile) : "",
|
|
26
31
|
outputSection,
|
|
27
32
|
]
|
|
28
33
|
: [
|
|
29
34
|
buildGenreIntro(book, genreProfile),
|
|
30
|
-
buildCoreRules(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
buildCoreRules(resolvedLengthSpec),
|
|
36
|
+
buildGovernedInputContract("zh", governed),
|
|
37
|
+
buildLengthGuidance(resolvedLengthSpec, "zh"),
|
|
38
|
+
!governed ? buildAntiAIExamples() : "",
|
|
39
|
+
!governed ? buildCharacterPsychologyMethod() : "",
|
|
40
|
+
!governed ? buildSupportingCharacterMethod() : "",
|
|
41
|
+
!governed ? buildReaderPsychologyMethod() : "",
|
|
42
|
+
!governed ? buildEmotionalPacingMethod() : "",
|
|
43
|
+
!governed ? buildImmersionTechniques() : "",
|
|
44
|
+
!governed ? buildGoldenChaptersRules(chapterNumber) : "",
|
|
38
45
|
bookRules?.enableFullCastTracking ? buildFullCastTracking() : "",
|
|
39
46
|
buildGenreRules(genreProfile, genreBody),
|
|
40
47
|
buildProtagonistRules(bookRules),
|
|
@@ -44,7 +51,7 @@ export function buildWriterSystemPrompt(book, genreProfile, bookRules, bookRules
|
|
|
44
51
|
fanficContext ? buildFanficCanonSection(fanficContext.fanficCanon, fanficContext.fanficMode) : "",
|
|
45
52
|
fanficContext ? buildCharacterVoiceProfiles(fanficContext.fanficCanon) : "",
|
|
46
53
|
fanficContext ? buildFanficModeInstructions(fanficContext.fanficMode, fanficContext.allowedDeviations) : "",
|
|
47
|
-
buildPreWriteChecklist(book, genreProfile),
|
|
54
|
+
!governed ? buildPreWriteChecklist(book, genreProfile) : "",
|
|
48
55
|
outputSection,
|
|
49
56
|
];
|
|
50
57
|
return sections.filter(Boolean).join("\n\n");
|
|
@@ -55,14 +62,50 @@ export function buildWriterSystemPrompt(book, genreProfile, bookRules, bookRules
|
|
|
55
62
|
function buildGenreIntro(book, gp) {
|
|
56
63
|
return `你是一位专业的${gp.name}网络小说作家。你为${book.platform}平台写作。`;
|
|
57
64
|
}
|
|
65
|
+
function buildGovernedInputContract(language, governed) {
|
|
66
|
+
if (!governed)
|
|
67
|
+
return "";
|
|
68
|
+
if (language === "en") {
|
|
69
|
+
return `## Input Governance Contract
|
|
70
|
+
|
|
71
|
+
- Chapter-specific steering comes from the provided chapter intent and composed context package.
|
|
72
|
+
- The outline is the default plan, not unconditional global supremacy.
|
|
73
|
+
- When the runtime rule stack records an active L4 -> L3 override, follow the current task over local planning.
|
|
74
|
+
- Keep hard guardrails compact: canon, continuity facts, and explicit prohibitions still win.
|
|
75
|
+
- If an English Variance Brief is provided, obey it: avoid the listed phrase/opening/ending patterns and satisfy the scene obligation.
|
|
76
|
+
- In multi-character scenes, include at least one resistance-bearing exchange instead of reducing the beat to summary or explanation.`;
|
|
77
|
+
}
|
|
78
|
+
return `## 输入治理契约
|
|
79
|
+
|
|
80
|
+
- 本章具体写什么,以提供给你的 chapter intent 和 composed context package 为准。
|
|
81
|
+
- 卷纲是默认规划,不是全局最高规则。
|
|
82
|
+
- 当 runtime rule stack 明确记录了 L4 -> L3 的 active override 时,优先执行当前任务意图,再局部调整规划层。
|
|
83
|
+
- 真正不能突破的只有硬护栏:世界设定、连续性事实、显式禁令。
|
|
84
|
+
- 如果提供了 English Variance Brief,必须主动避开其中列出的高频短语、重复开头和重复结尾模式,并完成 scene obligation。
|
|
85
|
+
- 多角色场景里,至少给出一轮带阻力的直接交锋,不要把人物关系写成纯解释或纯总结。`;
|
|
86
|
+
}
|
|
87
|
+
function buildLengthGuidance(lengthSpec, language) {
|
|
88
|
+
if (language === "en") {
|
|
89
|
+
return `## Length Guidance
|
|
90
|
+
|
|
91
|
+
- Target length: ${lengthSpec.target} words
|
|
92
|
+
- Acceptable range: ${lengthSpec.softMin}-${lengthSpec.softMax} words
|
|
93
|
+
- Hard range: ${lengthSpec.hardMin}-${lengthSpec.hardMax} words`;
|
|
94
|
+
}
|
|
95
|
+
return `## 字数治理
|
|
96
|
+
|
|
97
|
+
- 目标字数:${lengthSpec.target}字
|
|
98
|
+
- 允许区间:${lengthSpec.softMin}-${lengthSpec.softMax}字
|
|
99
|
+
- 硬区间:${lengthSpec.hardMin}-${lengthSpec.hardMax}字`;
|
|
100
|
+
}
|
|
58
101
|
// ---------------------------------------------------------------------------
|
|
59
102
|
// Core rules (~25 universal rules)
|
|
60
103
|
// ---------------------------------------------------------------------------
|
|
61
|
-
function buildCoreRules(
|
|
104
|
+
function buildCoreRules(lengthSpec) {
|
|
62
105
|
return `## 核心规则
|
|
63
106
|
|
|
64
107
|
1. 以简体中文工作,句子长短交替,段落适合手机阅读(3-5行/段)
|
|
65
|
-
2.
|
|
108
|
+
2. 目标字数:${lengthSpec.target}字,允许区间:${lengthSpec.softMin}-${lengthSpec.softMax}字
|
|
66
109
|
3. 伏笔前后呼应,不留悬空线;所有埋下的伏笔都必须在后续收回
|
|
67
110
|
4. 只读必要上下文,不机械重复已有内容
|
|
68
111
|
|
|
@@ -79,6 +122,7 @@ function buildCoreRules(book) {
|
|
|
79
122
|
- Show, don't tell:用细节堆砌真实,用行动证明强大;角色的野心和价值观内化于行为,不通过口号喊出来
|
|
80
123
|
- 五感代入法:场景描写中加入1-2种五感细节(视觉、听觉、嗅觉、触觉),增强画面感
|
|
81
124
|
- 钩子设计:每章结尾设置悬念/伏笔/钩子,勾住读者继续阅读
|
|
125
|
+
- 对话驱动:有角色互动的场景中,优先用对话传递冲突和信息,不要用大段叙述替代角色交锋。独处/逃生/探索场景除外
|
|
82
126
|
- 信息分层植入:基础信息在行动中自然带出,关键设定结合剧情节点揭示,严禁大段灌输世界观
|
|
83
127
|
- 描写必须服务叙事:环境描写烘托氛围或暗示情节,一笔带过即可;禁止无效描写
|
|
84
128
|
- 日常/过渡段落必须为后续剧情服务:或埋伏笔,或推进关系,或建立反差。纯填充式日常是流水账的温床
|
|
@@ -385,7 +429,7 @@ function buildPreWriteChecklist(book, gp) {
|
|
|
385
429
|
// ---------------------------------------------------------------------------
|
|
386
430
|
// Creative-only output format (no settlement blocks)
|
|
387
431
|
// ---------------------------------------------------------------------------
|
|
388
|
-
function buildCreativeOutputFormat(book, gp) {
|
|
432
|
+
function buildCreativeOutputFormat(book, gp, lengthSpec) {
|
|
389
433
|
const resourceRow = gp.numericalSystem
|
|
390
434
|
? "| 当前资源总量 | X | 与账本一致 |\n| 本章预计增量 | +X(来源) | 无增量写+0 |"
|
|
391
435
|
: "";
|
|
@@ -408,7 +452,7 @@ ${preWriteTable}
|
|
|
408
452
|
(章节标题,不含"第X章")
|
|
409
453
|
|
|
410
454
|
=== CHAPTER_CONTENT ===
|
|
411
|
-
(
|
|
455
|
+
(正文内容,目标${lengthSpec.target}字,允许区间${lengthSpec.softMin}-${lengthSpec.softMax}字)
|
|
412
456
|
|
|
413
457
|
【重要】本次只需输出以上三个区块(PRE_WRITE_CHECK、CHAPTER_TITLE、CHAPTER_CONTENT)。
|
|
414
458
|
状态卡、伏笔池、摘要等追踪文件将由后续结算阶段处理,请勿输出。`;
|
|
@@ -416,7 +460,7 @@ ${preWriteTable}
|
|
|
416
460
|
// ---------------------------------------------------------------------------
|
|
417
461
|
// Output format
|
|
418
462
|
// ---------------------------------------------------------------------------
|
|
419
|
-
function buildOutputFormat(book, gp) {
|
|
463
|
+
function buildOutputFormat(book, gp, lengthSpec) {
|
|
420
464
|
const resourceRow = gp.numericalSystem
|
|
421
465
|
? "| 当前资源总量 | X | 与账本一致 |\n| 本章预计增量 | +X(来源) | 无增量写+0 |"
|
|
422
466
|
: "";
|
|
@@ -455,7 +499,7 @@ ${preWriteTable}
|
|
|
455
499
|
(章节标题,不含"第X章")
|
|
456
500
|
|
|
457
501
|
=== CHAPTER_CONTENT ===
|
|
458
|
-
(
|
|
502
|
+
(正文内容,目标${lengthSpec.target}字,允许区间${lengthSpec.softMin}-${lengthSpec.softMax}字)
|
|
459
503
|
|
|
460
504
|
${postSettlement}
|
|
461
505
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer-prompts.js","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writer-prompts.js","sourceRoot":"","sources":["../../src/agents/writer-prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/writer.d.ts
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { BaseAgent } from "./base.js";
|
|
2
2
|
import type { BookConfig } from "../models/book.js";
|
|
3
3
|
import { type PostWriteViolation } from "./post-write-validator.js";
|
|
4
|
+
import type { ChapterTrace, ContextPackage, RuleStack } from "../models/input-governance.js";
|
|
5
|
+
import type { LengthSpec } from "../models/length-governance.js";
|
|
6
|
+
import type { RuntimeStateDelta } from "../models/runtime-state.js";
|
|
7
|
+
import type { RuntimeStateSnapshot } from "../state/state-reducer.js";
|
|
4
8
|
export interface WriteChapterInput {
|
|
5
9
|
readonly book: BookConfig;
|
|
6
10
|
readonly bookDir: string;
|
|
7
11
|
readonly chapterNumber: number;
|
|
8
12
|
readonly externalContext?: string;
|
|
13
|
+
readonly chapterIntent?: string;
|
|
14
|
+
readonly contextPackage?: ContextPackage;
|
|
15
|
+
readonly ruleStack?: RuleStack;
|
|
16
|
+
readonly trace?: ChapterTrace;
|
|
17
|
+
readonly lengthSpec?: LengthSpec;
|
|
9
18
|
readonly wordCountOverride?: number;
|
|
10
19
|
readonly temperatureOverride?: number;
|
|
11
20
|
}
|
|
@@ -21,27 +30,45 @@ export interface WriteChapterOutput {
|
|
|
21
30
|
readonly wordCount: number;
|
|
22
31
|
readonly preWriteCheck: string;
|
|
23
32
|
readonly postSettlement: string;
|
|
33
|
+
readonly runtimeStateDelta?: RuntimeStateDelta;
|
|
34
|
+
readonly runtimeStateSnapshot?: RuntimeStateSnapshot;
|
|
24
35
|
readonly updatedState: string;
|
|
25
36
|
readonly updatedLedger: string;
|
|
26
37
|
readonly updatedHooks: string;
|
|
27
38
|
readonly chapterSummary: string;
|
|
39
|
+
readonly updatedChapterSummaries?: string;
|
|
28
40
|
readonly updatedSubplots: string;
|
|
29
41
|
readonly updatedEmotionalArcs: string;
|
|
30
42
|
readonly updatedCharacterMatrix: string;
|
|
31
43
|
readonly postWriteErrors: ReadonlyArray<PostWriteViolation>;
|
|
32
44
|
readonly postWriteWarnings: ReadonlyArray<PostWriteViolation>;
|
|
45
|
+
readonly hookHealthIssues?: ReadonlyArray<{
|
|
46
|
+
readonly severity: "critical" | "warning" | "info";
|
|
47
|
+
readonly category: string;
|
|
48
|
+
readonly description: string;
|
|
49
|
+
readonly suggestion: string;
|
|
50
|
+
}>;
|
|
33
51
|
readonly tokenUsage?: TokenUsage;
|
|
34
52
|
}
|
|
35
53
|
export declare class WriterAgent extends BaseAgent {
|
|
36
54
|
get name(): string;
|
|
55
|
+
private localize;
|
|
56
|
+
private logInfo;
|
|
57
|
+
private logWarn;
|
|
37
58
|
writeChapter(input: WriteChapterInput): Promise<WriteChapterOutput>;
|
|
38
59
|
private settle;
|
|
39
60
|
saveChapter(bookDir: string, output: WriteChapterOutput, numericalSystem?: boolean, language?: "zh" | "en"): Promise<void>;
|
|
40
61
|
private buildUserPrompt;
|
|
62
|
+
private buildGovernedUserPrompt;
|
|
63
|
+
private buildSettlerGovernedControlBlock;
|
|
64
|
+
private buildLengthRequirementBlock;
|
|
41
65
|
private loadRecentChapters;
|
|
42
66
|
private readFileOrDefault;
|
|
43
67
|
/** Save new truth files (summaries, subplots, emotional arcs, character matrix). */
|
|
44
|
-
saveNewTruthFiles(bookDir: string, output: WriteChapterOutput): Promise<void>;
|
|
68
|
+
saveNewTruthFiles(bookDir: string, output: WriteChapterOutput, language?: "zh" | "en"): Promise<void>;
|
|
69
|
+
private renderDeltaSummaryRow;
|
|
70
|
+
private buildRuntimeStateArtifactsIfPresent;
|
|
71
|
+
private resolveRuntimeStateArtifactsForOutput;
|
|
45
72
|
private appendChapterSummary;
|
|
46
73
|
private buildStyleFingerprint;
|
|
47
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/agents/writer.ts"],"names":[],"mappings":"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"}
|