@lingjingai/scriptctl 0.49.10 → 0.49.11

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.
@@ -0,0 +1,13 @@
1
+ # 0.49.11
2
+
3
+ ## Added
4
+ - None.
5
+
6
+ ## Changed
7
+ - None.
8
+
9
+ ## Fixed
10
+ - `scriptctl ingest` now accepts episode boundaries from text normalization's structured `episode` records without rejecting source heading formats through a separate regex check. Existing text workspaces must be rebuilt with `--force`.
11
+
12
+ ## Breaking
13
+ - None.
@@ -58,22 +58,6 @@ export function buildNormalizeUser(chunk) {
58
58
  chunk.text,
59
59
  ].join("\n");
60
60
  }
61
- // Source episode headings are authoritative. Accept the common source wrappers
62
- // that caused the old Markdown parser to drift: heading hashes, bold markers,
63
- // and a book title before 第N集. A mere scene label such as 场3-2 never matches.
64
- function sourceEpisodeNumbers(text) {
65
- const numbers = [];
66
- const heading = /^\s*(?:#{1,6}\s*)?(?:\*{1,2}\s*)?(?:《[^》]+》\s*)?第?\s*0*(\d+)\s*集/;
67
- for (const line of text.split("\n")) {
68
- const match = heading.exec(line);
69
- if (match) {
70
- const episode = Number(match[1]);
71
- if (numbers.at(-1) !== episode)
72
- numbers.push(episode);
73
- }
74
- }
75
- return numbers;
76
- }
77
61
  function runtimeError(message, received) {
78
62
  return new CliError("INGEST NORMALIZE FAILED", message, {
79
63
  exitCode: EXIT_RUNTIME,
@@ -112,11 +96,6 @@ export function parseNormalizeOutput(input, chunk) {
112
96
  if (records.length === 0 && chunk.text.trim() !== "") {
113
97
  throw runtimeError(`chunk ${chunk.index}: non-empty chunk produced no records`, ["records: 0"]);
114
98
  }
115
- const expectedEpisodes = sourceEpisodeNumbers(chunk.text);
116
- const actualEpisodes = records.flatMap((record) => record.kind === "episode" ? [record.episode] : []);
117
- if (actualEpisodes.length !== expectedEpisodes.length || actualEpisodes.some((episode, index) => episode !== expectedEpisodes[index])) {
118
- throw runtimeError(`chunk ${chunk.index}: episode boundaries do not match explicit source headings`, [`expected: ${expectedEpisodes.join(",") || "none"}`, `received: ${actualEpisodes.join(",") || "none"}`]);
119
- }
120
99
  return records;
121
100
  }
122
101
  export async function runTextNormalize(executor, chunk, signal) {
@@ -1 +1 @@
1
- {"version":3,"file":"text-normalize.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/text-normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-normalize.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/text-normalize.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ import { mapSettled } from "./fanout.js";
23
23
  import { runSerialGovern } from "./serial-govern.js";
24
24
  import { Timings } from "./timings.js";
25
25
  import { writeUsage } from "./usage-report.js";
26
- const PIPELINE_VERSION = "4";
26
+ const PIPELINE_VERSION = "5";
27
27
  const pad = (n) => String(n).padStart(3, "0");
28
28
  const serializeJsonl = (records) => records.map((r) => JSON.stringify(r)).join("\n") + "\n";
29
29
  function checkLifecycle(store, sourceSha, force) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/scriptctl",
3
- "version": "0.49.10",
3
+ "version": "0.49.11",
4
4
  "description": "剧本阶段统一 CLI:直转外部素材到 script.json,以及当前最终剧本的读取、校验、原子编辑与批量 patch 精修。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2,8 +2,8 @@
2
2
  name: scriptctl
3
3
  description: "剧本 script.json 的本地读写 + 入库 CLI。远端剧本先 checkout 成工作副本,所有原子读写只改本地 script.json,完成后 publish 严格按 revision 入库;新增 op 无需新增业务 API。转剧本:ingest(txt/md/docx 或视频,产出 workspace/script.json)→ 标准化复核 → view 自查 → publish。覆盖集/场/action/资产/state/scene-ref/结构调整/批量 do/patch/校验。剧本阶段做任何剧本相关读写、以及操作两个 script.json 之前都应加载。"
4
4
  metadata:
5
- version: "0.24.0"
6
- scriptctl_version: "0.49.8"
5
+ version: "0.24.1"
6
+ scriptctl_version: "0.49.11"
7
7
  author: "official"
8
8
  ---
9
9
 
@@ -39,7 +39,7 @@ metadata:
39
39
 
40
40
  场是时间、空间和叙事连续的单元。同一地点、同一连续时段、同一叙事线且动作未中断时,继续向当前 scene 追加;笑点升级、攻防回合、角色进出、剧情节拍和同场人物造型变化不是分场理由。地点切换、明显跳时、切到另一条同时叙事线或明确转场时建立新 scene。一集可以只有一场。
41
41
 
42
- location 表示可独立布置、可独立生成参考图、可重复引用的稳定物理空间;客厅、卧室、卫生间、大厅、广场分别注册。相关空间使用“豪宅·客厅”“豪宅·卧室”这类统一命名表达归属,当前 Schema 不提供地点组或父地点。每个 scene 只支持一个 location;人物引用可以重复,同一 actor 可按实际画面追加同 state 或不同 state 的多份引用。
42
+ location 表示可独立布置、可独立生成参考图、可重复引用的稳定物理空间;客厅、卧室、卫生间、大厅、广场分别注册。相关空间使用“豪宅·客厅”“豪宅·卧室”这类统一命名表达归属。每个 scene 绑定一个 location;人物引用可以重复,同一 actor 可按实际画面追加同 state 或不同 state 的多份引用。
43
43
 
44
44
  跨地点蒙太奇按剪辑顺序建立多个短 scene,每个 scene 绑定自己的地点、实际人物、道具和 state,并用 transition 明确蒙太奇开始、切换和结束。纯空镜 scene 绑定实际 location 与关键道具即可,不创建虚假人物。
45
45
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## 操作语义
8
8
 
9
- scriptctl 没有单独的 `state-merge` 命令;合并 state = "删旧 state 并替换引用":
9
+ 合并 state 使用 `state-delete --strategy replace`,删除源 state 并替换引用:
10
10
 
11
11
  ```bash
12
12
  # 合并:把 st_old 的引用全指向 st_keep,再删 st_old(replacement 必须是同一资产已存在的 state_id)
@@ -34,7 +34,7 @@ scriptctl refs actor:act_001/st_old
34
34
  scriptctl state-delete actor:act_001/st_old --strategy replace --replacement st_keep
35
35
  ```
36
36
 
37
- 期望:`refs actor:act_001/st_old` 为空;`refs actor:act_001/st_keep` 含原来该保留的场景引用;`scriptctl validate` 通过。
37
+ 期望:`refs actor:act_001/st_old` 为空;`refs actor:act_001/st_keep` 包含应迁移的场景引用;`scriptctl validate` 通过。
38
38
 
39
39
  3. **真删除用 `remove`**:
40
40