dsh-novel-write-engine 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +49 -11
- package/briefs/P2.md +1 -0
- package/briefs/P5.md +2 -0
- package/briefs/P6.md +3 -2
- package/briefs/P8.md +5 -4
- package/lib/client.js +18 -3
- package/lib/index.d.ts +102 -16
- package/lib/index.js +1398 -334
- package/lib/types/client/dto.d.ts +6 -0
- package/lib/types/client/viewmodel.d.ts +6 -0
- package/lib/types/constants.d.ts +2 -0
- package/lib/types/types.d.ts +14 -0
- package/package.json +1 -1
- package/skills/entry.md +1 -1
|
@@ -102,6 +102,12 @@ export interface SummaryDto {
|
|
|
102
102
|
code: string;
|
|
103
103
|
detail: string;
|
|
104
104
|
}>;
|
|
105
|
+
/** Crash-left pending transaction; read-only diagnostics. */
|
|
106
|
+
pending?: {
|
|
107
|
+
state: string;
|
|
108
|
+
txid: string;
|
|
109
|
+
detail: string;
|
|
110
|
+
};
|
|
105
111
|
}
|
|
106
112
|
export interface ChapterRowDto {
|
|
107
113
|
num: number;
|
|
@@ -136,6 +136,12 @@ export interface PanelView {
|
|
|
136
136
|
code: string;
|
|
137
137
|
detail: string;
|
|
138
138
|
}>;
|
|
139
|
+
/** Crash-left pending transaction, read-only. */
|
|
140
|
+
pending: {
|
|
141
|
+
state: string;
|
|
142
|
+
txid: string;
|
|
143
|
+
detail: string;
|
|
144
|
+
} | null;
|
|
139
145
|
nextTitle: string;
|
|
140
146
|
nextDetail: string;
|
|
141
147
|
nextTool: string;
|
package/lib/types/constants.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare const PANEL_CHAPTER_LIMIT = 30;
|
|
|
10
10
|
/** Project-relative locations. Every write goes through these constants. */
|
|
11
11
|
export declare const PROJECT_FILE = "novel.yaml";
|
|
12
12
|
export declare const OUTLINE_FILE = "outline/outline.yaml";
|
|
13
|
+
/** Last outline replaced by a normal planning write; one level is enough for repair. */
|
|
14
|
+
export declare const OUTLINE_DEPRECATED_FILE = "outline/outline.deprecated.yaml";
|
|
13
15
|
export declare const WORLDBOOK_FILE = "outline/worldbook.yaml";
|
|
14
16
|
export declare const STATE_DIR = "state";
|
|
15
17
|
export declare const CHAPTERS_DIR = "chapters";
|
package/lib/types/types.d.ts
CHANGED
|
@@ -66,6 +66,9 @@ export declare const ERROR_CODES: {
|
|
|
66
66
|
/** The exact same keyed submission already failed in the same context. */
|
|
67
67
|
readonly RETRY_UNCHANGED: "ENGINE_RETRY_UNCHANGED";
|
|
68
68
|
readonly GATE_BLOCKED: "ENGINE_GATE_BLOCKED";
|
|
69
|
+
readonly CHECK_SUBMISSION_INVALID: "ENGINE_CHECK_SUBMISSION_INVALID";
|
|
70
|
+
readonly PENDING_PARTIAL: "ENGINE_PENDING_PARTIAL";
|
|
71
|
+
readonly IO_PERMISSION: "ENGINE_IO_PERMISSION";
|
|
69
72
|
readonly READING_PROOF_INVALID: "ENGINE_READING_PROOF_INVALID";
|
|
70
73
|
readonly SCORE_MISMATCH: "ENGINE_SCORE_MISMATCH";
|
|
71
74
|
/** A revision tried to rewrite reviewer-owned issue fields. */
|
|
@@ -178,9 +181,14 @@ export interface CheckDocument {
|
|
|
178
181
|
evidence: string;
|
|
179
182
|
note: string;
|
|
180
183
|
}>;
|
|
184
|
+
/** 0.2.5: explain a persisted content failure; historical checks omit it. */
|
|
185
|
+
findings?: BlockingItem[];
|
|
181
186
|
};
|
|
182
187
|
/** Advisory codes the author has explicitly acknowledged for this content. */
|
|
183
188
|
acknowledged?: string[];
|
|
189
|
+
/** 0.2.5: content failures consume the check budget; submission errors never persist. */
|
|
190
|
+
failure_class?: 'submission' | 'content';
|
|
191
|
+
counted?: boolean;
|
|
184
192
|
verdict: 'pass' | 'fail';
|
|
185
193
|
}
|
|
186
194
|
/** Every persisted document whose damage status/panel can report. */
|
|
@@ -953,6 +961,10 @@ export interface GateInput {
|
|
|
953
961
|
summary: ChapterSummary | null;
|
|
954
962
|
/** P5 may omit `summary`; when omitted, the previous plan summary is reused. */
|
|
955
963
|
summaryProvided?: boolean;
|
|
964
|
+
/** Summary-only repair: no manuscript change, no P4/P6 proof requirement. */
|
|
965
|
+
summaryOnly?: boolean;
|
|
966
|
+
/** The last write was a summary-only repair; P6 may continue without a new brief. */
|
|
967
|
+
summaryOnlyRevision?: boolean;
|
|
956
968
|
review: ReviewDocument | null;
|
|
957
969
|
check: CheckDocument | null;
|
|
958
970
|
/** When set, result-bearing gates run only the named check scopes. */
|
|
@@ -1030,6 +1042,8 @@ export interface StatusReport {
|
|
|
1030
1042
|
stage: Stage;
|
|
1031
1043
|
rounds: RoundCounters;
|
|
1032
1044
|
blocking: BlockingItem[];
|
|
1045
|
+
/** Non-blocking recovery notes, e.g. a recoverable pending transaction. */
|
|
1046
|
+
warnings?: Warning[];
|
|
1033
1047
|
/** plan/review/check/ledger files that exist but cannot be read safely. */
|
|
1034
1048
|
state_errors: StateError[];
|
|
1035
1049
|
metrics: WordMetrics | null;
|
package/package.json
CHANGED
package/skills/entry.md
CHANGED
|
@@ -25,7 +25,7 @@ description: 引擎版小说创作流程——状态、门控、字数与写盘
|
|
|
25
25
|
|
|
26
26
|
## 书级规划(0.2.0)
|
|
27
27
|
|
|
28
|
-
新项目先 `novel_guide`;推荐但不强制:`novel_blueprint`(蓝图/卷)→ `novel_outline`(章卡)→ `novel_worldbook`(设定集)。已有大纲可用 `novel_outline_import` 导入 Markdown/YAML/JSON
|
|
28
|
+
新项目先 `novel_guide`;推荐但不强制:`novel_blueprint`(蓝图/卷)→ `novel_outline`(章卡)→ `novel_worldbook`(设定集)。已有大纲可用 `novel_outline_import` 导入 Markdown/YAML/JSON。`novel_outline` 的章卡按 `num`、卷按 `title` upsert:只提交要改的对象,省略的卡保持不动;删除必须显式 `remove`/`remove_volumes`,不要用重交全量卡来“确保存在”。只要存在章卡,P2/P3 就按章卡校验标题、场景、字数与 cast;严格模式还要求章卡必须存在。要改已归档章先 `novel_reopen`(必须带 reason)。
|
|
29
29
|
|
|
30
30
|
## 流程路由
|
|
31
31
|
|