dsh-novel-write-engine 0.1.1 → 0.1.3
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 +35 -0
- package/README.md +192 -160
- package/briefs/P1.md +6 -4
- package/briefs/P2.md +4 -1
- package/briefs/P3.md +4 -0
- package/briefs/P4.md +3 -0
- package/briefs/P5.md +4 -3
- package/briefs/P6.md +7 -1
- package/lib/client.js +8 -3
- package/lib/index.d.ts +85 -1
- package/lib/index.js +1885 -219
- package/lib/types/client/dto.d.ts +6 -0
- package/lib/types/constants.d.ts +8 -0
- package/lib/types/types.d.ts +28 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.3
|
|
4
|
+
|
|
5
|
+
- 八个权威台账(chapters/characters/world/locks/timeline/foreshadows/relationships/handoff)以及 `novel.yaml` 损坏或丢失时不再拖垮 `novel_status`/panel;`state_errors` 暴露全部错误,`novel_state` 对 ledger、project、review、check 返回损坏文档的 `raw` 文本,`next` 指向 `novel_amend`。
|
|
6
|
+
- `novel_amend` 会为当前所有不可读状态文档豁免 journal 的既有 hash;真正可读文件的外部改动仍 fail-closed。amend 增加 chapters 只含已归档章、不减少、已归档 `content_hash`/`archive_digest` 不可改写、`next_seq` 不得复用已归档 assigned ids、locks/relationships 引用闭合、chapters 与章节文件 hash 一致、handoff 续写点与 open_hooks 闭合等不变量。
|
|
7
|
+
- `archiveChapter` 将每章 digest 写入 journal 跟踪的 `state/archive-digests.json`,修复 chapters 索引时用它校验归档幂等性,避免重建索引时伪造/丢失 digest。
|
|
8
|
+
- `novel.yaml` 可通过 amend 修改 `title/author/description/targets.total_chapters`;`genre/platform/created_at/words_per_chapter/dialogue_ratio` 保持不可变;`total_chapters` 不得低于已归档章数;项目文件损坏/丢失时接受完整项目文档并优先用备份恢复不可变基线。
|
|
9
|
+
- P2/P3/P4/P5/P6 brief 包含 P1 `world_plan`;P3/P4 的 `characters` 只放本章活跃角色完整卡,`other_characters` 是压缩索引;P2 的 `characters` 是 P1 候选角色;P6 新增受保护的 `active_cast`。角色排序改为 cast → 正文/计划提及 → `last_seen` → 稳定 key;正文新出现的已知角色会补进显式 cast,独立提到的短名不会被长名误杀。
|
|
10
|
+
- `novel_plan_chapter` 新增可选 `cast`(1–8 人:`name/entry_state/goal/knowledge/exit_change`);名字必须来自 P1 世界计划或角色台账;旧 plan 不需要 cast 也能读。
|
|
11
|
+
- 归档 handoff 继承上一章 volume/volume_name;`act`/`act_progress` 从上一章推进(第五幕/1/5,不再在第 21 章重置成第一幕),`handoff.act`/`act_progress` 可覆盖且会校验;`open_hooks` 按最久未动优先。status/panel/P1 显示活跃章的下一幕位置。
|
|
12
|
+
- `novel_state {kind:"chapters"}` 默认返回紧凑索引(num/title/word_count/score/status),新增 `include_summary` 与 `chapter_range`;300 章默认 ≤64 KB;panel 只送最近 30 行,并显示卷/幕标签和幕内进度;panel 平均分改用全书 archived 分数,不再被 30 行上限截断。
|
|
13
|
+
- 只跑 `content` 或 `integrity` 的 check 通过后停留在 P6,不再进入 archive 死循环;返回 `CHECK_SCOPE_PARTIAL` warning。check 始终执行 PG-03 字数与 PG-07 评分下限,scope 只控制 PG-04/PG-10 等机检。
|
|
14
|
+
- 新增 `src/domain/stable.ts`:`compareText` / `stableJson` 使用 code-unit 排序,替换 localeCompare 与 registry 排序;brief digest 不再随 `LANG` 变化。
|
|
15
|
+
- 删除 `TRANSITIONS[].guards` 死字段,`applicableGates` 是门控唯一 owner;opening 检查抽成共享 helper;P2 标题长度读取 rulepack;EPUB 保留段首全角缩进。
|
|
16
|
+
- `check:host` 改为遍历请求体 `tools[]`,不再用整段 JSON 子串把 persona 文本当成工具声明;CI 增加 Windows 测试、真实 host/preset job 与跨进程 SIGKILL gate。
|
|
17
|
+
- 新增 30 章真实引擎闭环、120 角色 cast、300 章读口、1000 行 journal amend 测试;`scripts/check-crash.mjs` 在真实子进程 SIGKILL 后验证 pending journal 恢复。状态 schema 仍为 v1,不新增工具/命令/运行时依赖。
|
|
18
|
+
- 第三轮全量复核修复:`PG-11` 真正约束 P5/P6 `novel_revise`,status 按下一步实际操作选择 revise/check 预算;`PG-06` 进入 `runCheck` 与 archive preflight;`archivePreflight` 复用同一 `GateInput` 评估全部归档门控(含 PG-05/PG-06/PG-12 的 content+integrity scope);归档不再接受被收窄 scope 的 check。
|
|
19
|
+
- 修复 `assigned_ids` 篡改、chapters 不可读时绕过 next_seq floor、settings pack 绕过 locks/relationships/chapters 引用与 revision 冲突;export replay key 纳入活跃章 plan title,活跃章改名后不会返回旧文件。
|
|
20
|
+
|
|
21
|
+
## 0.1.2
|
|
22
|
+
|
|
23
|
+
- `novel_init` 显式传入的 `author`/`description` 必须是字符串;P1/P2 计划在服务边界做运行时窄化:世界计划数组/对象形状、章节标题 4–8 字、narrator、5–8 个节拍、opening/ending、target_words 全部校验,非法输入零写盘。
|
|
24
|
+
- P4 issue 的 `dimension` 必须是当前规则包的十五维之一,`location` 必须是本章实际段落;blocker 在 P4/P5 都不能 `waived`;P5 只能改 issue 的 `status`/`evidence`,不能改写问题定义或严重度。
|
|
25
|
+
- `novel_rollback` 只允许退回当前阶段或更早阶段;`P3 → P6` 这类前进跳过会被拒绝。
|
|
26
|
+
- plan/review/check 任一文件损坏时,`novel_status`/`novel_pipeline` 仍可读,返回 `state_errors` 与 `STATE_UNREADABLE` 阻塞,`next` 指向 `novel_rollback`;回退后可用既有阶段重建,不需要手改文件。P6 的 check 损坏优先于旧 revision 阻塞,`next` 直接给 `novel_check`。
|
|
27
|
+
- `novel_brief` 的 `fields`/`context` 暴露 `plan_error`/`review_error`/`check_error`;损坏状态会阻断需要该文档的写操作。schema 版本高于本引擎的 plan/review/check 不会被当作“可修复损坏”,而是 `ENGINE_SCHEMA_TOO_NEW`,绝不覆盖。
|
|
28
|
+
- `novel_archive` 对“review 存在但没有 `review_digest`”(或摘要已不匹配)的旧数据 fail-closed;status 返回 `REVIEW_DIGEST_MISSING`/`REVIEW_DIGEST_MISMATCH`,`next` 指向回退 P4 重新评审,不会让模型反复撞归档。
|
|
29
|
+
- 每个 brief 阶段有独立上下文预算(P1 6000 / P2 8000 / P3 16000 / P4-P5 24000 / P6 32000 / P8 12000);正文、当前 plan/review/check、摘要等受保护内容不裁剪,截断项与省略数写入 `context_meta` 并参与 digest;预算计算把 `context_meta` 自身的增长算进去,不再用固定预留猜大小。
|
|
30
|
+
- 上下文按正文/计划提及、最近程度、稳定 key 选择角色/世界/锁定/伏笔/时间线/关系;同分按名称/ID 稳定排序,输入顺序变化不改变 brief;不引入 RAG、SQLite 或新依赖。
|
|
31
|
+
- 水词/爽点/感官窗口改为按非空白字符推进,空格、换行、全角空格不再改变窗口结果;全角标点仍按 DESIGN 计入 `nonWsChars`。
|
|
32
|
+
- `RESOURCE_MISMATCH` 同时核对角色、资源名、数量与正负方向;符号必须在金额附近,远处另一段的反向词不能替它开脱。
|
|
33
|
+
- `ready_to_archive` 的九相位条显示 P7 进行中,P8/P9 未完成,不再把尚未发生的 P7 标成已完成。
|
|
34
|
+
- `novel_check` 的 `scope` 真正生效:默认 `content + integrity`,允许只跑其中一类;空数组/未知值零写盘,scope 归一化为固定顺序后写入 check 文档并参与幂等 key。
|
|
35
|
+
- `check:host` 新增真实 headless 工具链:临时 profile 中通过本地 Messages peer 触发 `novel_init`,断言工具声明、工具结果、项目落盘与最终回答;Web 面板与 remove 链路保留。
|
|
36
|
+
- 文档同步 0.1.2 的契约、升级路径与已知限制;状态 schema 仍为 v1,不新增工具/命令/运行时依赖。
|
|
37
|
+
|
|
3
38
|
## 0.1.1
|
|
4
39
|
|
|
5
40
|
- `novel_brief` 现在把 `fields` 一并返回,P4 可直接读取 `score_exclusions` 与 `next_tool`;非当前活跃章的 brief 请求被拒绝。
|