@kienmatu/inkos-core 0.1.3 → 3.3.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/agent/agent-session.js +2 -2
- package/dist/agent/agent-session.js.map +1 -1
- package/dist/agent/agent-system-prompt.d.ts.map +1 -1
- package/dist/agent/agent-system-prompt.js +3 -2
- package/dist/agent/agent-system-prompt.js.map +1 -1
- package/dist/agent/agent-tools.d.ts +1 -0
- package/dist/agent/agent-tools.d.ts.map +1 -1
- package/dist/agent/agent-tools.js +16 -8
- package/dist/agent/agent-tools.js.map +1 -1
- package/dist/agent/pi-stream.d.ts.map +1 -1
- package/dist/agent/pi-stream.js +74 -3
- package/dist/agent/pi-stream.js.map +1 -1
- package/dist/agents/architect.js +7 -7
- package/dist/agents/continuity.d.ts.map +1 -1
- package/dist/agents/continuity.js +2 -1
- package/dist/agents/continuity.js.map +1 -1
- package/dist/agents/fanfic-prompt-sections.d.ts +3 -3
- package/dist/agents/fanfic-prompt-sections.d.ts.map +1 -1
- package/dist/agents/fanfic-prompt-sections.js +83 -3
- package/dist/agents/fanfic-prompt-sections.js.map +1 -1
- package/dist/agents/observer-prompts.js +1 -1
- package/dist/agents/observer-prompts.js.map +1 -1
- package/dist/agents/planner-prompts.d.ts +1 -1
- package/dist/agents/planner-prompts.d.ts.map +1 -1
- package/dist/agents/planner-prompts.js +15 -14
- package/dist/agents/planner-prompts.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +2 -2
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/post-write-validator.d.ts +2 -0
- package/dist/agents/post-write-validator.d.ts.map +1 -1
- package/dist/agents/post-write-validator.js +6 -2
- package/dist/agents/post-write-validator.js.map +1 -1
- package/dist/agents/settler-prompts.d.ts +1 -0
- package/dist/agents/settler-prompts.d.ts.map +1 -1
- package/dist/agents/settler-prompts.js +200 -13
- package/dist/agents/settler-prompts.js.map +1 -1
- package/dist/agents/short-fiction.d.ts +12 -9
- package/dist/agents/short-fiction.d.ts.map +1 -1
- package/dist/agents/short-fiction.js +269 -49
- package/dist/agents/short-fiction.js.map +1 -1
- package/dist/agents/writer-prompts.d.ts +6 -0
- package/dist/agents/writer-prompts.d.ts.map +1 -1
- package/dist/agents/writer-prompts.js +97 -36
- package/dist/agents/writer-prompts.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +6 -1
- package/dist/agents/writer.js.map +1 -1
- package/dist/interaction/action-envelope.d.ts +10 -10
- package/dist/interaction/action-envelope.d.ts.map +1 -1
- package/dist/interaction/action-envelope.js +13 -6
- package/dist/interaction/action-envelope.js.map +1 -1
- package/dist/interaction/project-tools.d.ts +3 -1
- package/dist/interaction/project-tools.d.ts.map +1 -1
- package/dist/interaction/project-tools.js +27 -8
- package/dist/interaction/project-tools.js.map +1 -1
- package/dist/llm/provider.d.ts +6 -0
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +28 -2
- package/dist/llm/provider.js.map +1 -1
- package/dist/models/short-fiction-format.d.ts +10 -0
- package/dist/models/short-fiction-format.d.ts.map +1 -0
- package/dist/models/short-fiction-format.js +41 -0
- package/dist/models/short-fiction-format.js.map +1 -0
- package/dist/pipeline/chapter-review-cycle.d.ts +3 -8
- package/dist/pipeline/chapter-review-cycle.d.ts.map +1 -1
- package/dist/pipeline/chapter-review-cycle.js +3 -1
- package/dist/pipeline/chapter-review-cycle.js.map +1 -1
- package/dist/pipeline/chapter-state-recovery.d.ts +2 -4
- package/dist/pipeline/chapter-state-recovery.d.ts.map +1 -1
- package/dist/pipeline/chapter-state-recovery.js.map +1 -1
- package/dist/pipeline/chapter-truth-validation.d.ts +2 -4
- package/dist/pipeline/chapter-truth-validation.d.ts.map +1 -1
- package/dist/pipeline/chapter-truth-validation.js.map +1 -1
- package/dist/pipeline/runner.d.ts +14 -0
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +55 -38
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pipeline/short-fiction-runner.d.ts.map +1 -1
- package/dist/pipeline/short-fiction-runner.js +19 -6
- package/dist/pipeline/short-fiction-runner.js.map +1 -1
- package/dist/prompts/short-fiction.d.ts +3 -0
- package/dist/prompts/short-fiction.d.ts.map +1 -1
- package/dist/prompts/short-fiction.js +155 -85
- package/dist/prompts/short-fiction.js.map +1 -1
- package/dist/utils/chapter-memo-parser.d.ts +10 -0
- package/dist/utils/chapter-memo-parser.d.ts.map +1 -1
- package/dist/utils/chapter-memo-parser.js +59 -10
- package/dist/utils/chapter-memo-parser.js.map +1 -1
- package/dist/utils/golden-opening.d.ts +12 -0
- package/dist/utils/golden-opening.d.ts.map +1 -0
- package/dist/utils/golden-opening.js +18 -0
- package/dist/utils/golden-opening.js.map +1 -0
- package/dist/utils/log-message.d.ts +13 -0
- package/dist/utils/log-message.d.ts.map +1 -0
- package/dist/utils/log-message.js +2 -0
- package/dist/utils/log-message.js.map +1 -0
- package/package.json +1 -1
- package/skills/inkos-short-writing/SKILL.md +2 -2
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export function buildSettlerSystemPrompt(book, genreProfile, bookRules, language) {
|
|
2
2
|
const resolvedLang = language ?? genreProfile.language;
|
|
3
3
|
const isEnglish = resolvedLang === "en";
|
|
4
|
+
if (isEnglish) {
|
|
5
|
+
return buildSettlerSystemPromptEn(book, genreProfile, bookRules);
|
|
6
|
+
}
|
|
4
7
|
const numericalBlock = genreProfile.numericalSystem
|
|
5
8
|
? `\n- 本题材有数值/资源体系,你必须在 UPDATED_LEDGER 中追踪正文中出现的所有资源变动
|
|
6
9
|
- 数值验算铁律:期初 + 增量 = 期末,三项必须可验算`
|
|
@@ -21,10 +24,7 @@ export function buildSettlerSystemPrompt(book, genreProfile, bookRules, language
|
|
|
21
24
|
const fullCastBlock = bookRules?.enableFullCastTracking
|
|
22
25
|
? `\n## 全员追踪\nPOST_SETTLEMENT 必须额外包含:本章出场角色清单、角色间关系变动、未出场但被提及的角色。`
|
|
23
26
|
: "";
|
|
24
|
-
|
|
25
|
-
? `【LANGUAGE OVERRIDE】ALL output (state card, hooks, summaries, subplots, emotional arcs, character matrix) MUST be in English. The === TAG === markers remain unchanged.\n\n`
|
|
26
|
-
: "";
|
|
27
|
-
return `${langPrefix}你是状态追踪分析师。给定新章节正文和当前 truth 文件,你的任务是产出更新后的 truth 文件。
|
|
27
|
+
return `你是状态追踪分析师。给定新章节正文和当前 truth 文件,你的任务是产出更新后的 truth 文件。
|
|
28
28
|
|
|
29
29
|
## 工作模式
|
|
30
30
|
|
|
@@ -73,6 +73,81 @@ ${buildSettlerOutputFormat(genreProfile)}
|
|
|
73
73
|
- 第 1 章尤其注意:初始追踪文件可能包含从大纲预生成的内容,只保留正文实际支持的部分,不要保留正文未涉及的预设
|
|
74
74
|
- **伏笔例外**:正文中出现的未解疑问、悬念、伏笔线索必须在 hooks 中记录。这不是"推断",而是"提取正文中的叙事承诺"。如果正文暗示了一个谜题/冲突/秘密但没有解答,那就是一个 hook,必须记录`;
|
|
75
75
|
}
|
|
76
|
+
function buildSettlerSystemPromptEn(book, genreProfile, bookRules) {
|
|
77
|
+
const numericalBlock = genreProfile.numericalSystem
|
|
78
|
+
? `\n- This genre has a numeric/resource system. You must track every resource change the prose shows in UPDATED_LEDGER
|
|
79
|
+
- Hard rule for the arithmetic: opening + delta = closing. All three figures must check out`
|
|
80
|
+
: `\n- This genre has no numeric system. Leave UPDATED_LEDGER empty`;
|
|
81
|
+
const hookRules = `
|
|
82
|
+
## Hook tracking rules (strictly enforced)
|
|
83
|
+
|
|
84
|
+
In this document, a "hook" is a planted open question the story has promised to pay off — a tracked thread, Chekhov's gun — not the chapter-opening grab or the end-of-chapter cliffhanger.
|
|
85
|
+
|
|
86
|
+
- **New hook**: open a new hook_id only when the prose raises an unresolved question that carries into later chapters AND has a concrete direction for its payoff. Do not open a new hook for a rephrasing, a restatement, or an abstract summary of a hook that already exists.
|
|
87
|
+
- **Mentioned**: an existing hook is referred to this chapter but nothing was added — no new information, no change in what the reader or the characters understand about it → put it in the \`mention\` array; do not update lastAdvancedChapter.
|
|
88
|
+
- **Advanced**: an existing hook gained a new fact, a piece of evidence, a shift in a relationship, an escalation of risk, or a narrowing of scope (fewer suspects, fewer possible explanations, a deadline moved closer) → you **must** set lastAdvancedChapter to the current chapter number, and update its status and \`notes\`.
|
|
89
|
+
- **Resolved**: the hook was explicitly revealed, settled, or rendered moot → set its status to resolved and record how it landed in \`notes\`.
|
|
90
|
+
- **Deferred**: mark a hook deferred only when the prose actively shelves it, moves it to the background, or the plot pushes it back. Do not defer mechanically just because several chapters have passed.
|
|
91
|
+
- The current hook pool contains both active hooks and dormant seeds that are semantically related to this chapter. Dormant does not mean irrelevant: if this chapter starts, reworks, or makes one concrete, you must reuse its existing hookId and update its status, payoff direction, and notes in hookOps.upsert.
|
|
92
|
+
- Judging whether a new phrasing in the prose is still the same narrative promise is your job, not the host's. Even when the characters, numbers, form of evidence, or wording change, if it carries the same suspense or payoff promise, update the existing hookId rather than opening a candidate.
|
|
93
|
+
- newHookCandidates is only for a genuinely new narrative promise that nothing in the current hook pool represents. The host validates structure only; it will not guess semantic ownership for you.
|
|
94
|
+
- payoffTiming uses semantic pacing, never a hard chapter number: only immediate / near-term / mid-arc / slow-burn / endgame.
|
|
95
|
+
- The \`status\` field in RUNTIME_STATE_DELTA is a closed set, exactly like payoffTiming: only open / progressing / deferred / resolved. Any other word (including the planner's narrative phase names such as planted, pressured, or near_payoff) is rejected by the schema and the whole settlement is lost. Put narrative nuance in \`notes\`, not in \`status\`.
|
|
96
|
+
- **Hard rule**: a hook being mentioned again, restated in different words, or recapped in the abstract is NOT an advance. Update lastAdvancedChapter only when the hook's state actually changed. A hook that merely appeared goes in the \`mention\` array.`;
|
|
97
|
+
const fullCastBlock = bookRules?.enableFullCastTracking
|
|
98
|
+
? `\n## Full-cast tracking\nPOST_SETTLEMENT must additionally contain: the roster of characters who appear in this chapter, every change in the relationships between them, and characters who do not appear but are referred to.`
|
|
99
|
+
: "";
|
|
100
|
+
return `You are a state-tracking analyst. Given the prose of a new chapter and the current truth files, your job is to produce the updated truth files.
|
|
101
|
+
|
|
102
|
+
## Working mode
|
|
103
|
+
|
|
104
|
+
You are not writing fiction. Your job is to:
|
|
105
|
+
1. Read the prose closely and extract every state change
|
|
106
|
+
2. Update incrementally on top of the "current tracking files"
|
|
107
|
+
3. Output strictly in the === TAG === format
|
|
108
|
+
|
|
109
|
+
All output — state card, hooks, chapter summaries, subplots, emotional arcs, character matrix — must be written in English. The === TAG === markers and every JSON key stay exactly as given.
|
|
110
|
+
|
|
111
|
+
## Analysis dimensions
|
|
112
|
+
|
|
113
|
+
Extract the following from the prose:
|
|
114
|
+
- Characters entering, leaving, or changing state (injured / advanced a rank or broke through a threshold / dead, and so on)
|
|
115
|
+
- Movement between locations, scene transitions
|
|
116
|
+
- Items and resources gained or spent
|
|
117
|
+
- Hooks planted, advanced, or paid off
|
|
118
|
+
- Shifts in the emotional arc
|
|
119
|
+
- Subplot progress
|
|
120
|
+
- Changes in the relationships between characters, and new information boundaries
|
|
121
|
+
|
|
122
|
+
## Book information
|
|
123
|
+
|
|
124
|
+
- Title: ${book.title}
|
|
125
|
+
- Genre: ${genreProfile.name} (${book.genre})
|
|
126
|
+
- Platform: ${book.platform}
|
|
127
|
+
${numericalBlock}
|
|
128
|
+
${hookRules}${fullCastBlock}
|
|
129
|
+
|
|
130
|
+
## Output format (follow it exactly)
|
|
131
|
+
|
|
132
|
+
${buildSettlerOutputFormatEn(genreProfile)}
|
|
133
|
+
|
|
134
|
+
## Key rules
|
|
135
|
+
|
|
136
|
+
1. The state card and the hook pool are incremental updates on top of the "current tracking files", never written from scratch
|
|
137
|
+
2. Every factual change in the prose must be reflected in the corresponding tracking file
|
|
138
|
+
3. Do not drop details: numeric changes, location changes, relationship changes and information changes all get recorded
|
|
139
|
+
4. The "information boundary" in the character interaction matrix must be exact — a character knows only what happened while they were present
|
|
140
|
+
|
|
141
|
+
## Hard rule: record only what actually happened in the prose (strictly enforced)
|
|
142
|
+
|
|
143
|
+
- **Extract only the events and state changes the prose explicitly describes.** Do not infer, predict, or fill in anything the prose did not write
|
|
144
|
+
- If the prose has the character reach the door and not go through it, the state card cannot say the character has entered the room
|
|
145
|
+
- If the prose only hints at a possibility without confirming it, do not record it as an established fact
|
|
146
|
+
- Do not pull plot the prose has not reached yet out of the volume outline or the story outline into the state card
|
|
147
|
+
- Do not delete or rewrite anything in the existing hooks that this chapter did not touch — update only the hooks this chapter's prose bears on
|
|
148
|
+
- Chapter 1 needs particular care: the initial tracking files may hold content pre-generated from the outline. Keep only the parts the prose actually supports, and drop every preset the prose never reached
|
|
149
|
+
- **Hook exception**: an unresolved question, a piece of suspense, or a planted thread that the prose raises must be recorded in hooks. That is not inference — it is extracting the narrative promise the prose made. If the prose raises a mystery, a conflict, or a secret and leaves it unanswered, that is a hook and it must be recorded`;
|
|
150
|
+
}
|
|
76
151
|
function buildSettlerOutputFormat(gp) {
|
|
77
152
|
const chapterTypeExample = gp.chapterTypes.length > 0
|
|
78
153
|
? gp.chapterTypes[0]
|
|
@@ -145,35 +220,147 @@ function buildSettlerOutputFormat(gp) {
|
|
|
145
220
|
7. 如果回收或延后 hook,必须放在 resolve / defer 数组里
|
|
146
221
|
8. chapterSummary.chapter 必须等于当前章节号`;
|
|
147
222
|
}
|
|
223
|
+
function buildSettlerOutputFormatEn(gp) {
|
|
224
|
+
const chapterTypeExample = gp.chapterTypes.length > 0
|
|
225
|
+
? gp.chapterTypes[0]
|
|
226
|
+
: "main-plot advance";
|
|
227
|
+
return `=== POST_SETTLEMENT ===
|
|
228
|
+
(Briefly state which states changed this chapter, which hooks advanced, and anything the settlement should watch for; a Markdown table or bullet points are both fine)
|
|
229
|
+
|
|
230
|
+
=== RUNTIME_STATE_DELTA ===
|
|
231
|
+
(Must be JSON. No Markdown, no commentary.)
|
|
232
|
+
\`\`\`json
|
|
233
|
+
{
|
|
234
|
+
"chapter": 12,
|
|
235
|
+
"currentStatePatch": {
|
|
236
|
+
"currentLocation": "optional",
|
|
237
|
+
"protagonistState": "optional",
|
|
238
|
+
"currentGoal": "optional",
|
|
239
|
+
"currentConstraint": "optional",
|
|
240
|
+
"currentAlliances": "optional",
|
|
241
|
+
"currentConflict": "optional"
|
|
242
|
+
},
|
|
243
|
+
"hookOps": {
|
|
244
|
+
"upsert": [
|
|
245
|
+
{
|
|
246
|
+
"hookId": "mentor-oath",
|
|
247
|
+
"startChapter": 8,
|
|
248
|
+
"type": "relationship",
|
|
249
|
+
"status": "progressing",
|
|
250
|
+
"lastAdvancedChapter": 12,
|
|
251
|
+
"expectedPayoff": "uncover the truth behind the debt owed to the mentor",
|
|
252
|
+
"payoffTiming": "slow-burn",
|
|
253
|
+
"notes": "why this hook advanced / was deferred / was resolved this chapter"
|
|
254
|
+
}
|
|
255
|
+
],
|
|
256
|
+
"mention": ["hookIds this chapter only referred to, with no real advance"],
|
|
257
|
+
"resolve": ["hookIds that were paid off"],
|
|
258
|
+
"defer": ["hookIds that need to be marked deferred"]
|
|
259
|
+
},
|
|
260
|
+
"newHookCandidates": [
|
|
261
|
+
{
|
|
262
|
+
"type": "mystery",
|
|
263
|
+
"expectedPayoff": "where this new hook should eventually pay off",
|
|
264
|
+
"payoffTiming": "near-term",
|
|
265
|
+
"notes": "why this chapter opens a new unresolved question"
|
|
266
|
+
}
|
|
267
|
+
],
|
|
268
|
+
"chapterSummary": {
|
|
269
|
+
"chapter": 12,
|
|
270
|
+
"title": "chapter title",
|
|
271
|
+
"characters": "Character A,Character B",
|
|
272
|
+
"events": "one sentence covering the key events",
|
|
273
|
+
"stateChanges": "one sentence covering the state changes",
|
|
274
|
+
"hookActivity": "mentor-oath advanced",
|
|
275
|
+
"mood": "tense",
|
|
276
|
+
"chapterType": "${chapterTypeExample}"
|
|
277
|
+
},
|
|
278
|
+
"subplotOps": [],
|
|
279
|
+
"emotionalArcOps": [],
|
|
280
|
+
"characterMatrixOps": [],
|
|
281
|
+
"notes": []
|
|
282
|
+
}
|
|
283
|
+
\`\`\`
|
|
284
|
+
|
|
285
|
+
Rules:
|
|
286
|
+
1. Output the delta only; do not rewrite the full truth files
|
|
287
|
+
2. Every chapter-number field must be an integer, never natural language
|
|
288
|
+
3. hookOps.upsert may carry only a hookId that already exists in the current hook pool; inventing a new hookId is not allowed, and when the prose carries an existing hook forward you must reuse that id
|
|
289
|
+
4. A brand-new unresolved thread goes into newHookCandidates only once you have confirmed the current hook pool holds nothing carrying the same narrative promise
|
|
290
|
+
5. If an existing hook was only mentioned and its state did not really change, put it in mention and do not update lastAdvancedChapter
|
|
291
|
+
6. If this chapter advanced an existing hook, lastAdvancedChapter must equal the current chapter number
|
|
292
|
+
7. A hook that was paid off or shelved must go into the resolve / defer array
|
|
293
|
+
8. chapterSummary.chapter must equal the current chapter number`;
|
|
294
|
+
}
|
|
148
295
|
export function buildSettlerUserPrompt(params) {
|
|
296
|
+
// Default to English: a forgotten argument must not silently emit Chinese
|
|
297
|
+
// into an English prompt path.
|
|
298
|
+
const isEnglish = (params.language ?? "en") === "en";
|
|
149
299
|
const ledgerBlock = params.ledger
|
|
150
|
-
?
|
|
300
|
+
? isEnglish
|
|
301
|
+
? `\n## Current resource ledger\n${params.ledger}\n`
|
|
302
|
+
: `\n## 当前资源账本\n${params.ledger}\n`
|
|
151
303
|
: "";
|
|
152
304
|
const summariesBlock = params.chapterSummaries !== "(文件尚未创建)"
|
|
153
|
-
?
|
|
305
|
+
? isEnglish
|
|
306
|
+
? `\n## Existing chapter summaries\n${params.chapterSummaries}\n`
|
|
307
|
+
: `\n## 已有章节摘要\n${params.chapterSummaries}\n`
|
|
154
308
|
: "";
|
|
155
309
|
const subplotBlock = params.subplotBoard !== "(文件尚未创建)"
|
|
156
|
-
?
|
|
310
|
+
? isEnglish
|
|
311
|
+
? `\n## Current subplot board\n${params.subplotBoard}\n`
|
|
312
|
+
: `\n## 当前支线进度板\n${params.subplotBoard}\n`
|
|
157
313
|
: "";
|
|
158
314
|
const emotionalBlock = params.emotionalArcs !== "(文件尚未创建)"
|
|
159
|
-
?
|
|
315
|
+
? isEnglish
|
|
316
|
+
? `\n## Current emotional arcs\n${params.emotionalArcs}\n`
|
|
317
|
+
: `\n## 当前情感弧线\n${params.emotionalArcs}\n`
|
|
160
318
|
: "";
|
|
161
319
|
const matrixBlock = params.characterMatrix !== "(文件尚未创建)"
|
|
162
|
-
?
|
|
320
|
+
? isEnglish
|
|
321
|
+
? `\n## Current character interaction matrix\n${params.characterMatrix}\n`
|
|
322
|
+
: `\n## 当前角色交互矩阵\n${params.characterMatrix}\n`
|
|
163
323
|
: "";
|
|
164
324
|
const observationsBlock = params.observations
|
|
165
|
-
?
|
|
325
|
+
? isEnglish
|
|
326
|
+
? `\n## Observation log (extracted by the Observer; holds every factual change in this chapter)\n${params.observations}\n\nUsing the observation log and the prose, update every tracking file. Make sure each change in the observation log is reflected in the corresponding file.\n`
|
|
327
|
+
: `\n## 观察日志(由 Observer 提取,包含本章所有事实变化)\n${params.observations}\n\n基于以上观察日志和正文,更新所有追踪文件。确保观察日志中的每一项变化都反映在对应的文件中。\n`
|
|
166
328
|
: "";
|
|
167
329
|
const selectedEvidenceBlock = params.selectedEvidenceBlock
|
|
168
|
-
?
|
|
330
|
+
? isEnglish
|
|
331
|
+
? `\n## Selected long-range evidence\n${params.selectedEvidenceBlock}\n`
|
|
332
|
+
: `\n## 已选长程证据\n${params.selectedEvidenceBlock}\n`
|
|
169
333
|
: "";
|
|
170
334
|
const controlBlock = params.governedControlBlock ?? "";
|
|
171
335
|
const outlineBlock = controlBlock.length === 0
|
|
172
|
-
?
|
|
336
|
+
? isEnglish
|
|
337
|
+
? `\n## Volume outline\n${params.volumeOutline}\n`
|
|
338
|
+
: `\n## 卷纲\n${params.volumeOutline}\n`
|
|
173
339
|
: "";
|
|
174
340
|
const validationFeedbackBlock = params.validationFeedback
|
|
175
|
-
?
|
|
341
|
+
? isEnglish
|
|
342
|
+
? `\n## State validation feedback\n${params.validationFeedback}\n\nCorrect these contradictions exactly. Fix the truth files only: do not rewrite the prose, and do not introduce new facts the prose does not contain.\n`
|
|
343
|
+
: `\n## 状态校验反馈\n${params.validationFeedback}\n\n请严格纠正这些矛盾,只修正 truth files,不要改写正文,不要引入正文中不存在的新事实。\n`
|
|
176
344
|
: "";
|
|
345
|
+
if (isEnglish) {
|
|
346
|
+
return `Analyze the prose of chapter ${params.chapterNumber}, "${params.title}", and update every tracking file.
|
|
347
|
+
${observationsBlock}
|
|
348
|
+
${validationFeedbackBlock}
|
|
349
|
+
## This chapter's prose
|
|
350
|
+
|
|
351
|
+
${params.content}
|
|
352
|
+
${controlBlock}
|
|
353
|
+
|
|
354
|
+
## Current state card
|
|
355
|
+
${params.currentState}
|
|
356
|
+
${ledgerBlock}
|
|
357
|
+
## Current hook pool (active hooks plus dormant seeds related to this chapter)
|
|
358
|
+
${params.hooks}
|
|
359
|
+
${selectedEvidenceBlock}${summariesBlock}${subplotBlock}${emotionalBlock}${matrixBlock}
|
|
360
|
+
${outlineBlock}
|
|
361
|
+
|
|
362
|
+
Output the settlement strictly in the === TAG === format.`;
|
|
363
|
+
}
|
|
177
364
|
return `请分析第${params.chapterNumber}章「${params.title}」的正文,更新所有追踪文件。
|
|
178
365
|
${observationsBlock}
|
|
179
366
|
${validationFeedbackBlock}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settler-prompts.js","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CACtC,IAAgB,EAChB,YAA0B,EAC1B,SAA2B,EAC3B,QAAsB;IAEtB,MAAM,YAAY,GAAG,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;IACvD,MAAM,SAAS,GAAG,YAAY,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"settler-prompts.js","sourceRoot":"","sources":["../../src/agents/settler-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { BaseAgent } from "./base.js";
|
|
2
2
|
import { type ShortFictionLanguage } from "../prompts/short-fiction.js";
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export declare const
|
|
6
|
-
export declare
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
import { SHORT_FICTION_DEFAULT_CHAPTERS, SHORT_FICTION_MIN_CHAPTERS, SHORT_FICTION_MAX_CHAPTERS, SHORT_FICTION_DEFAULT_CHARS_PER_CHAPTER, SHORT_FICTION_MIN_CHARS_PER_CHAPTER, SHORT_FICTION_MAX_CHARS_PER_CHAPTER, SHORT_FICTION_EN_DEFAULT_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MIN_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MAX_WORDS_PER_CHAPTER } from "../models/short-fiction-format.js";
|
|
4
|
+
export { SHORT_FICTION_DEFAULT_CHAPTERS, SHORT_FICTION_MIN_CHAPTERS, SHORT_FICTION_MAX_CHAPTERS, SHORT_FICTION_DEFAULT_CHARS_PER_CHAPTER, SHORT_FICTION_MIN_CHARS_PER_CHAPTER, SHORT_FICTION_MAX_CHARS_PER_CHAPTER, SHORT_FICTION_EN_DEFAULT_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MIN_WORDS_PER_CHAPTER, SHORT_FICTION_EN_MAX_WORDS_PER_CHAPTER, };
|
|
5
|
+
export declare const SHORT_FICTION_MAX_CHAPTERS_PER_BATCH = 3;
|
|
6
|
+
export declare function resolveChaptersPerBatch(charsPerChapter: number, language?: ShortFictionLanguage): number;
|
|
7
|
+
export interface ShortFictionBatchProgress {
|
|
8
|
+
readonly batch: number;
|
|
9
|
+
readonly totalBatches: number;
|
|
10
|
+
readonly chapters: readonly number[];
|
|
11
|
+
}
|
|
12
|
+
export declare function chunkChapters(chapters: readonly number[], size: number): number[][];
|
|
13
|
+
export declare function stripOuterCodeFence(text: string): string;
|
|
12
14
|
export type { ShortFictionLanguage } from "../prompts/short-fiction.js";
|
|
13
15
|
export interface ShortFictionOutline {
|
|
14
16
|
readonly storyTitle: string;
|
|
@@ -61,6 +63,7 @@ export interface ShortFictionDraftInput {
|
|
|
61
63
|
readonly chapterCount: number;
|
|
62
64
|
readonly charsPerChapter: number;
|
|
63
65
|
readonly language?: ShortFictionLanguage;
|
|
66
|
+
readonly onBatchProgress?: (info: ShortFictionBatchProgress) => void;
|
|
64
67
|
}
|
|
65
68
|
export interface ShortFictionDraftReviewInput extends ShortFictionDraftInput {
|
|
66
69
|
readonly draft: ShortFictionBatchDraft;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"short-fiction.d.ts","sourceRoot":"","sources":["../../src/agents/short-fiction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"short-fiction.d.ts","sourceRoot":"","sources":["../../src/agents/short-fiction.ts"],"names":[],"mappings":"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"}
|