@lingjingai/scriptctl 0.49.16 → 0.50.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 (388) hide show
  1. package/README.md +8 -2
  2. package/changes/0.50.0.md +63 -0
  3. package/changes/unreleased.md +2 -1
  4. package/dist/cli.js +26 -5
  5. package/dist/cli.js.map +1 -1
  6. package/dist/domain/authoring/apply.d.ts +1 -33
  7. package/dist/domain/authoring/apply.js +1 -783
  8. package/dist/domain/authoring/apply.js.map +1 -1
  9. package/dist/domain/authoring/export.d.ts +1 -7
  10. package/dist/domain/authoring/export.js +1 -84
  11. package/dist/domain/authoring/export.js.map +1 -1
  12. package/dist/domain/authoring/parser.d.ts +2 -3
  13. package/dist/domain/authoring/parser.js +2 -914
  14. package/dist/domain/authoring/parser.js.map +1 -1
  15. package/dist/domain/authoring/serializer.d.ts +1 -2
  16. package/dist/domain/authoring/serializer.js +1 -243
  17. package/dist/domain/authoring/serializer.js.map +1 -1
  18. package/dist/domain/authoring/shared/bracket.d.ts +4 -0
  19. package/dist/domain/authoring/shared/bracket.js +95 -0
  20. package/dist/domain/authoring/shared/bracket.js.map +1 -0
  21. package/dist/domain/authoring/shared/types.d.ts +12 -0
  22. package/dist/domain/authoring/shared/types.js +2 -0
  23. package/dist/domain/authoring/shared/types.js.map +1 -0
  24. package/dist/domain/authoring/types.d.ts +2 -87
  25. package/dist/domain/authoring/types.js +2 -1
  26. package/dist/domain/authoring/types.js.map +1 -1
  27. package/dist/domain/authoring/v3/apply.d.ts +33 -0
  28. package/dist/domain/authoring/v3/apply.js +784 -0
  29. package/dist/domain/authoring/v3/apply.js.map +1 -0
  30. package/dist/domain/authoring/v3/export.d.ts +7 -0
  31. package/dist/domain/authoring/v3/export.js +85 -0
  32. package/dist/domain/authoring/v3/export.js.map +1 -0
  33. package/dist/domain/authoring/v3/parser.d.ts +3 -0
  34. package/dist/domain/authoring/v3/parser.js +823 -0
  35. package/dist/domain/authoring/v3/parser.js.map +1 -0
  36. package/dist/domain/authoring/v3/serializer.d.ts +2 -0
  37. package/dist/domain/authoring/v3/serializer.js +244 -0
  38. package/dist/domain/authoring/v3/serializer.js.map +1 -0
  39. package/dist/domain/authoring/v3/types.d.ts +76 -0
  40. package/dist/domain/authoring/v3/types.js +2 -0
  41. package/dist/domain/authoring/v3/types.js.map +1 -0
  42. package/dist/domain/authoring/v4/apply.d.ts +40 -0
  43. package/dist/domain/authoring/v4/apply.js +451 -0
  44. package/dist/domain/authoring/v4/apply.js.map +1 -0
  45. package/dist/domain/authoring/v4/parser.d.ts +2 -0
  46. package/dist/domain/authoring/v4/parser.js +729 -0
  47. package/dist/domain/authoring/v4/parser.js.map +1 -0
  48. package/dist/domain/authoring/v4/serializer.d.ts +6 -0
  49. package/dist/domain/authoring/v4/serializer.js +280 -0
  50. package/dist/domain/authoring/v4/serializer.js.map +1 -0
  51. package/dist/domain/authoring/v4/types.d.ts +50 -0
  52. package/dist/domain/authoring/v4/types.js +2 -0
  53. package/dist/domain/authoring/v4/types.js.map +1 -0
  54. package/dist/domain/ingest/apply-plan.d.ts +1 -1
  55. package/dist/domain/ingest/assembler.d.ts +9 -0
  56. package/dist/domain/ingest/assembler.js +98 -36
  57. package/dist/domain/ingest/assembler.js.map +1 -1
  58. package/dist/domain/ingest/asset-audit.d.ts +50 -0
  59. package/dist/domain/ingest/asset-audit.js +196 -0
  60. package/dist/domain/ingest/asset-audit.js.map +1 -0
  61. package/dist/domain/ingest/production-validation.d.ts +5 -4
  62. package/dist/domain/ingest/production-validation.js +10 -25
  63. package/dist/domain/ingest/production-validation.js.map +1 -1
  64. package/dist/domain/ingest/records.d.ts +1 -1
  65. package/dist/domain/ingest/records.js +1 -1
  66. package/dist/domain/ingest/records.js.map +1 -1
  67. package/dist/domain/ingest/serial-context.d.ts +1 -1
  68. package/dist/domain/ingest/validation.d.ts +1 -11
  69. package/dist/domain/ingest/validation.js +1 -199
  70. package/dist/domain/ingest/validation.js.map +1 -1
  71. package/dist/domain/ingest/video-apply.js +68 -45
  72. package/dist/domain/ingest/video-apply.js.map +1 -1
  73. package/dist/domain/script/address.d.ts +1 -32
  74. package/dist/domain/script/address.js +1 -144
  75. package/dist/domain/script/address.js.map +1 -1
  76. package/dist/domain/script/dispatch.d.ts +14 -0
  77. package/dist/domain/script/dispatch.js +47 -0
  78. package/dist/domain/script/dispatch.js.map +1 -0
  79. package/dist/domain/script/lookups.d.ts +1 -33
  80. package/dist/domain/script/lookups.js +1 -316
  81. package/dist/domain/script/lookups.js.map +1 -1
  82. package/dist/domain/script/parse.d.ts +1 -3
  83. package/dist/domain/script/parse.js +1 -164
  84. package/dist/domain/script/parse.js.map +1 -1
  85. package/dist/domain/script/patch/apply.d.ts +1 -2
  86. package/dist/domain/script/patch/apply.js +1 -30
  87. package/dist/domain/script/patch/apply.js.map +1 -1
  88. package/dist/domain/script/patch/helpers.d.ts +1 -17
  89. package/dist/domain/script/patch/helpers.js +1 -210
  90. package/dist/domain/script/patch/helpers.js.map +1 -1
  91. package/dist/domain/script/patch/inline-speaker.d.ts +1 -2
  92. package/dist/domain/script/patch/inline-speaker.js +1 -49
  93. package/dist/domain/script/patch/inline-speaker.js.map +1 -1
  94. package/dist/domain/script/patch/ops-action.d.ts +1 -12
  95. package/dist/domain/script/patch/ops-action.js +1 -366
  96. package/dist/domain/script/patch/ops-action.js.map +1 -1
  97. package/dist/domain/script/patch/ops-asset.d.ts +1 -14
  98. package/dist/domain/script/patch/ops-asset.js +1 -364
  99. package/dist/domain/script/patch/ops-asset.js.map +1 -1
  100. package/dist/domain/script/patch/ops-dialogue.d.ts +1 -2
  101. package/dist/domain/script/patch/ops-dialogue.js +1 -25
  102. package/dist/domain/script/patch/ops-dialogue.js.map +1 -1
  103. package/dist/domain/script/patch/ops-extend.d.ts +1 -8
  104. package/dist/domain/script/patch/ops-extend.js +1 -110
  105. package/dist/domain/script/patch/ops-extend.js.map +1 -1
  106. package/dist/domain/script/patch/ops-meta.d.ts +1 -5
  107. package/dist/domain/script/patch/ops-meta.js +1 -81
  108. package/dist/domain/script/patch/ops-meta.js.map +1 -1
  109. package/dist/domain/script/patch/ops-scene.d.ts +1 -6
  110. package/dist/domain/script/patch/ops-scene.js +1 -350
  111. package/dist/domain/script/patch/ops-scene.js.map +1 -1
  112. package/dist/domain/script/patch/ops-state.d.ts +1 -8
  113. package/dist/domain/script/patch/ops-state.js +1 -164
  114. package/dist/domain/script/patch/ops-state.js.map +1 -1
  115. package/dist/domain/script/patch/registry.d.ts +1 -2
  116. package/dist/domain/script/patch/registry.js +1 -52
  117. package/dist/domain/script/patch/registry.js.map +1 -1
  118. package/dist/domain/script/patch/types.d.ts +1 -10
  119. package/dist/domain/script/patch/types.js +1 -1
  120. package/dist/domain/script/patch/types.js.map +1 -1
  121. package/dist/domain/script/refs.d.ts +1 -4
  122. package/dist/domain/script/refs.js +1 -63
  123. package/dist/domain/script/refs.js.map +1 -1
  124. package/dist/domain/script/scene-refs.d.ts +1 -3
  125. package/dist/domain/script/scene-refs.js +1 -34
  126. package/dist/domain/script/scene-refs.js.map +1 -1
  127. package/dist/domain/script/schema.d.ts +1 -6
  128. package/dist/domain/script/schema.js +1 -55
  129. package/dist/domain/script/schema.js.map +1 -1
  130. package/dist/domain/script/selector.d.ts +1 -45
  131. package/dist/domain/script/selector.js +1 -184
  132. package/dist/domain/script/selector.js.map +1 -1
  133. package/dist/domain/script/shared/regex.d.ts +2 -0
  134. package/dist/domain/script/shared/regex.js +7 -0
  135. package/dist/domain/script/shared/regex.js.map +1 -0
  136. package/dist/domain/script/shared/types.d.ts +18 -0
  137. package/dist/domain/script/shared/types.js +9 -0
  138. package/dist/domain/script/shared/types.js.map +1 -0
  139. package/dist/domain/script/shared/validation.d.ts +10 -0
  140. package/dist/domain/script/shared/validation.js +2 -0
  141. package/dist/domain/script/shared/validation.js.map +1 -0
  142. package/dist/domain/script/types.d.ts +1 -123
  143. package/dist/domain/script/types.js +1 -8
  144. package/dist/domain/script/types.js.map +1 -1
  145. package/dist/domain/script/v3/address.d.ts +32 -0
  146. package/dist/domain/script/v3/address.js +145 -0
  147. package/dist/domain/script/v3/address.js.map +1 -0
  148. package/dist/domain/script/v3/lookups.d.ts +33 -0
  149. package/dist/domain/script/v3/lookups.js +317 -0
  150. package/dist/domain/script/v3/lookups.js.map +1 -0
  151. package/dist/domain/script/v3/ordinal.d.ts +8 -0
  152. package/dist/domain/script/v3/ordinal.js +92 -0
  153. package/dist/domain/script/v3/ordinal.js.map +1 -0
  154. package/dist/domain/script/v3/parse.d.ts +3 -0
  155. package/dist/domain/script/v3/parse.js +165 -0
  156. package/dist/domain/script/v3/parse.js.map +1 -0
  157. package/dist/domain/script/v3/patch/apply.d.ts +2 -0
  158. package/dist/domain/script/v3/patch/apply.js +31 -0
  159. package/dist/domain/script/v3/patch/apply.js.map +1 -0
  160. package/dist/domain/script/v3/patch/helpers.d.ts +17 -0
  161. package/dist/domain/script/v3/patch/helpers.js +211 -0
  162. package/dist/domain/script/v3/patch/helpers.js.map +1 -0
  163. package/dist/domain/script/v3/patch/inline-speaker.d.ts +2 -0
  164. package/dist/domain/script/v3/patch/inline-speaker.js +50 -0
  165. package/dist/domain/script/v3/patch/inline-speaker.js.map +1 -0
  166. package/dist/domain/script/v3/patch/ops-action.d.ts +12 -0
  167. package/dist/domain/script/v3/patch/ops-action.js +367 -0
  168. package/dist/domain/script/v3/patch/ops-action.js.map +1 -0
  169. package/dist/domain/script/v3/patch/ops-asset.d.ts +14 -0
  170. package/dist/domain/script/v3/patch/ops-asset.js +365 -0
  171. package/dist/domain/script/v3/patch/ops-asset.js.map +1 -0
  172. package/dist/domain/script/v3/patch/ops-dialogue.d.ts +2 -0
  173. package/dist/domain/script/v3/patch/ops-dialogue.js +26 -0
  174. package/dist/domain/script/v3/patch/ops-dialogue.js.map +1 -0
  175. package/dist/domain/script/v3/patch/ops-extend.d.ts +8 -0
  176. package/dist/domain/script/v3/patch/ops-extend.js +111 -0
  177. package/dist/domain/script/v3/patch/ops-extend.js.map +1 -0
  178. package/dist/domain/script/v3/patch/ops-meta.d.ts +5 -0
  179. package/dist/domain/script/v3/patch/ops-meta.js +82 -0
  180. package/dist/domain/script/v3/patch/ops-meta.js.map +1 -0
  181. package/dist/domain/script/v3/patch/ops-scene.d.ts +6 -0
  182. package/dist/domain/script/v3/patch/ops-scene.js +351 -0
  183. package/dist/domain/script/v3/patch/ops-scene.js.map +1 -0
  184. package/dist/domain/script/v3/patch/ops-state.d.ts +8 -0
  185. package/dist/domain/script/v3/patch/ops-state.js +165 -0
  186. package/dist/domain/script/v3/patch/ops-state.js.map +1 -0
  187. package/dist/domain/script/v3/patch/registry.d.ts +2 -0
  188. package/dist/domain/script/v3/patch/registry.js +53 -0
  189. package/dist/domain/script/v3/patch/registry.js.map +1 -0
  190. package/dist/domain/script/v3/patch/types.d.ts +10 -0
  191. package/dist/domain/script/v3/patch/types.js +2 -0
  192. package/dist/domain/script/v3/patch/types.js.map +1 -0
  193. package/dist/domain/script/v3/refs.d.ts +4 -0
  194. package/dist/domain/script/v3/refs.js +64 -0
  195. package/dist/domain/script/v3/refs.js.map +1 -0
  196. package/dist/domain/script/v3/scene-refs.d.ts +3 -0
  197. package/dist/domain/script/v3/scene-refs.js +35 -0
  198. package/dist/domain/script/v3/scene-refs.js.map +1 -0
  199. package/dist/domain/script/v3/schema.d.ts +6 -0
  200. package/dist/domain/script/v3/schema.js +56 -0
  201. package/dist/domain/script/v3/schema.js.map +1 -0
  202. package/dist/domain/script/v3/selector.d.ts +44 -0
  203. package/dist/domain/script/v3/selector.js +180 -0
  204. package/dist/domain/script/v3/selector.js.map +1 -0
  205. package/dist/domain/script/v3/types.d.ts +106 -0
  206. package/dist/domain/script/v3/types.js +2 -0
  207. package/dist/domain/script/v3/types.js.map +1 -0
  208. package/dist/domain/script/v3/validation.d.ts +3 -0
  209. package/dist/domain/script/v3/validation.js +200 -0
  210. package/dist/domain/script/v3/validation.js.map +1 -0
  211. package/dist/domain/script/v4/address.d.ts +61 -0
  212. package/dist/domain/script/v4/address.js +100 -0
  213. package/dist/domain/script/v4/address.js.map +1 -0
  214. package/dist/domain/script/v4/factory.d.ts +2 -0
  215. package/dist/domain/script/v4/factory.js +13 -0
  216. package/dist/domain/script/v4/factory.js.map +1 -0
  217. package/dist/domain/script/v4/from-v3.d.ts +29 -0
  218. package/dist/domain/script/v4/from-v3.js +307 -0
  219. package/dist/domain/script/v4/from-v3.js.map +1 -0
  220. package/dist/domain/script/v4/ids.d.ts +27 -0
  221. package/dist/domain/script/v4/ids.js +63 -0
  222. package/dist/domain/script/v4/ids.js.map +1 -0
  223. package/dist/domain/script/v4/ordinal.d.ts +3 -0
  224. package/dist/domain/script/v4/ordinal.js +67 -0
  225. package/dist/domain/script/v4/ordinal.js.map +1 -0
  226. package/dist/domain/script/v4/parse.d.ts +3 -0
  227. package/dist/domain/script/v4/parse.js +18 -0
  228. package/dist/domain/script/v4/parse.js.map +1 -0
  229. package/dist/domain/script/v4/patch/apply.d.ts +3 -0
  230. package/dist/domain/script/v4/patch/apply.js +24 -0
  231. package/dist/domain/script/v4/patch/apply.js.map +1 -0
  232. package/dist/domain/script/v4/patch/helpers.d.ts +32 -0
  233. package/dist/domain/script/v4/patch/helpers.js +139 -0
  234. package/dist/domain/script/v4/patch/helpers.js.map +1 -0
  235. package/dist/domain/script/v4/patch/ops-action.d.ts +13 -0
  236. package/dist/domain/script/v4/patch/ops-action.js +379 -0
  237. package/dist/domain/script/v4/patch/ops-action.js.map +1 -0
  238. package/dist/domain/script/v4/patch/ops-asset.d.ts +17 -0
  239. package/dist/domain/script/v4/patch/ops-asset.js +617 -0
  240. package/dist/domain/script/v4/patch/ops-asset.js.map +1 -0
  241. package/dist/domain/script/v4/patch/ops-extend.d.ts +11 -0
  242. package/dist/domain/script/v4/patch/ops-extend.js +86 -0
  243. package/dist/domain/script/v4/patch/ops-extend.js.map +1 -0
  244. package/dist/domain/script/v4/patch/ops-meta.d.ts +5 -0
  245. package/dist/domain/script/v4/patch/ops-meta.js +49 -0
  246. package/dist/domain/script/v4/patch/ops-meta.js.map +1 -0
  247. package/dist/domain/script/v4/patch/ops-scene-ref.d.ts +3 -0
  248. package/dist/domain/script/v4/patch/ops-scene-ref.js +98 -0
  249. package/dist/domain/script/v4/patch/ops-scene-ref.js.map +1 -0
  250. package/dist/domain/script/v4/patch/ops-structure.d.ts +6 -0
  251. package/dist/domain/script/v4/patch/ops-structure.js +236 -0
  252. package/dist/domain/script/v4/patch/ops-structure.js.map +1 -0
  253. package/dist/domain/script/v4/patch/registry.d.ts +2 -0
  254. package/dist/domain/script/v4/patch/registry.js +50 -0
  255. package/dist/domain/script/v4/patch/registry.js.map +1 -0
  256. package/dist/domain/script/v4/patch/schema.d.ts +7 -0
  257. package/dist/domain/script/v4/patch/schema.js +75 -0
  258. package/dist/domain/script/v4/patch/schema.js.map +1 -0
  259. package/dist/domain/script/v4/patch/types.d.ts +10 -0
  260. package/dist/domain/script/v4/patch/types.js +2 -0
  261. package/dist/domain/script/v4/patch/types.js.map +1 -0
  262. package/dist/domain/script/v4/selector.d.ts +11 -0
  263. package/dist/domain/script/v4/selector.js +125 -0
  264. package/dist/domain/script/v4/selector.js.map +1 -0
  265. package/dist/domain/script/v4/types.d.ts +120 -0
  266. package/dist/domain/script/v4/types.js +2 -0
  267. package/dist/domain/script/v4/types.js.map +1 -0
  268. package/dist/domain/script/v4/validation.d.ts +2 -0
  269. package/dist/domain/script/v4/validation.js +378 -0
  270. package/dist/domain/script/v4/validation.js.map +1 -0
  271. package/dist/help-text.js +146 -114
  272. package/dist/help-text.js.map +1 -1
  273. package/dist/llm/config.js +2 -0
  274. package/dist/llm/config.js.map +1 -1
  275. package/dist/llm/registry.d.ts +1 -0
  276. package/dist/llm/registry.js +3 -0
  277. package/dist/llm/registry.js.map +1 -1
  278. package/dist/llm/tasks/ingest/asset-audit.d.ts +6 -0
  279. package/dist/llm/tasks/ingest/asset-audit.js +164 -0
  280. package/dist/llm/tasks/ingest/asset-audit.js.map +1 -0
  281. package/dist/llm/tasks/ingest/asset-curate.d.ts +1 -1
  282. package/dist/llm/types.d.ts +1 -1
  283. package/dist/llm/types.js.map +1 -1
  284. package/dist/usecases/ingest/command.js +1 -1
  285. package/dist/usecases/ingest/final-asset-audit.d.ts +39 -0
  286. package/dist/usecases/ingest/final-asset-audit.js +88 -0
  287. package/dist/usecases/ingest/final-asset-audit.js.map +1 -0
  288. package/dist/usecases/ingest/pipeline.js +62 -11
  289. package/dist/usecases/ingest/pipeline.js.map +1 -1
  290. package/dist/usecases/ingest/serial-govern.d.ts +2 -1
  291. package/dist/usecases/ingest/serial-govern.js +11 -4
  292. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  293. package/dist/usecases/ingest/video-pipeline.js +100 -14
  294. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  295. package/dist/usecases/ingest/view-server.js +2 -2
  296. package/dist/usecases/ingest/view-server.js.map +1 -1
  297. package/dist/usecases/script/actions.js +101 -5
  298. package/dist/usecases/script/actions.js.map +1 -1
  299. package/dist/usecases/script/actors.js +16 -7
  300. package/dist/usecases/script/actors.js.map +1 -1
  301. package/dist/usecases/script/alias.js +7 -6
  302. package/dist/usecases/script/alias.js.map +1 -1
  303. package/dist/usecases/script/assets.js +18 -2
  304. package/dist/usecases/script/assets.js.map +1 -1
  305. package/dist/usecases/script/audit-assets.d.ts +4 -0
  306. package/dist/usecases/script/audit-assets.js +40 -0
  307. package/dist/usecases/script/audit-assets.js.map +1 -0
  308. package/dist/usecases/script/command-constraints.d.ts +36 -0
  309. package/dist/usecases/script/command-constraints.js +115 -0
  310. package/dist/usecases/script/command-constraints.js.map +1 -0
  311. package/dist/usecases/script/context.js +31 -4
  312. package/dist/usecases/script/context.js.map +1 -1
  313. package/dist/usecases/script/create.js +2 -2
  314. package/dist/usecases/script/create.js.map +1 -1
  315. package/dist/usecases/script/delete.js +6 -3
  316. package/dist/usecases/script/delete.js.map +1 -1
  317. package/dist/usecases/script/describe.js +7 -4
  318. package/dist/usecases/script/describe.js.map +1 -1
  319. package/dist/usecases/script/dialogue.js +15 -5
  320. package/dist/usecases/script/dialogue.js.map +1 -1
  321. package/dist/usecases/script/dispatch.d.ts +3 -0
  322. package/dist/usecases/script/dispatch.js +10 -0
  323. package/dist/usecases/script/dispatch.js.map +1 -0
  324. package/dist/usecases/script/do.js +74 -11
  325. package/dist/usecases/script/do.js.map +1 -1
  326. package/dist/usecases/script/emotion.js +14 -3
  327. package/dist/usecases/script/emotion.js.map +1 -1
  328. package/dist/usecases/script/episodes.js +15 -4
  329. package/dist/usecases/script/episodes.js.map +1 -1
  330. package/dist/usecases/script/export-authoring.js +35 -11
  331. package/dist/usecases/script/export-authoring.js.map +1 -1
  332. package/dist/usecases/script/extend.js +23 -15
  333. package/dist/usecases/script/extend.js.map +1 -1
  334. package/dist/usecases/script/ids.js +53 -10
  335. package/dist/usecases/script/ids.js.map +1 -1
  336. package/dist/usecases/script/insert.js +74 -38
  337. package/dist/usecases/script/insert.js.map +1 -1
  338. package/dist/usecases/script/lib.d.ts +50 -1
  339. package/dist/usecases/script/lib.js +599 -61
  340. package/dist/usecases/script/lib.js.map +1 -1
  341. package/dist/usecases/script/locations.js +16 -7
  342. package/dist/usecases/script/locations.js.map +1 -1
  343. package/dist/usecases/script/merge.js +8 -5
  344. package/dist/usecases/script/merge.js.map +1 -1
  345. package/dist/usecases/script/move.js +24 -5
  346. package/dist/usecases/script/move.js.map +1 -1
  347. package/dist/usecases/script/parenthetical.d.ts +3 -0
  348. package/dist/usecases/script/parenthetical.js +55 -0
  349. package/dist/usecases/script/parenthetical.js.map +1 -0
  350. package/dist/usecases/script/props.js +16 -7
  351. package/dist/usecases/script/props.js.map +1 -1
  352. package/dist/usecases/script/refs.js +44 -0
  353. package/dist/usecases/script/refs.js.map +1 -1
  354. package/dist/usecases/script/rename.js +7 -4
  355. package/dist/usecases/script/rename.js.map +1 -1
  356. package/dist/usecases/script/scenes.js +32 -6
  357. package/dist/usecases/script/scenes.js.map +1 -1
  358. package/dist/usecases/script/script-patch.js +180 -16
  359. package/dist/usecases/script/script-patch.js.map +1 -1
  360. package/dist/usecases/script/session.d.ts +3 -0
  361. package/dist/usecases/script/session.js +25 -5
  362. package/dist/usecases/script/session.js.map +1 -1
  363. package/dist/usecases/script/split.js +12 -6
  364. package/dist/usecases/script/split.js.map +1 -1
  365. package/dist/usecases/script/states.js +45 -1
  366. package/dist/usecases/script/states.js.map +1 -1
  367. package/dist/usecases/script/synopsis.js +11 -4
  368. package/dist/usecases/script/synopsis.js.map +1 -1
  369. package/dist/usecases/script/v3/mutations.d.ts +2 -0
  370. package/dist/usecases/script/v3/mutations.js +5 -0
  371. package/dist/usecases/script/v3/mutations.js.map +1 -0
  372. package/dist/usecases/script/v4/mutations.d.ts +2 -0
  373. package/dist/usecases/script/v4/mutations.js +6 -0
  374. package/dist/usecases/script/v4/mutations.js.map +1 -0
  375. package/dist/usecases/script/v4/queries.d.ts +14 -0
  376. package/dist/usecases/script/v4/queries.js +154 -0
  377. package/dist/usecases/script/v4/queries.js.map +1 -0
  378. package/dist/usecases/script/working-copy.js +3 -3
  379. package/dist/usecases/script/working-copy.js.map +1 -1
  380. package/dist/usecases/script/write-authoring.js +99 -5
  381. package/dist/usecases/script/write-authoring.js.map +1 -1
  382. package/package.json +3 -2
  383. package/skills/scriptctl/SKILL.md +122 -282
  384. package/skills/scriptctl/references/atomic-edit-workflow.md +23 -38
  385. package/skills/scriptctl/references/bulk-authoring.md +35 -154
  386. package/skills/scriptctl/references/ingest-workflow.md +12 -11
  387. package/skills/scriptctl/references/production-writing-standard.md +38 -67
  388. package/skills/scriptctl/references/state-reference-repair.md +19 -42
@@ -1 +1 @@
1
- {"version":3,"file":"write-authoring.js","sourceRoot":"","sources":["../../../src/usecases/script/write-authoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-authoring.js","sourceRoot":"","sources":["../../../src/usecases/script/write-authoring.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lingjingai/scriptctl",
3
- "version": "0.49.16",
4
- "description": "剧本阶段统一 CLI:素材转 Script v3、本地完整块批量写作与替换、原子精修、校验和发布。",
3
+ "version": "0.50.0",
4
+ "description": "剧本阶段统一 CLI:素材转 Script v4,并兼容 Script v3 的本地写作、精修、校验和发布。",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "scriptctl": "./dist/bin.js"
@@ -40,6 +40,7 @@
40
40
  "fast-xml-parser": "^5.9.0",
41
41
  "https-proxy-agent": "^9.1.0",
42
42
  "jszip": "^3.10.1",
43
+ "nanoid": "^5.1.16",
43
44
  "proper-lockfile": "^4.1.2",
44
45
  "yaml": "^2.8.1"
45
46
  },
@@ -1,365 +1,205 @@
1
1
  ---
2
2
  name: scriptctl
3
- description: "剧本 script.json 的本地读写 + 入库 CLI。远端剧本先 checkout 成工作副本;完整剧集/场/正文区间用 export + 文件化 authoring + write plan/apply 批量创作或替换,细小精修用原子 verb/do;完成后 publish 严格按 revision 入库。也覆盖 ingest、查询、资产/state、校验。剧本阶段做任何剧本相关读写、以及操作两个 script.json 之前都应加载。"
3
+ description: "剧本 script.json 的本地查询、文件化批量写作、原子精修、素材 ingest revision publish CLI。处理 Script v3/v4、两个 script.json、剧本资产/state、Action、场景引用或 authoring 时使用。"
4
4
  metadata:
5
- version: "0.25.2"
5
+ version: "0.26.0"
6
6
  scriptctl_version: "0.49.16"
7
7
  author: "official"
8
8
  ---
9
9
 
10
10
  # scriptctl
11
11
 
12
- `scriptctl` 读写结构化剧本 `script.json`,并把外部素材转成剧本、入库。查询和原子编辑始终作用于本地文件;远端只在 `checkout` / `publish` 边界访问。
12
+ `scriptctl` 始终对 `--script-path` 指向的本地 `script.json` 工作。远端剧本先
13
+ `checkout`,完成本地查询、修改和 `validate` 后再 `publish`。
13
14
 
14
- 三条主线:
15
- - **转剧本入库**:`ingest`(抽取,产出 `workspace/script.json`)→ 标准化复核 → `view`(自查)→ `publish`(入库)。见 [references/ingest-workflow.md](references/ingest-workflow.md)。
16
- - **完整块创作/替换**:从零时直接分配 canonical ID 并写完整 `.scriptctl`;修改本地既有剧本时用 `ids` 取新 ID、用 `export` 取既有完整块 → `write` plan → `write --apply --plan <digest>`。
17
- - **精修既有剧本**:查询 + 原子写 + 选择器批量 + `do`。
15
+ ## 先识别版本
18
16
 
19
- ## 标准剧本通用流程:先把可引用世界建完整
17
+ 读取 `script.json.version`:
20
18
 
21
- 从零创作、视频提取、小说或非标准剧本解析、洗稿/对标/转绘的目标稿统一执行以下流程;“正文”指 scene 下的 `action / dialogue / inner_thought / transition`。完整生产写作规范见 [references/production-writing-standard.md](references/production-writing-standard.md)
19
+ - Script v4:新建和 ingest 的默认方言。episode、scene、Action、asset 使用带类型前缀的短随机 ID;修改只用正式 ID
20
+ - Script v3:线上既有项目的冻结方言。查询、修改、authoring 和 publish 继续使用 v3 地址与字段。
21
+
22
+ 不要根据字段形状猜版本。命令会按显式 `version` 自动分流。
23
+
24
+ ## 标准剧本通用流程
22
25
 
23
26
  1. **忠实理解输入**:创作时落实题材、集纲和人物关系;提取与解析时保留源素材可验证的对白、动作、顺序、场界和状态变化。把不确定信息标为待复核,不补写源素材未表达的事实。
24
27
  2. **注册资产**:先读现有人物、地点、道具;正文将出现的资产必须先注册。批量创作在 authoring `<create>` 中声明,ingest 由抽取流程建立。人物保留一个稳定的 `actor_name` 作为真名,称呼、绰号、职位放 `aliases[]`,同一人物共用一个 actor。
25
28
  3. **建好资产状态**:每个新资产必须有唯一的 `default` state;批量创作在 `<create>` 中随资产声明,持久、可复用、需要独立生成视觉资产的变体再声明独立 state。
26
- 4. **建立真实场并绑定资产**:完整 scene 显式声明本场地点、全部人物、全部道具及其实际 state。同一人物需要多份场景引用时,写多条 cast 并保留顺序;正文中出现的资产属于本场引用集合。
29
+ 4. **建立真实场并绑定资产**:完整 scene 显式声明本场地点、全部人物、全部道具及其实际 state。V4 同一资产只出现一条场景引用,完整状态写入无序 `state_ids` 集合;V3 按其既有单状态引用结构处理。
27
30
  5. **写入或标准化正文**:从零、续写和连续正文修改使用 `.scriptctl` authoring 文件;已有目标先 `export`,再执行 `write` plan/apply。ingest 先完成抽取,大块标准化修改同样走 export/write。发现新资产或新 state 时,先补入 `<create>` 和 scene 引用,再继续正文。
28
31
  6. **逐场复核**:每批正文落盘后读回 `scenes / actions`;一集完成后运行 `validate`。`validate` 通过只代表结构与引用合法,仍需完成内容标准和源素材一致性复核。
32
+ 7. **全剧资产审计**:全剧完成后运行 `audit-assets --script-path <file>`,检查人物身份重复、同义视觉状态、未使用/落单状态,以及重复地点和道具资产。审计只给建议,不自动合并;必须核对剧情、身份、外观和跨集连续性后再修复。
29
33
 
30
- ### 动作描述必须可唯一解析
31
-
32
- - `action.content` 中禁止人称代词和依赖上下文猜测的指代,包括“他 / 她 / 它 / 他们 / 她们 / 对方 / 其中一人 / 另一个人 / 前者 / 后者 / 有人 / 两人”等。每一个独立行动者都使用其唯一 `actor_name`:写“林夏拿起铁棒,陈默关门”,不写“她拿起铁棒,另一个人关门”。
33
- - 动作描述只用 `actor_name`,不用 alias、职位或临时称呼代替真名。`dialogue.content` 可以自然使用“我 / 你 / 他是谁”等人称代词;对白的说话人仍必须通过 `--actor <actor_id>` 明确绑定。非角色声源用 `--kind system|broadcast|offscreen|group`,不能伪造 actor。
34
- - Action 写成可直接转化为画面的行为链,明确行动者、具体动作、作用对象、空间方向和可见结果;需要镜头控制时补充景别、机位、镜头运动和画面焦点。把抽象心理和评价转成表情、肢体、道具变化或环境反应。
35
- - 每条 dialogue 绑定说话人物或非角色发声源。情绪、语气和短促伴随动作写入 `emotion`;影响走位、道具或连续性的动作单独写成 Action。两人同时说话时写成相邻两条 dialogue,第二条的 `emotion` 以“同时”开头;这是一种写作约定,不表示结构化重叠时间轴。
36
- - 凡是能独立说话、拿取或交接道具、推动动作的人,即使只出现一次,也注册为 actor(可设 `importance background`)。无法区分成员、无需连续造型的环境人群写成群体 Action;群体共同发声使用 `--kind group --label <群体名>`。`group` 只是一条对白的发声源,不创建人物资产、state 或参考图。仅有 group 发声、没有可识别 actor 的场面可直接写入,scene 绑定实际 location 与关键道具。
37
- - CLI 只校验显式结构关系,不从自由文本猜资产。写作者必须逐句保证正文中的真名、地点和道具都能映射到本场 `scene-ref`。
38
-
39
- ### 场界判定
40
-
41
- 场是时间、空间和叙事连续的单元。同一地点、同一连续时段、同一叙事线且动作未中断时,继续向当前 scene 追加;笑点升级、攻防回合、角色进出、剧情节拍和同场人物造型变化不是分场理由。地点切换、明显跳时、切到另一条同时叙事线或明确转场时建立新 scene。一集可以只有一场。
42
-
43
- location 表示可独立布置、可独立生成参考图、可重复引用的稳定物理空间;客厅、卧室、卫生间、大厅、广场分别注册。相关空间使用“豪宅·客厅”“豪宅·卧室”这类统一命名表达归属。每个 scene 绑定一个 location;人物引用可以重复,同一 actor 可按实际画面追加同 state 或不同 state 的多份引用。
34
+ ## 三条工作流
44
35
 
45
- 跨地点蒙太奇按剪辑顺序建立多个短 scene,每个 scene 绑定自己的地点、实际人物、道具和 state,并用 transition 明确蒙太奇开始、切换和结束。纯空镜 scene 绑定实际 location 与关键道具即可,不创建虚假人物。
36
+ 1. 素材转剧本:`ingest` 内容复核 `view` / `validate` `publish`。见
37
+ [references/ingest-workflow.md](references/ingest-workflow.md)。
38
+ 2. 完整块创作或替换:`ids` → `export` 或新写 `.scriptctl` → `write` plan →
39
+ `write --apply --plan <digest>`。见
40
+ [references/bulk-authoring.md](references/bulk-authoring.md)。
41
+ 3. 少量精修:查询定位 → 单 ID 原子 verb;同构多点用 selector;异构多点用
42
+ `do`。见 [references/atomic-edit-workflow.md](references/atomic-edit-workflow.md)。
46
43
 
47
- 人物在同一连续场内需要多份视觉参考时,在完整 scene 中按画面需要写多条 cast 引用并保留顺序。地点切换、跳时或叙事线切换仍建立新 scene。收尾时用 `scenes --in <ep>` 复核相邻场界。少量既有内容精修见 [references/atomic-edit-workflow.md](references/atomic-edit-workflow.md)。
44
+ ## 本地文件边界
48
45
 
49
- ## 先定本地文件
46
+ - 普通命令默认读取 `<cwd>/workspace/script.json`;操作其他文件时始终显式传
47
+ `--script-path <file>`。
48
+ - `--workspace-path` 只属于 `ingest`、`ingest status` 和 `view`。
49
+ - 同时处理原剧与目标剧时,每条命令都显式带对应 `--script-path`,只从原剧读,
50
+ 只向目标剧写。
51
+ - `checkout` 不覆盖未管理文件或本地修改;`publish` 按工作副本 revision 严格写入。
50
52
 
51
- - 查询、`write`、`export`、`ids`、`create`、全部原子编辑、`do`、`patch` 只接受 `--script-path <file>`;省略时统一使用 `<cwd>/workspace/script.json`。
52
- - 编辑远端已有剧本:先 `scriptctl checkout [--script-path FILE]`,再对该文件运行任意原子命令,最后 `scriptctl publish [--script-path FILE]`。
53
- - `checkout` 会建立 `.scriptctl/<filename>.working-copy.json`,记录远端项目、API 地址、base revision 和语义内容 hash。已有未管理文件或有本地修改时拒绝覆盖;只有明确 `--discard-local` 才丢弃。
54
- - `status` 完全本地判断 managed / clean / dirty,不访问网络。
55
- - `publish` 对已管理文件拉取最新 snapshot,以本地稿为准计算 diff 后严格 CAS PATCH;CAS 或网络失败会重拉、重算、重试。干净工作副本不访问网络。无 metadata 的文件只允许以 base revision 0 首次发布。
56
- - 所有写命令按文件加锁;外部编辑器在命令期间改文件也会在落盘前被检测并拒绝覆盖。
57
- - `--workspace-path` 仍只属于 `ingest` / `view` / `ingest status`;普通读写和 publish 用 `--script-path`。
53
+ ## 查询与定位
58
54
 
59
- ### 两个 script.json:洗稿 / 对标 / 转绘
60
-
61
- 洗稿、对标仿写、转绘(换地区/换壳)里常常**同时开着原剧和新剧两份 script.json**:从原剧读结构与节奏,往新剧写。因为每条命令只作用于 `--script-path` 指的那一份,**换文件就是换这个 flag 的值**:
55
+ 常用查询:
62
56
 
63
57
  ```bash
64
- ORIG=原剧/script.json
65
- NEW=新剧/script.json
66
-
67
- # 读原剧(了解要对标什么)
68
- scriptctl summary --script-path "$ORIG"
69
- scriptctl actions --in ep_001 --script-path "$ORIG" # 带 timestamp 列,看节奏
70
- scriptctl states act_001 --script-path "$ORIG" # 看人物状态弧线
71
-
72
- # 建/写新剧:直接分配 canonical ID,用 authoring 文件一次表达资产、状态、集、场和正文
73
- scriptctl write new-story.scriptctl --create \
74
- --script-path "$NEW" # plan
75
- scriptctl write new-story.scriptctl --create --apply --plan sha256:... \
76
- --script-path "$NEW" # apply
77
-
78
- # 逐场对照:同一集在两份里并排看
79
- scriptctl scenes --in ep_003 --script-path "$ORIG"
80
- scriptctl scenes --in ep_003 --script-path "$NEW"
58
+ scriptctl summary --script-path "$SCRIPT"
59
+ scriptctl episodes --script-path "$SCRIPT"
60
+ scriptctl scenes --in '@ep:3' --script-path "$SCRIPT"
61
+ scriptctl actions --grep "台下掌声" --script-path "$SCRIPT"
62
+ scriptctl actors --counts --script-path "$SCRIPT"
63
+ scriptctl states actA3kP9x --script-path "$SCRIPT"
64
+ scriptctl refs actA3kP9x/stB4xR8p --script-path "$SCRIPT"
65
+ scriptctl validate --script-path "$SCRIPT"
81
66
  ```
82
67
 
83
- - 一次只碰一份。要「从 A 抄到 B」就是:`--script-path A` 读出来 → 你决定改法 → `--script-path B` 写进去。
84
- - 事件级对齐:原剧 `actions` 的 `timestamp` 列 + `scenes` 的 `t=t_start..t_end` 给出每段的时间跨度;对标时按这个跨度切新剧的段落。
85
- - 人物状态弧线:`states <actor>` 每个状态末尾的 `episodes=<区间>` 告诉你某个造型/形态在原剧哪些集出现,转绘时据此规划新剧的状态。
68
+ 序号锚点是 1-based 查询语法:
86
69
 
87
- ## 能干什么
70
+ - `@ep:3`
71
+ - `@ep:3/scn:2`
72
+ - `@ep:3/scn:2/ac:5`
73
+ - `@scn:12`
74
+ - `@ac:48`
88
75
 
89
- ### 读(永远只读、永远安全)
76
+ 区间包含两端,端点正反等价,按当前文档顺序解释。V4 查询返回正式 ID;V3
77
+ 查询返回可写的 v3 地址。先按序号或正文查询,再把结果中的正式地址用于修改。
90
78
 
91
79
  | 想做什么 | 命令 |
92
80
  |---|---|
93
81
  | **了解剧情 / 全貌**:synopsis/worldview/style/logline/theme/main_characters + 标题/集数/场数/资产数("这剧本是关于什么"先跑这个) | `scriptctl summary` |
94
82
  | 每集字数 / 场数 / action 数 **+ 每集剧情梗概** | `scriptctl episodes`(`--min-chars 1000` 找长集) |
95
- | 看某集的所有场(含 `t=t_start..t_end` 时段) | `scriptctl scenes --in ep_007` |
96
- | 看某场的资产 + action 数 | `scriptctl scenes --in ep_007/scn_005` |
83
+ | 看某集的所有场(含 `t=t_start..t_end` 时段) | `scriptctl scenes --in '@ep:7'` |
84
+ | 看某场的资产 + action 数 | `scriptctl scenes --in '@ep:7/scn:5'` |
97
85
  | **按正文搜某句话定位 action**(最常用) | `scriptctl actions --grep "<片段>"` |
98
- | 列某集所有 action(TSV 含 **timestamp** / speaker / 正文 / 情绪) | `scriptctl actions --in ep_001` |
99
- | 看单条 action 正文 | `scriptctl actions --in ep_001/scn_001#3` |
100
- | action 多维过滤 | `scriptctl actions --in ep_001 --type dialogue --actor act_001 --has speaker` |
101
- | 某角色出现的所有场 | `scriptctl scenes --has-actor act_001`(另有 `--has-location`/`--has-prop`) |
102
- | **列某资产的所有 state + 状态弧线**(改造型前必查) | `scriptctl states act_001`(裸 id 即可,也认 `actor:act_001`) |
86
+ | 列某集所有 action(含 timestamp / speaker / 正文 /表演提示) | `scriptctl actions --in '@ep:1'` |
87
+ | 看单条 action 正文 | `scriptctl actions --in '@ep:1/scn:1/ac:3'` |
88
+ | action 多维过滤 | `scriptctl actions --in '@ep:1' --type dialogue --actor <actor-id> --has speaker` |
89
+ | 某角色出现的所有场 | `scriptctl scenes --has-actor <actor-id>`(另有 `--has-location`/`--has-prop`) |
90
+ | **列某资产的所有 state + 状态弧线**(改造型前必查) | `scriptctl states <asset-id>` |
103
91
  | 资产**出场统计**(几场/几集,压成集区间) | `scriptctl actors --counts` / `locations --counts` / `props --counts` |
104
- | 某资产 / 状态 / speaker 反查 | `scriptctl refs actor:act_001`(`refs spk_001` 反查发声源) |
92
+ | 某资产 / 状态反查 | `scriptctl refs <asset-id>` / `scriptctl refs <asset-id>/<state-id>` |
105
93
  | 当前校验问题 / 跑校验 | `scriptctl issues --severity error` / `scriptctl validate` |
94
+ | 全剧人物/状态/地点/道具去重审计 | `scriptctl audit-assets --script-path workspace/script.json` |
106
95
 
107
- **读侧要点:**
108
- - `actions` TSV 列:`addr timestamp type speaker actor emotion content`。`timestamp` 是该 action 的 `extend.timestamp`(集内 `M:SS`,无则空)。事件跨度 = 首末 action 时间戳之差。`speaker` 列是 v3 内联发声源(actor 或 system/broadcast/offscreen/group)。
109
- - `scenes` 行尾 `t=<t_start>..<t_end>`:该场首/末带时间戳 action 的时间。
110
- - `states <asset>`:接受裸 id(`act_001`/`loc_001`/`prp_001`);每个状态末尾 `episodes=<区间> (N eps, M scenes)` 是该状态的**集弧线**(按 scene 造型引用统计);从不被引用的状态显示 `episodes=none`。
111
- - `--counts`:追加 `scenes=N episodes_count=M episodes=<区间>`。默认不带,保持精简。
112
-
113
- ### 写(单点:第一个位置参数是 address。多点:见「选择器批量」)
96
+ ## Script v4 写入
114
97
 
115
- | 想做什么 | 命令 |
116
- |---|---|
117
- | 改 action 正文(替换/删一段) | `scriptctl replace <ep/scn#idx> --from X --to Y`(加 `--regex`;`--to` 省略即删) |
118
- | 改 action type | `scriptctl type <ep/scn#idx> <dialogue\|action\|inner_thought\|transition>` |
119
- | 改 action 归属角色(内联发声源) | `scriptctl actor <ep/scn#idx> <act_id\|none>` |
120
- | 改/清 action 情绪 | `scriptctl emotion <ep/scn#idx> "紧张"` / `--clear` |
121
- | **把某行设成对白 + 定内联发声源** | `scriptctl dialogue <ep/scn#idx> --actor act_001`(角色)/ `--kind <system\|broadcast\|offscreen\|group> [--label 广播]`(非角色声源)。同时把 type 翻成 dialogue |
122
- | **设/改场景里某资产的造型(state)** | `scriptctl scene-ref <ep/scn> <actor\|location\|prop>:<id> --state <state_id>`;同一 actor 再加一份用 `--append`,重复后用 `--occurrence <n>` 精确修改/清除/删除第 n 份。新写正文时必须给实际 state;`--clear` / `--state none` 仅用于修复中间态。location 单值(set 即替换) |
123
- | 改资产名/描述/别名/role | `scriptctl rename actor:<id> "X"` / `describe` / `alias --add X` / `role <主角\|配角>` |
124
- | **设资产重要度**(决定下游是否生成视觉资产+状态跟踪) | `scriptctl importance <actor\|location\|prop>:<id> <featured\|background>`(featured=主角/配角;background=龙套/背景,下游跳过) |
125
- | 给资产加 state | `scriptctl state-add actor:<id> "震惊"` |
126
- | **改/删某个 state** | `scriptctl state-rename actor:<id>/<st_id> "新名"` / `scriptctl state-delete actor:<id>/<st_id> --strategy remove`(引用修复核验见 [references/state-reference-repair.md](references/state-reference-repair.md)) |
127
- | 挂自由维度键值 | `scriptctl extend <addr> --key <名> --value <JSON>`(如给 action 挂 `timestamp`) |
128
- | 合并资产/场景 | `scriptctl merge actor:<src> --into actor:<dst>` |
129
- | 删 action/scene/资产 | `scriptctl delete <addr>`(资产要 `--strategy replace\|remove`) |
130
- | 插 action/scene | `scriptctl insert <ep/scn> --type X --content X`(对白/心声再传 `--actor <id>` 或 `--kind ... [--label ...]`;本场资产及 state 未绑定会拒绝)/ `insert <ep> --location <id>` |
131
- | 移动/分场 | `scriptctl move <addr> <to>` / `split <ep/scn> --at <idx>` |
132
- | 设整本/分集剧情梗概 | `scriptctl synopsis "整本梗概"` / `scriptctl synopsis ep_001 "本集梗概"`(`synopsis generate` 用 LLM 批量生成) |
133
- | 设世界观 | `scriptctl worldview <现代\|古代历史\|...>` |
134
-
135
- > 发声源写在**对白行内联**:角色用 `dialogue <at> --actor <id>`(或 `actor <at> <id>`),非角色声源用 `dialogue <at> --kind <system\|broadcast\|offscreen\|group>`。造型(state)挂在**场景级 cast 引用**上:`scene-ref <ep/scn> <kind:id> --state <state_id>`。
136
-
137
- ### 选择器批量(一条命令扫一片 —— 读写共享同一套选择语法)
138
-
139
- 把单点写动词的「address」换成一个**选择**,它就对**所有命中的 action** 一次性改。支持选择器的写动词:`replace / type / actor / emotion / transition`。
140
-
141
- - **选范围 `--in`**:`ep_003..ep_007`(集区间)/ `ep/scn` 区间 / 逗号多区间 / `'*'`(全本)。
142
- - **加谓词**(和 `actions` 查询**完全一样**的 flag,AND 组合):`--type` `--actor` `--grep /re/` `--has speaker|transition`。
143
- - 🔴 **护栏:多点写默认 dry-run**(回显命中数 + blast-radius,不落盘),加 **`--apply`** 才真写。单点(给 address)仍直写。
98
+ V4 ID 是类型前缀加 6 位 Bitcoin Base58:
144
99
 
145
- ```bash
146
- # 清全本所有 action 开头的 [xxx] 标记:一条正则扫全本
147
- scriptctl replace --in '*' --regex --from '^\s*\[[^\]]*\]\s*' --to '' # 先看命中
148
- scriptctl replace --in '*' --regex --from '^\s*\[[^\]]*\]\s*' --to '' --apply # 落地
149
- # 第3-7集里某角色的对白统一改归属(谓词直达,无需先查地址)
150
- scriptctl actor --in ep_003..ep_007 --actor act_001 act_009 --apply
151
- # 第3-7集里某角色的对白统一标情绪
152
- scriptctl emotion --in ep_003..ep_007 --actor act_001 "紧张" --apply
100
+ ```text
101
+ ep…… scn…… ac…… act…… loc…… prp…… st……
153
102
  ```
154
103
 
155
- > 先 discover 后 mutate 用**同一套 flag**:`scriptctl actions --in … --actor …` 查出来是哪些,换个动词就改哪些。`actions --json` 带结构化 `rows[]`,`actions … --format addr` 直接吐裸地址流喂 `xargs`。scene-ref/importance/dialogue 是**单点**动词,不进选择器批量。
156
-
157
- ### 完整块批量创作与替换(`export` → authoring 文件 → `write`)
158
-
159
- 从零写、向后续写、大量正文变更,以及写一整本、整集、整场或替换中间连续几集/几场/几条 action 时,使用 `.scriptctl` authoring 文件。完整语法与约束见 [references/bulk-authoring.md](references/bulk-authoring.md)。
104
+ `ids` 只生成候选,不预留:
160
105
 
161
106
  ```bash
162
- # 修改既有剧本时先取候选 ID;只读、不预留
163
- scriptctl ids --kind actor --count 2 --script-path workspace/script.json
164
- scriptctl ids --kind scene --count 4 --script-path workspace/script.json
165
-
166
- # 改既有第 2-4 集:先导出完整块,再让模型只改导出文件
167
- scriptctl export episodes --in "ep_002..ep_004" \
168
- --output rewrite.scriptctl --script-path workspace/script.json
169
-
170
- # 默认只生成完整计划,不写
171
- scriptctl write rewrite.scriptctl --replace --script-path workspace/script.json
172
-
173
- # 读取计划里的 plan_digest,原样带回;任何源文件、mode、目标或本地剧本变化都会使它失效
174
- scriptctl write rewrite.scriptctl --replace --apply --plan sha256:... \
175
- --script-path workspace/script.json
107
+ scriptctl ids --kind action --count 4
108
+ scriptctl ids --kind scene --count 2 --script-path "$SCRIPT"
176
109
  ```
177
110
 
178
- 目标选择:
179
-
180
- | 需求 | 导出/authoring target | mode |
181
- |---|---|---|
182
- | 从零创建整本 | 直接分配 canonical ID,写完整 `<script>` | `--create` |
183
- | 追加完整集/场 | `<episode>` / `<scene parent=...>` | `--create` |
184
- | 向既有场末尾续写大量 action | `export scenes`,在完整 `<body>` 末尾续写 | `--replace` |
185
- | 一对一替换多集/多场 | `export episodes` / `export scenes` | `--replace` |
186
- | 用不同数量节点替换连续几集/几场 | `export episode-spans` / `export scene-spans` | `--replace` |
187
- | 替换某场中间连续 action | `export action-spans` | `--replace` |
188
-
189
- 一个 authoring 文件只有一种 target kind。完整 episode/scene 可以是待填充空骨架,计划会报告 empty/cleared warning;单条空 content 也会提示。scene span 的每个区间只能在同一 episode;action span 只能在同一 scene。区间端点按当前数组顺序判断,不按 ID 数字判断;新 ID 可以放在 replacement 内容中,但不能当旧区间端点。所有 span 都必须有非空 replacement。`write` 每次都持有本地独占锁,应用时还校验计划绑定的语义基线并用临时文件原子替换。
190
-
191
- ### 少量异构精修 `do`(一组各不相同的改动 = 一个事务)
192
-
193
- `do` 用于对既有剧本执行少量、离散、彼此不同的精修。每行是一条去掉 `scriptctl` 的命令,整段全成或全不成。完整场、集、整本和连续正文的创作或替换使用 authoring `write`。
111
+ 单点修改使用正式 ID:
194
112
 
195
113
  ```bash
196
- scriptctl do edits.txt # 默认 dry-run(预演 + 校验,不写)
197
- scriptctl do edits.txt --apply # 一次性原子落盘
198
- cat edits.txt <<'EOF'
199
- replace ep_001/scn_001#3 --from "台下掌声雷动" --to ""
200
- dialogue ep_001/scn_002#1 --actor act_001
201
- scene-ref ep_001/scn_001 actor:act_001 --state st_calm
202
- merge actor:act_005 --into actor:act_001
203
- insert ep_001/scn_006 --type action --content "暗夜,街道空无一人。"
204
- EOF
114
+ scriptctl replace acR8cV4n --from "旧句" --to "新句" --script-path "$SCRIPT"
115
+ scriptctl parenthetical acT2fG6z --set "低声" --script-path "$SCRIPT"
116
+ scriptctl parenthetical acT2fG6z --set "" --script-path "$SCRIPT"
117
+ scriptctl parenthetical acT2fG6z --remove --script-path "$SCRIPT"
118
+ scriptctl dialogue acT2fG6z --actor actA3kP9x --state stB4xR8p --script-path "$SCRIPT"
205
119
  ```
206
120
 
207
- `do` 也读 stdin(`scriptctl do -`)。少量结构性精修中的 insert/delete/move/split/merge 走单点或 `do`,不进选择器批量(索引会漂移)。目标 flag(如 `--script-path`)加在 `do` 命令本身上,整段脚本共用同一目标。
208
-
209
- ### 原子建模命令(少量补充资产或骨架)
121
+ `parenthetical` 只属于 dialogue / inner_thought。字段省略表示没有表演提示;显式
122
+ 空字符串与省略不同。影响走位、道具或连续性的动作写成独立 Action。
210
123
 
211
- | 想做什么 | 命令 |
212
- |---|---|
213
- | 建空白剧本(v3 骨架) | `scriptctl create [--title X]` |
214
- | 加人物 | `scriptctl add-actor "林夏" [--role 主角\|配角] [--description X] [--alias X]` |
215
- | 加场景地点 | `scriptctl add-location "便利店" [--description X]` |
216
- | 加道具 | `scriptctl add-prop "怀表" [--description X]` |
217
- | 加分集 | `scriptctl add-episode [--title X]` |
124
+ V4 placement 使用父节点与相邻节点 ID:
218
125
 
219
- 这些命令适合给既有剧本少量补充资产、集或空场。完整新剧及完整场/集创作使用 `.scriptctl` authoring 文件;全新剧本直接分配 canonical ID,既有本地剧本用 `ids` 取得未占用候选 ID,再执行 `write --create` plan/apply。
220
-
221
- ### Address 格式(决定 verb 作用对象,自动分发)
222
-
223
- | 形态 | 类型 | 例 |
224
- |---|---|---|
225
- | `ep_001/scn_001#3` | action | `replace` / `type` / `actor` / `emotion` / `dialogue` |
226
- | `ep_001/scn_001` | scene | `scene-ref`(配 `<kind:id>`)/ `split` |
227
- | `actor:act_001` / `location:loc_001` / `prop:prp_001` | asset | `rename` / `importance` / `merge` / `delete` |
228
- | `actor:act_001/st_001` | asset state | `state-rename` / `state-delete` |
229
- | `ep_001` | episode | `insert`(scene)|
230
- | `spk_001` | speaker 实体 | `refs` / `delete` |
231
-
232
- > `states` 查询额外接受裸资产 id(`act_001`/`loc_001`/`prp_001`),按前缀推断种类。其它 verb 仍要完整 address。
233
-
234
- ## 经典最短路径
235
-
236
- **改某句台词**:grep 找地址 → replace 落字。
237
126
  ```bash
238
- scriptctl actions --grep "台下掌声雷动"
239
- # ep_001/scn_001#3 0:14 action ... 台下掌声雷动。
240
- scriptctl replace ep_001/scn_001#3 --from ",台下掌声雷动" --to ""
127
+ scriptctl insert scnK6wT3c --action-id acD4eF6g \
128
+ --type action --content "陈默关上门。" --before acT2fG6z
129
+ scriptctl move acD4eF6g scnH7jK9m --after acR8cV4n
130
+ scriptctl split scnK6wT3c --at acT2fG6z --new-scene-id scnD4eF6g
241
131
  ```
242
- `--to` 省略即删除。一个 action 内多次命中默认拒绝,把 `--from` 写更长更唯一,或显式 `--all`。
243
132
 
244
- **改某行归属 / 定发声源**:
245
- ```bash
246
- scriptctl dialogue ep_001/scn_003#5 --actor act_002 # 这行是 act_002 说的
247
- scriptctl dialogue ep_001/scn_003#7 --kind broadcast --label 广播 # 非角色声源
248
- ```
133
+ ## 场景资产与状态
249
134
 
250
- **设场景里某人的造型**:
251
- ```bash
252
- scriptctl states act_001 # 先看有哪些 state
253
- scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_injured
254
- scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_calm --append
255
- scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_injured --occurrence 2
256
- ```
135
+ V4 一个场景内同一资产只引用一次;引用携带完整、非空的 `state_ids` 集合。重复
136
+ `--state` 传入整个集合,写入时按 state ID 排序:
257
137
 
258
- 同一人物可在同一 scene 中出现多份引用。`--occurrence` 从 1 开始;命中多份却不指定 occurrence 时,修改、清除和删除都会拒绝执行。
259
-
260
- **整理重复角色**:
261
138
  ```bash
262
- scriptctl refs actor:act_005 # 先看 act_005 出现在哪
263
- scriptctl merge actor:act_005 --into actor:act_001
139
+ scriptctl scene-ref scnK6wT3c actA3kP9x \
140
+ --state default --state stB4xR8p --script-path "$SCRIPT"
141
+ scriptctl scene-ref scnK6wT3c actA3kP9x --remove --script-path "$SCRIPT"
264
142
  ```
265
143
 
266
- **标龙套(下游省算力)**:
267
- ```bash
268
- scriptctl actors --counts # 看谁出场少
269
- scriptctl importance actor:act_042 background
270
- ```
144
+ actor speaker 可选一个 state;若指定,必须属于该 actor 在当前 scene 的
145
+ `state_ids`。状态集合不表示对白级落点,也没有先后顺序。
271
146
 
272
- **修校验问题**:
273
- ```bash
274
- scriptctl issues --severity error
275
- # → STATE_NOT_MATERIALIZED at ep_001/scn_003 actor:act_001
276
- scriptctl states act_001 # 确认合法 state_id
277
- scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_calm
278
- ```
147
+ state 修改前后都反查并校验:
279
148
 
280
- **批量精修(同构一片 → 选择器;异构多点 → `do`)**:
281
149
  ```bash
282
- scriptctl replace --in ep_003..ep_007 --from 陈总 --to 陈墨 --all # 同构:默认 dry-run
283
- scriptctl replace --in ep_003..ep_007 --from 陈总 --to 陈墨 --all --apply # --apply 落地
284
- scriptctl do fixes.txt --apply # 异构:一段动词脚本一事务
150
+ scriptctl refs actA3kP9x/stB4xR8p --script-path "$SCRIPT"
151
+ scriptctl state-delete actA3kP9x/stB4xR8p \
152
+ --strategy replace --replacement default --script-path "$SCRIPT"
153
+ scriptctl validate --script-path "$SCRIPT"
285
154
  ```
286
155
 
287
- ## 转剧本入库:ingest → view → publish
156
+ 详见 [references/state-reference-repair.md](references/state-reference-repair.md)。
288
157
 
289
- 有外部素材(剧本文本 / 分镜 / 小说 / 视频)要变成入库剧本时,走这条线。**统一入口是 `ingest`,自动分流文本/视频**。完整细节 + 复杂场景见 [references/ingest-workflow.md](references/ingest-workflow.md)。
158
+ ## V3 项目
290
159
 
291
- | 项目状态 | 走 |
292
- |---|---|
293
- | 没剧本文本,从零写(题材/灵感/集纲在手) | 直接分配 canonical ID → 生成完整 `.scriptctl` → `write --create` plan/apply → `validate` → `publish` |
294
- | 已有剧本/分镜/小说文本(txt/md/docx) | `scriptctl ingest --source-path <file>` → `view` 自查 → `publish` |
295
- | 有视频(正片文件或分集目录) | `scriptctl ingest --source-path <file\|dir>` → `view` 点击定位复核 → `publish` |
296
-
297
- 三步:
160
+ V3 继续使用现有复合地址,例如:
298
161
 
299
162
  ```bash
300
- # 1) 抽取:产出 <workspace>/script.json(不入库)。文本/视频看后缀自动分流。
301
- # 不传 --workspace-path 就落在 <cwd>/workspace;要放别处就显式传,结果会回显绝对路径。
302
- scriptctl ingest --source-path uploads/剧本.docx # 文本,默认 <cwd>/workspace
303
- scriptctl ingest --source-path uploads/正片/ --workspace-path 1_script/workspace # 视频,显式工作区(需 GEMINI_API_KEY)
304
-
305
- # 2) 看进度 / 自查
306
- scriptctl ingest status # 从工作区真实文件报进度(见下)
307
- scriptctl view # 生成 review.html(视频版可点击定位)
308
- scriptctl summary --script-path workspace/script.json # 抽完后当普通剧本读/改(注意目标是本地文件)
309
-
310
- # 3) 入库:校验 v3 通过后写进目标 store
311
- scriptctl publish --script-path workspace/script.json # 首次发布或更新受管工作副本
163
+ scriptctl replace ep_001/scn_003#5 --from "旧句" --to "新句"
164
+ scriptctl emotion ep_001/scn_003#5 "低声"
165
+ scriptctl scene-ref ep_001/scn_003 actor:act_001 --state st_002
312
166
  ```
313
167
 
314
- - 🔴 **ingest 不入库**——它只产出 `<workspace>/script.json`。**入库是 `publish` 这独立一步**(沙箱里转完必须 publish,否则后端/前端看不到剧本)。
315
- - 🔴 **workspace 路径**:不传 `--workspace-path` 默认 `<cwd>/workspace`;`ingest` 结果回显绝对路径。后续读写/publish 指向该目录下的 `script.json`。
316
- - 抽取后用所有本地动词精修,再 publish。若后续继续编辑远端版本,checkout 到本地再改,不直接对 DB 跑原子 op。
317
- - publish 使用 local-wins:远端 revision 变化时自动以最新 snapshot 为 base 重算 diff,最终远端内容与本地稿一致;不会做三方合并。
168
+ V3 文件运行 `export`、`write`、原子命令、`validate` `publish` 时,CLI
169
+ 会选择 V3 实现并保持原文件结构与既有 ID。
318
170
 
319
- ### `ingest status`:进度按真实文件判定
171
+ ## 多点写与 plan
320
172
 
321
- ```bash
322
- scriptctl ingest status # 人读:kind/state/各 pass 进度
323
- scriptctl ingest status --json # 机器:.status = {kind,state,phase,passes[],units,validation,errors[]}
324
- ```
325
- - `state`:`empty`(没开始)/ `incomplete`(在跑或中断、无硬错,重跑续)/ `failed`(有失败单元或校验没过)/ `ready`(script.json 已生成且 v3 校验通过)。
326
- - 进度**纯从工作区文件推导**(没有独立状态机文件,不会和真实状态不同步)。它报的是"管线事实",不代表"已人工复核"——复核是你的完成门,另算。
327
-
328
- ### 🔴 遇到错误怎么办(抖动是常态,重跑即续)
329
-
330
- 大规模转剧本时,模型抖动 / 限流 / 单集超时 / 偶发解析失败是**正常现象**,不是 bug。护栏与恢复:
173
+ V4 单个明确 ID 的原子修改直接执行。任何单事务多点修改先生成完整计划:
331
174
 
332
- - **`*_INCOMPLETE`(NORMALIZE / TRANSCRIBE / CORRECT / SPEAKER)= 可续的抖动**:部分单元失败,工作区留下 `passN/*.error.json` sidecar。**直接重跑 `scriptctl ingest`(同 source、同 workspace)即可**——它从 checkpoint 续,只补失败单元,成功的不重跑。跑完 `ingest status` 看还剩几个失败,多跑几次直到收敛。
333
- - **`INGEST_PIPELINE_MISMATCH` = 工作区的管线版本与当前版本不同**:确认 source 未变化后,使用同一 source、同一 workspace 加 `--force` 完整重建 checkpoint。
334
- - 🔴 **不要**清工作区、不要删 checkpoint、不要手塞/手改中间文件来"绕过"。重跑是唯一正解。
335
- - **`INGEST_SOURCE_MISMATCH` = 换源了**(工作区是别的 source 建的):换一个新的 `--workspace-path`,别 `--force` 硬覆盖。
336
- - **`INGEST_VALIDATION_FAILED` = 最终 v3 校验没过**:看 `workspace/validation.json` 里的具体报错,用读写动词修 `--script-path workspace/script.json` 再校验/publish。
337
- - **持续 401/403/404 或模型报错**:多半是网关/密钥/模型路由的环境问题(不是抖动、重跑也不好)。如实告诉用户,别反复空跑、别编造成功。视频转需要 `GEMINI_API_KEY`。
338
- - 支持的输入:txt/md/docx + 视频(文件或分集目录);其它(pdf/json/xlsx)会被拒。
175
+ ```bash
176
+ scriptctl replace --in 'acR8cV4n..acT2fG6z' --from "。" --to "!"
177
+ scriptctl replace --in 'acR8cV4n..acT2fG6z' --from "" --to "!" \
178
+ --apply --plan sha256:...
339
179
 
340
- ## 资产 state 判定(`state-add` / `scene-ref --state` 通用规则)
180
+ scriptctl do edits.txt
181
+ scriptctl do edits.txt --apply --plan sha256:...
341
182
 
342
- 只有**持久、可复用、需独立生成视觉资产的外观变体**才进 `states[]`。身份/年龄/职业/情绪/动作/姿态/临时伤病/混合状态**不**算状态,放 description 或 action 文本。
183
+ scriptctl patch changes.json
184
+ scriptctl patch changes.json --apply --plan sha256:...
185
+ ```
343
186
 
344
- **默认状态(default)**:每个有 `states[]` 的资产必须有且仅有一个 `state_id: "default"`(最常见常态外观,保留可读 state_name)。`ingest` 会自动把「默认/最常见」那档 canonical 成 `default`;手动 `state-add` 给原先无状态的资产加第一个 state 后,若校验报 `DEFAULT_STATE_MISSING`,把最常见那档的 state_id 设成 `default`。
187
+ V4 `do` / `patch` 内的创建操作必须显式携带候选 ID,确保 dry-run apply
188
+ 审阅的是同一批新节点;先用 `ids` 生成候选。
345
189
 
346
- 原子 `add-actor / add-location / add-prop` 会自动建立 `default`;少量增补资产时,用 `state-rename` 和 `describe` 定义常态,再将实际 state 绑定到 scene-ref。文件化创作在 `<create>` 中直接声明每个新资产唯一的 `default` state,并在完整 scene 中绑定实际 state。
190
+ 计划会完整列出每步/目标、前后计数、精确目标、全量新增/删除/保留身份、未触及
191
+ 身份或 sibling、声明、保留的孤立资产和 validation;确认码绑定这份完整计划及
192
+ 本地基线。CLI 不保存 plan 文件。当前工作流假设 Agent 从读取到最终写入期间
193
+ 没有外部修改。
347
194
 
348
- 合并/删除 state 时,必须确认引用它的场景 `scene-ref --state` 已被正确修复;操作见 [references/state-reference-repair.md](references/state-reference-repair.md)。
195
+ ## 完成标准
349
196
 
350
- ## 通用边界
197
+ 每批修改后:
351
198
 
352
- - 🔴 **不要加 `--json`**。默认列表/查询输出是给 agent 读的 TSV/行式文本(地址单独成列),比 JSON 更省 token、更好决策。除非真要 parse 字段喂给下一步程序(`actions --json` 有结构化 `rows[]`,`ingest status --json` `.status`,或 `--format addr` 取裸地址流)。
353
- - 🔴 **多点写默认 dry-run**:`replace/type/actor/emotion/transition` 一旦带 `--in`/谓词就是预演(回显命中数,不落盘),确认后加 `--apply` 才真写。单点(给 address)直写。
354
- - 🔴 **少量异构精修走 `do`**;完整场、集、整本和连续正文写作走 `.scriptctl` authoring + `write`。`scriptctl patch <file|->` 只用于机器/jq 管道(`… --json | jq '[…]' | scriptctl patch -`);需要 op schema 用 `scriptctl patch --schema [<op>]`。
355
- - 🔴 **本地用记得带 `--script-path <file>`**;洗稿/对标/转绘里两份剧本就是两个不同的 `--script-path`,一次只碰一份。
356
- - 🔴 **沙箱里转完剧本要 `publish`**:`ingest` 只产 `workspace/script.json`,不 publish 后端/前端看不到。
357
- - 只有 `ingest` 会请求大模型;`ingest status`、`view`、`publish`、`summary/actions` 等查询、`synopsis/replace/patch/do` 等读写命令**不打模型**。
358
- - 多态 verb(`delete`/`merge`/`move`/`describe`/`rename`/`insert`/`scene-ref`)按 address 格式分发;flag 用错 kind 会直接报错(不静默忽略)。
359
- - 新增正文前,`insert <ep/scn>` 要求本场已有地点,并且本场所有地点/人物/道具引用都绑定已物化 state;角色对白/心声的 actor 必须已在本场 cast 中。空镜、环境动作或非角色发声场可以没有人物引用。
360
- - `actor_name` 在全剧内唯一(Unicode 规范化和大小写折叠后仍不能重复);别名只放 `aliases[]`。`validate` 会报告历史数据里的重名人物和“说话人不在本场”。
361
- - 互斥 flag(`scene-ref` 的 --state/--clear/--remove;`dialogue` 的 --actor/--kind;`transition` 的 --process+--contrast/--clear)只能传一个,多传报 `*_FLAG_CONFLICT`。`scene-ref --append` 只与 `--state` 同用;重复 actor 引用用 1-based `--occurrence` 定位。
362
- - `mock` provider 仅测试,禁止作为交付;provider 失败不降级 mock。
363
- - 工具失败排查根因,不手工拼装 JSON 绕过校验。
199
+ 1. `actions` / `scenes` / `refs` 读回目标。
200
+ 2. 运行 `validate`。
201
+ 3. 做内容层复核;结构校验通过不代表剧情、对白和画面已达标。
202
+ 4. 远端项目最后运行 `publish`。
364
203
 
365
- 参数/默认值/退出码以 `scriptctl <cmd> --help` 为准。功能变更用 `scriptctl changelog` 查。
204
+ 完整生产写作约束见
205
+ [references/production-writing-standard.md](references/production-writing-standard.md)。