@lingjingai/scriptctl 0.51.4 → 0.53.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.
Files changed (78) hide show
  1. package/changes/0.52.0.md +14 -0
  2. package/changes/0.53.0.md +13 -0
  3. package/dist/cli/register-edits.js +8 -0
  4. package/dist/cli/register-edits.js.map +1 -1
  5. package/dist/cli/register-query.js +2 -1
  6. package/dist/cli/register-query.js.map +1 -1
  7. package/dist/domain/script/timestamp.d.ts +16 -0
  8. package/dist/domain/script/timestamp.js +88 -0
  9. package/dist/domain/script/timestamp.js.map +1 -0
  10. package/dist/domain/script/v3/patch/apply.js +1 -1
  11. package/dist/domain/script/v3/patch/apply.js.map +1 -1
  12. package/dist/domain/script/v3/patch/ops-extend.js +11 -0
  13. package/dist/domain/script/v3/patch/ops-extend.js.map +1 -1
  14. package/dist/domain/script/v3/patch/ops-timestamp.d.ts +6 -0
  15. package/dist/domain/script/v3/patch/ops-timestamp.js +47 -0
  16. package/dist/domain/script/v3/patch/ops-timestamp.js.map +1 -0
  17. package/dist/domain/script/v3/patch/registry.js +3 -0
  18. package/dist/domain/script/v3/patch/registry.js.map +1 -1
  19. package/dist/domain/script/v3/schema.js +2 -0
  20. package/dist/domain/script/v3/schema.js.map +1 -1
  21. package/dist/domain/script/v4/patch/ops-extend.js +18 -1
  22. package/dist/domain/script/v4/patch/ops-extend.js.map +1 -1
  23. package/dist/domain/script/v4/patch/ops-timestamp.d.ts +6 -0
  24. package/dist/domain/script/v4/patch/ops-timestamp.js +40 -0
  25. package/dist/domain/script/v4/patch/ops-timestamp.js.map +1 -0
  26. package/dist/domain/script/v4/patch/registry.js +3 -0
  27. package/dist/domain/script/v4/patch/registry.js.map +1 -1
  28. package/dist/domain/script/v4/patch/schema.js +2 -0
  29. package/dist/domain/script/v4/patch/schema.js.map +1 -1
  30. package/dist/infra/llm/anthropic-model.js +13 -11
  31. package/dist/infra/llm/anthropic-model.js.map +1 -1
  32. package/dist/infra/llm/doubao-video-model.js +8 -7
  33. package/dist/infra/llm/doubao-video-model.js.map +1 -1
  34. package/dist/infra/llm/gemini-video-model.js +9 -8
  35. package/dist/infra/llm/gemini-video-model.js.map +1 -1
  36. package/dist/infra/llm/openai-compatible-model.js +51 -31
  37. package/dist/infra/llm/openai-compatible-model.js.map +1 -1
  38. package/dist/infra/llm/retry.d.ts +3 -0
  39. package/dist/infra/llm/retry.js +22 -1
  40. package/dist/infra/llm/retry.js.map +1 -1
  41. package/dist/llm/router.d.ts +7 -3
  42. package/dist/llm/router.js +112 -28
  43. package/dist/llm/router.js.map +1 -1
  44. package/dist/llm/types.d.ts +22 -0
  45. package/dist/llm/types.js +4 -0
  46. package/dist/llm/types.js.map +1 -1
  47. package/dist/usecases/ingest/pipeline.js +257 -220
  48. package/dist/usecases/ingest/pipeline.js.map +1 -1
  49. package/dist/usecases/ingest/serial-govern.js +4 -1
  50. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  51. package/dist/usecases/ingest/usage-report.d.ts +112 -4
  52. package/dist/usecases/ingest/usage-report.js +242 -45
  53. package/dist/usecases/ingest/usage-report.js.map +1 -1
  54. package/dist/usecases/ingest/video-pipeline.js +157 -117
  55. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  56. package/dist/usecases/ingest/view-server.d.ts +2 -22
  57. package/dist/usecases/ingest/view-server.js +14 -8
  58. package/dist/usecases/ingest/view-server.js.map +1 -1
  59. package/dist/usecases/script/actions.js +3 -2
  60. package/dist/usecases/script/actions.js.map +1 -1
  61. package/dist/usecases/script/command-constraints.d.ts +2 -0
  62. package/dist/usecases/script/command-constraints.js +29 -0
  63. package/dist/usecases/script/command-constraints.js.map +1 -1
  64. package/dist/usecases/script/lib.js +15 -1
  65. package/dist/usecases/script/lib.js.map +1 -1
  66. package/dist/usecases/script/timestamp-filter.d.ts +4 -0
  67. package/dist/usecases/script/timestamp-filter.js +55 -0
  68. package/dist/usecases/script/timestamp-filter.js.map +1 -0
  69. package/dist/usecases/script/timestamp.d.ts +3 -0
  70. package/dist/usecases/script/timestamp.js +11 -0
  71. package/dist/usecases/script/timestamp.js.map +1 -0
  72. package/dist/usecases/script/v4/queries.js +5 -0
  73. package/dist/usecases/script/v4/queries.js.map +1 -1
  74. package/package.json +1 -1
  75. package/skills/scriptctl/SKILL.md +7 -2
  76. package/skills/scriptctl/references/atomic-edit-workflow.md +2 -0
  77. package/skills/scriptctl/references/ingest-workflow.md +1 -0
  78. package/skills/scriptctl/references/video-transcript-repair.md +7 -7
@@ -2,8 +2,8 @@
2
2
  name: scriptctl
3
3
  description: "剧本 script.json 的本地查询、文件化批量写作、原子精修、素材 ingest 与 revision publish CLI。处理 Script v3/v4、两个 script.json、剧本资产/state、Action、场景引用或 authoring 时使用。"
4
4
  metadata:
5
- version: "0.27.2"
6
- scriptctl_version: "0.51.4"
5
+ version: "0.27.4"
6
+ scriptctl_version: "0.53.0"
7
7
  author: "official"
8
8
  ---
9
9
 
@@ -68,6 +68,7 @@ scriptctl summary -p "$SCRIPT"
68
68
  scriptctl episodes -p "$SCRIPT"
69
69
  scriptctl scenes -i '@ep:3' -p "$SCRIPT"
70
70
  scriptctl actions -g "台下掌声" -p "$SCRIPT"
71
+ scriptctl actions -i '@ep:1' --time '00:30..00:45' -p "$SCRIPT"
71
72
  scriptctl actors --counts -p "$SCRIPT"
72
73
  scriptctl states actA3kP9x -p "$SCRIPT"
73
74
  scriptctl refs actA3kP9x/stB4xR8p -p "$SCRIPT"
@@ -94,6 +95,7 @@ scriptctl validate -p "$SCRIPT"
94
95
  | **按正文搜某句话定位 action**(最常用) | `scriptctl actions -g "<片段>"` |
95
96
  | 列某集所有 action(含 timestamp / speaker / 正文 /表演提示) | `scriptctl actions -i '@ep:1'` |
96
97
  | 看单条 action 正文 | `scriptctl actions -i '@ep:1/scn:1/ac:3'` |
98
+ | 按集内时间点或闭区间看正文 | `scriptctl actions -i '@ep:1' --time '00:30..00:45'` |
97
99
  | action 多维过滤 | `scriptctl actions -i '@ep:1' -t dialogue -a <actor-id> --has speaker` |
98
100
  | 某角色出现的所有场 | `scriptctl scenes --has-actor <actor-id>`(另有 `--has-location`/`--has-prop`) |
99
101
  | **列某资产的所有 state + 状态弧线**(改造型前必查) | `scriptctl states <asset-id>` |
@@ -124,6 +126,8 @@ scriptctl replace acR8cV4n --from "旧句" --to "新句" -p "$SCRIPT"
124
126
  scriptctl parenthetical acT2fG6z --set "低声" -p "$SCRIPT"
125
127
  scriptctl parenthetical acT2fG6z --set "" -p "$SCRIPT"
126
128
  scriptctl parenthetical acT2fG6z --remove -p "$SCRIPT"
129
+ scriptctl timestamp acT2fG6z --set 00:42.533 -p "$SCRIPT"
130
+ scriptctl timestamp acT2fG6z --remove -p "$SCRIPT"
127
131
  scriptctl dialogue acT2fG6z -a actA3kP9x --state stB4xR8p -p "$SCRIPT"
128
132
  ```
129
133
 
@@ -171,6 +175,7 @@ V3 继续使用现有复合地址,例如:
171
175
  ```bash
172
176
  scriptctl replace ep_001/scn_003#5 --from "旧句" --to "新句"
173
177
  scriptctl emotion ep_001/scn_003#5 "低声"
178
+ scriptctl timestamp ep_001/scn_003#5 --set 00:42
174
179
  scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_002
175
180
  ```
176
181
 
@@ -11,6 +11,7 @@
11
11
  scriptctl actions -g "台下掌声雷动" -p "$SCRIPT"
12
12
  scriptctl replace acR8cV4n --from "台下掌声雷动" --to "掌声骤停" \
13
13
  -p "$SCRIPT"
14
+ scriptctl timestamp acR8cV4n --set 00:42.533 -p "$SCRIPT"
14
15
  ```
15
16
 
16
17
  V4 查询可以使用 1-based `@` 序号,但修改必须使用正式 ID。V3 查询返回原有的
@@ -33,6 +34,7 @@ scriptctl replace -i 'acR8cV4n..acT2fG6z' --from "。" --to "!" \
33
34
  ```text
34
35
  replace acR8cV4n --from "旧句" --to "新句"
35
36
  parenthetical acT2fG6z --set "低声"
37
+ timestamp acT2fG6z --set 00:42.533
36
38
  scene-ref scnK6wT3c actA3kP9x --state default --state stB4xR8p
37
39
  ```
38
40
 
@@ -29,6 +29,7 @@ scriptctl ingest -s uploads/正片/
29
29
  管线(了解即可,产物都在 `workspace/`):
30
30
  - **文本**:正文起点定位 → 切块 → 生产化归一 → 合并组装 `body.json` → 串行资产/身份/state 治理 → V3 中间校验 → 稳定 V4 身份分配 → V4 校验与生产规范 warning → `script.json`。
31
31
  - **视频**:逐集串行观看原视频并维护跨集人物、剧情和造型上下文 → 确定性治理 → V3 中间校验 → 稳定 V4 身份分配 → V4 校验与生产规范 warning → `script.json`。时间戳写入 `extend.timestamp`,逐集 `ep/*.json`、`context.json` 和身份映射支持断点续跑。
32
+ - **用量账本**:`usage.json` 在每集/处理单元成功或失败后立即原子更新。`records` 保存实际 task/provider/model 的逐次调用、失败、重试、token 与耗时;`episodes`、`byTask[].byModel`、全局 `byModel`、`totals` 和 `timing` 都从明细聚合,可用于按模型价格精确核算成本。
32
33
 
33
34
  ### 提取与解析原则
34
35
 
@@ -26,14 +26,14 @@ V3 保持其现有地址与字段;V4 使用其正式 ID 与计划写入语义
26
26
 
27
27
  ## 2. 定位 Action 与时间点
28
28
 
29
- 时间戳是集内固定起点,存储在 `action.extend.timestamp`,格式使用
30
- `M:SS` 或 `MM:SS.mmm`。它不是持续区间;一条 Action 的结束时间由下一条 Action 的
31
- 起点或视频画面复核推断。
29
+ 时间戳是集内固定起点,存储在 `action.extend.timestamp`。输入接受 `M:SS`、`MM:SS`、
30
+ `H:MM:SS` 及可选的 1–3 位小数,写入时规范化宽度并保留有效小数精度。它不是持续区间;
31
+ 一条 Action 的结束时间由下一条 Action 的起点或视频画面复核推断。
32
32
 
33
33
  ```bash
34
34
  scriptctl actions -i '@ep:4' -p "$SCRIPT"
35
35
  scriptctl actions -g "台词片段" -p "$SCRIPT"
36
- scriptctl extend <action-id> timestamp 00:42.533 -p "$SCRIPT"
36
+ scriptctl timestamp <action-id> --set 00:42.533 -p "$SCRIPT"
37
37
  ```
38
38
 
39
39
  校时使用视频中该动作或对白真正开始的画面。保留亚秒级精度。没有视频证据时保留待复核,
@@ -51,14 +51,14 @@ scriptctl ids -k action --count 1 -p "$SCRIPT"
51
51
 
52
52
  ```text
53
53
  insert <scene-id> --action-id <new-action-id> -t action --content "她推门进屋。" --after <previous-action-id>
54
- extend <new-action-id> timestamp 00:42.533
54
+ timestamp <new-action-id> --set 00:42.533
55
55
  ```
56
56
 
57
57
  对白示例:
58
58
 
59
59
  ```text
60
60
  insert <scene-id> --action-id <new-action-id> -t dialogue --content "我回来了。" -a <actor-id> --after <previous-action-id>
61
- extend <new-action-id> timestamp 00:42.533
61
+ timestamp <new-action-id> --set 00:42.533
62
62
  ```
63
63
 
64
64
  人物必须已经出现在本场 scene ref 中;需要指定造型时同时传 `--speaker-state <state-id>`。
@@ -79,7 +79,7 @@ Action。使用一个 `do` 事务:
79
79
 
80
80
  ```text
81
81
  replace <first-action-id> --from "第一段" --to "第一段第二段"
82
- extend <first-action-id> timestamp 00:42.533
82
+ timestamp <first-action-id> --set 00:42.533
83
83
  delete <second-action-id>
84
84
  ```
85
85