@lingjingai/scriptctl 0.49.15 → 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 (390) hide show
  1. package/README.md +8 -2
  2. package/changes/0.49.16.md +15 -0
  3. package/changes/0.50.0.md +63 -0
  4. package/changes/unreleased.md +2 -1
  5. package/dist/cli.js +26 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/domain/authoring/apply.d.ts +1 -33
  8. package/dist/domain/authoring/apply.js +1 -783
  9. package/dist/domain/authoring/apply.js.map +1 -1
  10. package/dist/domain/authoring/export.d.ts +1 -7
  11. package/dist/domain/authoring/export.js +1 -84
  12. package/dist/domain/authoring/export.js.map +1 -1
  13. package/dist/domain/authoring/parser.d.ts +2 -3
  14. package/dist/domain/authoring/parser.js +2 -914
  15. package/dist/domain/authoring/parser.js.map +1 -1
  16. package/dist/domain/authoring/serializer.d.ts +1 -2
  17. package/dist/domain/authoring/serializer.js +1 -243
  18. package/dist/domain/authoring/serializer.js.map +1 -1
  19. package/dist/domain/authoring/shared/bracket.d.ts +4 -0
  20. package/dist/domain/authoring/shared/bracket.js +95 -0
  21. package/dist/domain/authoring/shared/bracket.js.map +1 -0
  22. package/dist/domain/authoring/shared/types.d.ts +12 -0
  23. package/dist/domain/authoring/shared/types.js +2 -0
  24. package/dist/domain/authoring/shared/types.js.map +1 -0
  25. package/dist/domain/authoring/types.d.ts +2 -87
  26. package/dist/domain/authoring/types.js +2 -1
  27. package/dist/domain/authoring/types.js.map +1 -1
  28. package/dist/domain/authoring/v3/apply.d.ts +33 -0
  29. package/dist/domain/authoring/v3/apply.js +784 -0
  30. package/dist/domain/authoring/v3/apply.js.map +1 -0
  31. package/dist/domain/authoring/v3/export.d.ts +7 -0
  32. package/dist/domain/authoring/v3/export.js +85 -0
  33. package/dist/domain/authoring/v3/export.js.map +1 -0
  34. package/dist/domain/authoring/v3/parser.d.ts +3 -0
  35. package/dist/domain/authoring/v3/parser.js +823 -0
  36. package/dist/domain/authoring/v3/parser.js.map +1 -0
  37. package/dist/domain/authoring/v3/serializer.d.ts +2 -0
  38. package/dist/domain/authoring/v3/serializer.js +244 -0
  39. package/dist/domain/authoring/v3/serializer.js.map +1 -0
  40. package/dist/domain/authoring/v3/types.d.ts +76 -0
  41. package/dist/domain/authoring/v3/types.js +2 -0
  42. package/dist/domain/authoring/v3/types.js.map +1 -0
  43. package/dist/domain/authoring/v4/apply.d.ts +40 -0
  44. package/dist/domain/authoring/v4/apply.js +451 -0
  45. package/dist/domain/authoring/v4/apply.js.map +1 -0
  46. package/dist/domain/authoring/v4/parser.d.ts +2 -0
  47. package/dist/domain/authoring/v4/parser.js +729 -0
  48. package/dist/domain/authoring/v4/parser.js.map +1 -0
  49. package/dist/domain/authoring/v4/serializer.d.ts +6 -0
  50. package/dist/domain/authoring/v4/serializer.js +280 -0
  51. package/dist/domain/authoring/v4/serializer.js.map +1 -0
  52. package/dist/domain/authoring/v4/types.d.ts +50 -0
  53. package/dist/domain/authoring/v4/types.js +2 -0
  54. package/dist/domain/authoring/v4/types.js.map +1 -0
  55. package/dist/domain/ingest/apply-plan.d.ts +1 -1
  56. package/dist/domain/ingest/assembler.d.ts +9 -0
  57. package/dist/domain/ingest/assembler.js +98 -36
  58. package/dist/domain/ingest/assembler.js.map +1 -1
  59. package/dist/domain/ingest/asset-audit.d.ts +50 -0
  60. package/dist/domain/ingest/asset-audit.js +196 -0
  61. package/dist/domain/ingest/asset-audit.js.map +1 -0
  62. package/dist/domain/ingest/production-validation.d.ts +5 -4
  63. package/dist/domain/ingest/production-validation.js +10 -25
  64. package/dist/domain/ingest/production-validation.js.map +1 -1
  65. package/dist/domain/ingest/records.d.ts +1 -1
  66. package/dist/domain/ingest/records.js +1 -1
  67. package/dist/domain/ingest/records.js.map +1 -1
  68. package/dist/domain/ingest/serial-context.d.ts +1 -1
  69. package/dist/domain/ingest/validation.d.ts +1 -11
  70. package/dist/domain/ingest/validation.js +1 -199
  71. package/dist/domain/ingest/validation.js.map +1 -1
  72. package/dist/domain/ingest/video-apply.js +68 -45
  73. package/dist/domain/ingest/video-apply.js.map +1 -1
  74. package/dist/domain/script/address.d.ts +1 -32
  75. package/dist/domain/script/address.js +1 -144
  76. package/dist/domain/script/address.js.map +1 -1
  77. package/dist/domain/script/dispatch.d.ts +14 -0
  78. package/dist/domain/script/dispatch.js +47 -0
  79. package/dist/domain/script/dispatch.js.map +1 -0
  80. package/dist/domain/script/lookups.d.ts +1 -33
  81. package/dist/domain/script/lookups.js +1 -316
  82. package/dist/domain/script/lookups.js.map +1 -1
  83. package/dist/domain/script/parse.d.ts +1 -3
  84. package/dist/domain/script/parse.js +1 -164
  85. package/dist/domain/script/parse.js.map +1 -1
  86. package/dist/domain/script/patch/apply.d.ts +1 -2
  87. package/dist/domain/script/patch/apply.js +1 -30
  88. package/dist/domain/script/patch/apply.js.map +1 -1
  89. package/dist/domain/script/patch/helpers.d.ts +1 -17
  90. package/dist/domain/script/patch/helpers.js +1 -210
  91. package/dist/domain/script/patch/helpers.js.map +1 -1
  92. package/dist/domain/script/patch/inline-speaker.d.ts +1 -2
  93. package/dist/domain/script/patch/inline-speaker.js +1 -49
  94. package/dist/domain/script/patch/inline-speaker.js.map +1 -1
  95. package/dist/domain/script/patch/ops-action.d.ts +1 -12
  96. package/dist/domain/script/patch/ops-action.js +1 -366
  97. package/dist/domain/script/patch/ops-action.js.map +1 -1
  98. package/dist/domain/script/patch/ops-asset.d.ts +1 -14
  99. package/dist/domain/script/patch/ops-asset.js +1 -364
  100. package/dist/domain/script/patch/ops-asset.js.map +1 -1
  101. package/dist/domain/script/patch/ops-dialogue.d.ts +1 -2
  102. package/dist/domain/script/patch/ops-dialogue.js +1 -25
  103. package/dist/domain/script/patch/ops-dialogue.js.map +1 -1
  104. package/dist/domain/script/patch/ops-extend.d.ts +1 -8
  105. package/dist/domain/script/patch/ops-extend.js +1 -110
  106. package/dist/domain/script/patch/ops-extend.js.map +1 -1
  107. package/dist/domain/script/patch/ops-meta.d.ts +1 -5
  108. package/dist/domain/script/patch/ops-meta.js +1 -81
  109. package/dist/domain/script/patch/ops-meta.js.map +1 -1
  110. package/dist/domain/script/patch/ops-scene.d.ts +1 -6
  111. package/dist/domain/script/patch/ops-scene.js +1 -350
  112. package/dist/domain/script/patch/ops-scene.js.map +1 -1
  113. package/dist/domain/script/patch/ops-state.d.ts +1 -8
  114. package/dist/domain/script/patch/ops-state.js +1 -164
  115. package/dist/domain/script/patch/ops-state.js.map +1 -1
  116. package/dist/domain/script/patch/registry.d.ts +1 -2
  117. package/dist/domain/script/patch/registry.js +1 -52
  118. package/dist/domain/script/patch/registry.js.map +1 -1
  119. package/dist/domain/script/patch/types.d.ts +1 -10
  120. package/dist/domain/script/patch/types.js +1 -1
  121. package/dist/domain/script/patch/types.js.map +1 -1
  122. package/dist/domain/script/refs.d.ts +1 -4
  123. package/dist/domain/script/refs.js +1 -63
  124. package/dist/domain/script/refs.js.map +1 -1
  125. package/dist/domain/script/scene-refs.d.ts +1 -3
  126. package/dist/domain/script/scene-refs.js +1 -34
  127. package/dist/domain/script/scene-refs.js.map +1 -1
  128. package/dist/domain/script/schema.d.ts +1 -6
  129. package/dist/domain/script/schema.js +1 -55
  130. package/dist/domain/script/schema.js.map +1 -1
  131. package/dist/domain/script/selector.d.ts +1 -45
  132. package/dist/domain/script/selector.js +1 -184
  133. package/dist/domain/script/selector.js.map +1 -1
  134. package/dist/domain/script/shared/regex.d.ts +2 -0
  135. package/dist/domain/script/shared/regex.js +7 -0
  136. package/dist/domain/script/shared/regex.js.map +1 -0
  137. package/dist/domain/script/shared/types.d.ts +18 -0
  138. package/dist/domain/script/shared/types.js +9 -0
  139. package/dist/domain/script/shared/types.js.map +1 -0
  140. package/dist/domain/script/shared/validation.d.ts +10 -0
  141. package/dist/domain/script/shared/validation.js +2 -0
  142. package/dist/domain/script/shared/validation.js.map +1 -0
  143. package/dist/domain/script/types.d.ts +1 -123
  144. package/dist/domain/script/types.js +1 -8
  145. package/dist/domain/script/types.js.map +1 -1
  146. package/dist/domain/script/v3/address.d.ts +32 -0
  147. package/dist/domain/script/v3/address.js +145 -0
  148. package/dist/domain/script/v3/address.js.map +1 -0
  149. package/dist/domain/script/v3/lookups.d.ts +33 -0
  150. package/dist/domain/script/v3/lookups.js +317 -0
  151. package/dist/domain/script/v3/lookups.js.map +1 -0
  152. package/dist/domain/script/v3/ordinal.d.ts +8 -0
  153. package/dist/domain/script/v3/ordinal.js +92 -0
  154. package/dist/domain/script/v3/ordinal.js.map +1 -0
  155. package/dist/domain/script/v3/parse.d.ts +3 -0
  156. package/dist/domain/script/v3/parse.js +165 -0
  157. package/dist/domain/script/v3/parse.js.map +1 -0
  158. package/dist/domain/script/v3/patch/apply.d.ts +2 -0
  159. package/dist/domain/script/v3/patch/apply.js +31 -0
  160. package/dist/domain/script/v3/patch/apply.js.map +1 -0
  161. package/dist/domain/script/v3/patch/helpers.d.ts +17 -0
  162. package/dist/domain/script/v3/patch/helpers.js +211 -0
  163. package/dist/domain/script/v3/patch/helpers.js.map +1 -0
  164. package/dist/domain/script/v3/patch/inline-speaker.d.ts +2 -0
  165. package/dist/domain/script/v3/patch/inline-speaker.js +50 -0
  166. package/dist/domain/script/v3/patch/inline-speaker.js.map +1 -0
  167. package/dist/domain/script/v3/patch/ops-action.d.ts +12 -0
  168. package/dist/domain/script/v3/patch/ops-action.js +367 -0
  169. package/dist/domain/script/v3/patch/ops-action.js.map +1 -0
  170. package/dist/domain/script/v3/patch/ops-asset.d.ts +14 -0
  171. package/dist/domain/script/v3/patch/ops-asset.js +365 -0
  172. package/dist/domain/script/v3/patch/ops-asset.js.map +1 -0
  173. package/dist/domain/script/v3/patch/ops-dialogue.d.ts +2 -0
  174. package/dist/domain/script/v3/patch/ops-dialogue.js +26 -0
  175. package/dist/domain/script/v3/patch/ops-dialogue.js.map +1 -0
  176. package/dist/domain/script/v3/patch/ops-extend.d.ts +8 -0
  177. package/dist/domain/script/v3/patch/ops-extend.js +111 -0
  178. package/dist/domain/script/v3/patch/ops-extend.js.map +1 -0
  179. package/dist/domain/script/v3/patch/ops-meta.d.ts +5 -0
  180. package/dist/domain/script/v3/patch/ops-meta.js +82 -0
  181. package/dist/domain/script/v3/patch/ops-meta.js.map +1 -0
  182. package/dist/domain/script/v3/patch/ops-scene.d.ts +6 -0
  183. package/dist/domain/script/v3/patch/ops-scene.js +351 -0
  184. package/dist/domain/script/v3/patch/ops-scene.js.map +1 -0
  185. package/dist/domain/script/v3/patch/ops-state.d.ts +8 -0
  186. package/dist/domain/script/v3/patch/ops-state.js +165 -0
  187. package/dist/domain/script/v3/patch/ops-state.js.map +1 -0
  188. package/dist/domain/script/v3/patch/registry.d.ts +2 -0
  189. package/dist/domain/script/v3/patch/registry.js +53 -0
  190. package/dist/domain/script/v3/patch/registry.js.map +1 -0
  191. package/dist/domain/script/v3/patch/types.d.ts +10 -0
  192. package/dist/domain/script/v3/patch/types.js +2 -0
  193. package/dist/domain/script/v3/patch/types.js.map +1 -0
  194. package/dist/domain/script/v3/refs.d.ts +4 -0
  195. package/dist/domain/script/v3/refs.js +64 -0
  196. package/dist/domain/script/v3/refs.js.map +1 -0
  197. package/dist/domain/script/v3/scene-refs.d.ts +3 -0
  198. package/dist/domain/script/v3/scene-refs.js +35 -0
  199. package/dist/domain/script/v3/scene-refs.js.map +1 -0
  200. package/dist/domain/script/v3/schema.d.ts +6 -0
  201. package/dist/domain/script/v3/schema.js +56 -0
  202. package/dist/domain/script/v3/schema.js.map +1 -0
  203. package/dist/domain/script/v3/selector.d.ts +44 -0
  204. package/dist/domain/script/v3/selector.js +180 -0
  205. package/dist/domain/script/v3/selector.js.map +1 -0
  206. package/dist/domain/script/v3/types.d.ts +106 -0
  207. package/dist/domain/script/v3/types.js +2 -0
  208. package/dist/domain/script/v3/types.js.map +1 -0
  209. package/dist/domain/script/v3/validation.d.ts +3 -0
  210. package/dist/domain/script/v3/validation.js +200 -0
  211. package/dist/domain/script/v3/validation.js.map +1 -0
  212. package/dist/domain/script/v4/address.d.ts +61 -0
  213. package/dist/domain/script/v4/address.js +100 -0
  214. package/dist/domain/script/v4/address.js.map +1 -0
  215. package/dist/domain/script/v4/factory.d.ts +2 -0
  216. package/dist/domain/script/v4/factory.js +13 -0
  217. package/dist/domain/script/v4/factory.js.map +1 -0
  218. package/dist/domain/script/v4/from-v3.d.ts +29 -0
  219. package/dist/domain/script/v4/from-v3.js +307 -0
  220. package/dist/domain/script/v4/from-v3.js.map +1 -0
  221. package/dist/domain/script/v4/ids.d.ts +27 -0
  222. package/dist/domain/script/v4/ids.js +63 -0
  223. package/dist/domain/script/v4/ids.js.map +1 -0
  224. package/dist/domain/script/v4/ordinal.d.ts +3 -0
  225. package/dist/domain/script/v4/ordinal.js +67 -0
  226. package/dist/domain/script/v4/ordinal.js.map +1 -0
  227. package/dist/domain/script/v4/parse.d.ts +3 -0
  228. package/dist/domain/script/v4/parse.js +18 -0
  229. package/dist/domain/script/v4/parse.js.map +1 -0
  230. package/dist/domain/script/v4/patch/apply.d.ts +3 -0
  231. package/dist/domain/script/v4/patch/apply.js +24 -0
  232. package/dist/domain/script/v4/patch/apply.js.map +1 -0
  233. package/dist/domain/script/v4/patch/helpers.d.ts +32 -0
  234. package/dist/domain/script/v4/patch/helpers.js +139 -0
  235. package/dist/domain/script/v4/patch/helpers.js.map +1 -0
  236. package/dist/domain/script/v4/patch/ops-action.d.ts +13 -0
  237. package/dist/domain/script/v4/patch/ops-action.js +379 -0
  238. package/dist/domain/script/v4/patch/ops-action.js.map +1 -0
  239. package/dist/domain/script/v4/patch/ops-asset.d.ts +17 -0
  240. package/dist/domain/script/v4/patch/ops-asset.js +617 -0
  241. package/dist/domain/script/v4/patch/ops-asset.js.map +1 -0
  242. package/dist/domain/script/v4/patch/ops-extend.d.ts +11 -0
  243. package/dist/domain/script/v4/patch/ops-extend.js +86 -0
  244. package/dist/domain/script/v4/patch/ops-extend.js.map +1 -0
  245. package/dist/domain/script/v4/patch/ops-meta.d.ts +5 -0
  246. package/dist/domain/script/v4/patch/ops-meta.js +49 -0
  247. package/dist/domain/script/v4/patch/ops-meta.js.map +1 -0
  248. package/dist/domain/script/v4/patch/ops-scene-ref.d.ts +3 -0
  249. package/dist/domain/script/v4/patch/ops-scene-ref.js +98 -0
  250. package/dist/domain/script/v4/patch/ops-scene-ref.js.map +1 -0
  251. package/dist/domain/script/v4/patch/ops-structure.d.ts +6 -0
  252. package/dist/domain/script/v4/patch/ops-structure.js +236 -0
  253. package/dist/domain/script/v4/patch/ops-structure.js.map +1 -0
  254. package/dist/domain/script/v4/patch/registry.d.ts +2 -0
  255. package/dist/domain/script/v4/patch/registry.js +50 -0
  256. package/dist/domain/script/v4/patch/registry.js.map +1 -0
  257. package/dist/domain/script/v4/patch/schema.d.ts +7 -0
  258. package/dist/domain/script/v4/patch/schema.js +75 -0
  259. package/dist/domain/script/v4/patch/schema.js.map +1 -0
  260. package/dist/domain/script/v4/patch/types.d.ts +10 -0
  261. package/dist/domain/script/v4/patch/types.js +2 -0
  262. package/dist/domain/script/v4/patch/types.js.map +1 -0
  263. package/dist/domain/script/v4/selector.d.ts +11 -0
  264. package/dist/domain/script/v4/selector.js +125 -0
  265. package/dist/domain/script/v4/selector.js.map +1 -0
  266. package/dist/domain/script/v4/types.d.ts +120 -0
  267. package/dist/domain/script/v4/types.js +2 -0
  268. package/dist/domain/script/v4/types.js.map +1 -0
  269. package/dist/domain/script/v4/validation.d.ts +2 -0
  270. package/dist/domain/script/v4/validation.js +378 -0
  271. package/dist/domain/script/v4/validation.js.map +1 -0
  272. package/dist/help-text.js +146 -114
  273. package/dist/help-text.js.map +1 -1
  274. package/dist/llm/config.js +2 -0
  275. package/dist/llm/config.js.map +1 -1
  276. package/dist/llm/registry.d.ts +1 -0
  277. package/dist/llm/registry.js +3 -0
  278. package/dist/llm/registry.js.map +1 -1
  279. package/dist/llm/tasks/ingest/asset-audit.d.ts +6 -0
  280. package/dist/llm/tasks/ingest/asset-audit.js +164 -0
  281. package/dist/llm/tasks/ingest/asset-audit.js.map +1 -0
  282. package/dist/llm/tasks/ingest/asset-curate.d.ts +1 -1
  283. package/dist/llm/types.d.ts +1 -1
  284. package/dist/llm/types.js.map +1 -1
  285. package/dist/usecases/ingest/command.js +1 -1
  286. package/dist/usecases/ingest/final-asset-audit.d.ts +39 -0
  287. package/dist/usecases/ingest/final-asset-audit.js +88 -0
  288. package/dist/usecases/ingest/final-asset-audit.js.map +1 -0
  289. package/dist/usecases/ingest/pipeline.js +62 -11
  290. package/dist/usecases/ingest/pipeline.js.map +1 -1
  291. package/dist/usecases/ingest/serial-govern.d.ts +2 -1
  292. package/dist/usecases/ingest/serial-govern.js +11 -4
  293. package/dist/usecases/ingest/serial-govern.js.map +1 -1
  294. package/dist/usecases/ingest/video-pipeline.js +100 -14
  295. package/dist/usecases/ingest/video-pipeline.js.map +1 -1
  296. package/dist/usecases/ingest/view-server.js +2 -2
  297. package/dist/usecases/ingest/view-server.js.map +1 -1
  298. package/dist/usecases/script/actions.js +101 -5
  299. package/dist/usecases/script/actions.js.map +1 -1
  300. package/dist/usecases/script/actors.js +16 -7
  301. package/dist/usecases/script/actors.js.map +1 -1
  302. package/dist/usecases/script/alias.js +7 -6
  303. package/dist/usecases/script/alias.js.map +1 -1
  304. package/dist/usecases/script/assets.js +18 -2
  305. package/dist/usecases/script/assets.js.map +1 -1
  306. package/dist/usecases/script/audit-assets.d.ts +4 -0
  307. package/dist/usecases/script/audit-assets.js +40 -0
  308. package/dist/usecases/script/audit-assets.js.map +1 -0
  309. package/dist/usecases/script/command-constraints.d.ts +36 -0
  310. package/dist/usecases/script/command-constraints.js +115 -0
  311. package/dist/usecases/script/command-constraints.js.map +1 -0
  312. package/dist/usecases/script/context.js +31 -4
  313. package/dist/usecases/script/context.js.map +1 -1
  314. package/dist/usecases/script/create.js +2 -2
  315. package/dist/usecases/script/create.js.map +1 -1
  316. package/dist/usecases/script/delete.js +6 -3
  317. package/dist/usecases/script/delete.js.map +1 -1
  318. package/dist/usecases/script/describe.js +7 -4
  319. package/dist/usecases/script/describe.js.map +1 -1
  320. package/dist/usecases/script/dialogue.js +15 -5
  321. package/dist/usecases/script/dialogue.js.map +1 -1
  322. package/dist/usecases/script/dispatch.d.ts +3 -0
  323. package/dist/usecases/script/dispatch.js +10 -0
  324. package/dist/usecases/script/dispatch.js.map +1 -0
  325. package/dist/usecases/script/do.js +74 -11
  326. package/dist/usecases/script/do.js.map +1 -1
  327. package/dist/usecases/script/emotion.js +14 -3
  328. package/dist/usecases/script/emotion.js.map +1 -1
  329. package/dist/usecases/script/episodes.js +15 -4
  330. package/dist/usecases/script/episodes.js.map +1 -1
  331. package/dist/usecases/script/export-authoring.js +35 -11
  332. package/dist/usecases/script/export-authoring.js.map +1 -1
  333. package/dist/usecases/script/extend.js +23 -15
  334. package/dist/usecases/script/extend.js.map +1 -1
  335. package/dist/usecases/script/ids.js +53 -10
  336. package/dist/usecases/script/ids.js.map +1 -1
  337. package/dist/usecases/script/insert.js +74 -38
  338. package/dist/usecases/script/insert.js.map +1 -1
  339. package/dist/usecases/script/lib.d.ts +50 -1
  340. package/dist/usecases/script/lib.js +599 -61
  341. package/dist/usecases/script/lib.js.map +1 -1
  342. package/dist/usecases/script/locations.js +16 -7
  343. package/dist/usecases/script/locations.js.map +1 -1
  344. package/dist/usecases/script/merge.js +8 -5
  345. package/dist/usecases/script/merge.js.map +1 -1
  346. package/dist/usecases/script/move.js +24 -5
  347. package/dist/usecases/script/move.js.map +1 -1
  348. package/dist/usecases/script/parenthetical.d.ts +3 -0
  349. package/dist/usecases/script/parenthetical.js +55 -0
  350. package/dist/usecases/script/parenthetical.js.map +1 -0
  351. package/dist/usecases/script/props.js +16 -7
  352. package/dist/usecases/script/props.js.map +1 -1
  353. package/dist/usecases/script/refs.js +44 -0
  354. package/dist/usecases/script/refs.js.map +1 -1
  355. package/dist/usecases/script/rename.js +7 -4
  356. package/dist/usecases/script/rename.js.map +1 -1
  357. package/dist/usecases/script/scenes.js +32 -6
  358. package/dist/usecases/script/scenes.js.map +1 -1
  359. package/dist/usecases/script/script-patch.js +180 -16
  360. package/dist/usecases/script/script-patch.js.map +1 -1
  361. package/dist/usecases/script/session.d.ts +3 -0
  362. package/dist/usecases/script/session.js +25 -5
  363. package/dist/usecases/script/session.js.map +1 -1
  364. package/dist/usecases/script/split.js +12 -6
  365. package/dist/usecases/script/split.js.map +1 -1
  366. package/dist/usecases/script/states.js +45 -1
  367. package/dist/usecases/script/states.js.map +1 -1
  368. package/dist/usecases/script/synopsis.js +11 -4
  369. package/dist/usecases/script/synopsis.js.map +1 -1
  370. package/dist/usecases/script/v3/mutations.d.ts +2 -0
  371. package/dist/usecases/script/v3/mutations.js +5 -0
  372. package/dist/usecases/script/v3/mutations.js.map +1 -0
  373. package/dist/usecases/script/v4/mutations.d.ts +2 -0
  374. package/dist/usecases/script/v4/mutations.js +6 -0
  375. package/dist/usecases/script/v4/mutations.js.map +1 -0
  376. package/dist/usecases/script/v4/queries.d.ts +14 -0
  377. package/dist/usecases/script/v4/queries.js +154 -0
  378. package/dist/usecases/script/v4/queries.js.map +1 -0
  379. package/dist/usecases/script/working-copy.js +3 -3
  380. package/dist/usecases/script/working-copy.js.map +1 -1
  381. package/dist/usecases/script/write-authoring.js +99 -5
  382. package/dist/usecases/script/write-authoring.js.map +1 -1
  383. package/package.json +3 -2
  384. package/skills/scriptctl/SKILL.md +126 -283
  385. package/skills/scriptctl/references/atomic-edit-workflow.md +45 -0
  386. package/skills/scriptctl/references/bulk-authoring.md +35 -154
  387. package/skills/scriptctl/references/ingest-workflow.md +12 -11
  388. package/skills/scriptctl/references/production-writing-standard.md +38 -67
  389. package/skills/scriptctl/references/state-reference-repair.md +19 -42
  390. package/skills/scriptctl/references/atomic-write-workflow.md +0 -176
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/llm/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type AssetAuditIssue, type AssetAuditSnapshot } from "../../../domain/ingest/asset-audit.js";
2
+ import type { LlmTaskExecutor } from "../../types.js";
3
+ export declare const ASSET_AUDIT_SYSTEM: string;
4
+ export declare function formatAssetAuditInput(snapshot: AssetAuditSnapshot): string;
5
+ export declare function parseAssetAuditResponse(raw: string, snapshot: AssetAuditSnapshot): AssetAuditIssue[];
6
+ export declare function runAssetAudit(executor: LlmTaskExecutor, snapshot: AssetAuditSnapshot, signal?: AbortSignal): Promise<AssetAuditIssue[]>;
@@ -0,0 +1,164 @@
1
+ // Whole-script semantic asset audit. Unlike per-episode extraction, this task
2
+ // sees the final global roster and only reports suspected duplicates/anomalies;
3
+ // it never mutates or merges the script by itself.
4
+ const ASSET_INPUT_COLUMNS = ["id", "name", "aliases", "importance", "refs", "episodes", "scenes", "format_key", "description", "evidence_refs"];
5
+ const STATE_INPUT_COLUMNS = ["address", "name", "refs", "episodes", "scenes", "frequency", "format_key", "description", "evidence_refs"];
6
+ export const ASSET_AUDIT_SYSTEM = [
7
+ "你正在对一部已经完成解析的完整剧本进行全局资产一致性审计。目标是发现同一实体被重复建档、同一稳定视觉状态被重复拆分,以及值得人工重点复核的低频异常状态。",
8
+ "输入是完整资产登记的紧凑行式快照,不是 JSON。第一行 ASSET_AUDIT_SNAPSHOT_V1 是协议版本;title|<剧名> 是剧名;A_COLUMNS/S_COLUMNS 是列定义,不是资产数据;[actors:N]、[locations:N]、[props:N] 分别开始人物、地点、道具分区,N 是该分区资产数并决定其中 A 行的资产类型。",
9
+ `A 行表示一项资产。去掉开头的 A 后,各列从左到右固定为:${ASSET_INPUT_COLUMNS.join(" | ")}。id 是资产 ID;name 是规范名;aliases 是别名列表;importance 是重要度;refs/episodes/scenes 是引用次数、覆盖集数、覆盖场数;format_key 是仅消除格式噪声的名称键;description 是资产描述;evidence_refs 是少量实际引用位置。`,
10
+ `S 行表示状态并隶属于同一分区中紧邻其上的 A 行。去掉开头的 S 后,各列从左到右固定为:${STATE_INPUT_COLUMNS.join(" | ")}。address 是 <asset_id>/<state_id> 形式的全局状态地址;name 是状态名;refs/episodes/scenes 含义同上;frequency 为 unused、singleton 或 -;description 是状态视觉描述;evidence_refs 是该状态的实际引用位置。`,
11
+ "解析规则:只在未转义的 | 处分列,只在未转义的 ; 处分隔 aliases/evidence_refs 列表;- 表示空值或无频率标记;\\|、\\;、\\n、\\\\ 分别表示字段内容中的竖线、分号、换行和反斜杠。不要把 A_COLUMNS/S_COLUMNS 当作实体,也不要把 S 行跨资产归属。",
12
+ "format_key 只折叠空白、标点、大小写、全半角等格式差异,是召回证据而不是同一实体的最终结论。",
13
+ "",
14
+ "一、人物身份一致性",
15
+ "检查同一个人物是否因名称表达不同被登记成多个 actor。差异包括但不限于:空格、标点、大小写、全半角、简繁体;全名、简称、昵称、称谓、职位、旧名、化名、译名、音译;分词差异、轻微错别字、转录误差;名称附带身份、情绪、对白或状态说明;前期身份未明、后期又以真名重新登记。",
16
+ "例如『林有粮』和『林 有粮』只是格式不同,但不能只按名称相似度合并。必须综合人物关系、剧情身份、外貌描述、行为轨迹、对白归属、出现位置和跨集连续性判断。姓名相似、身份相近或经常同框的不同人物绝不能误合。",
17
+ "",
18
+ "二、视觉状态一致性",
19
+ "在同一个人物、地点或道具内部,检查是否因描述方式、颜色粒度、措辞详略或观察角度不同,把同一个稳定视觉状态拆成多个 state。重点关注同义/近义状态、同一套服装被重新命名、仅光线或局部细节造成的差异,以及状态名混入情绪、动作或场景说明。",
20
+ "判断标准不是名称是否一致,而是是否真的需要分别制作独立、可复用的视觉参考资产。视觉主体和持续外观一致时建议归并;明确换装、变身、损毁、持续伤势或其他持续性变化则保持独立。",
21
+ "",
22
+ "三、低频与异常状态",
23
+ "重点检查非 default 且未被引用、只在一个场景出现、出现后立即恢复原状态、与前后状态几乎相同或实际属于情绪/姿势/动作/光线/瞬时过程的状态。低频不等于错误:明确对应关键换装、剧情事件、持续伤势、变身或必要视觉变化时应保留,不要输出为问题。证据不足时 action=review。",
24
+ "",
25
+ "四、地点与道具一致性",
26
+ "检查同一个物理地点或同一件具体道具是否因名称、前后缀、归属描述、简称、简繁体、转录差异或观察角度不同而重复登记。区分同一地点的不同名称与同一建筑中的不同独立空间,也区分同一件具体道具与同类但实际不同的多件道具。",
27
+ "这里检查和建议合并的是重复 location 资产,不是 scene。相同地点可以承载多个不同剧情场次,不能因为地点相同就合并 scene。",
28
+ "",
29
+ "五、审计边界与输出",
30
+ "只引用输入中真实存在的 asset/state id;只输出确实可疑、需要合并/删除/人工确认的项目,确认合理的资产或低频状态不要输出。不要直接修改剧本。",
31
+ "每个问题必须给出具体证据和操作建议。高置信度仍只是建议;存在冲突或无法确认时 action=review、confidence=low 或 medium。",
32
+ "只输出一个 JSON 对象,不要 Markdown,不要解释文字。格式:",
33
+ "state_ids 必须填写输入里的完整状态 address(<asset_id>/<state_id>),不能只写可能在多个资产下重复的局部 state_id。",
34
+ '{"issues":[{"type":"duplicate_actor|duplicate_location|duplicate_prop|duplicate_state|suspicious_singleton_state|unused_state|needs_human_review","asset_ids":["真实资产id"],"state_ids":["真实状态address"],"names":["相关名称"],"evidence":"判断依据","recommendation":"建议如何处理","suggested_survivor":"建议保留的资产id或状态address;没有则为null","action":"merge|delete|review","confidence":"high|medium|low"}]}',
35
+ "没有问题时输出 {\"issues\":[]}。",
36
+ ].join("\n");
37
+ const ISSUE_TYPES = new Set([
38
+ "duplicate_actor",
39
+ "duplicate_location",
40
+ "duplicate_prop",
41
+ "duplicate_state",
42
+ "suspicious_singleton_state",
43
+ "unused_state",
44
+ "needs_human_review",
45
+ ]);
46
+ const ACTIONS = new Set(["merge", "delete", "review"]);
47
+ const CONFIDENCES = new Set(["high", "medium", "low"]);
48
+ // The roster can be large. This format declares column names once instead of
49
+ // repeating JSON keys for every asset/state, while preserving readable evidence.
50
+ function compactField(value) {
51
+ const trimmed = value.trim();
52
+ if (!trimmed)
53
+ return "-";
54
+ return trimmed
55
+ .replace(/\\/g, "\\\\")
56
+ .replace(/\r\n?|\n/g, "\\n")
57
+ .replace(/\|/g, "\\|")
58
+ .replace(/;/g, "\\;");
59
+ }
60
+ function compactList(values) {
61
+ return values.length > 0 ? values.map(compactField).join(";") : "-";
62
+ }
63
+ export function formatAssetAuditInput(snapshot) {
64
+ const lines = [
65
+ "ASSET_AUDIT_SNAPSHOT_V1",
66
+ `title|${compactField(snapshot.title)}`,
67
+ `A_COLUMNS|${ASSET_INPUT_COLUMNS.join("|")}`,
68
+ `S_COLUMNS|${STATE_INPUT_COLUMNS.join("|")}`,
69
+ ];
70
+ const appendSection = (name, assets) => {
71
+ lines.push(`[${name}:${assets.length}]`);
72
+ for (const asset of assets) {
73
+ lines.push([
74
+ "A",
75
+ compactField(asset.id),
76
+ compactField(asset.name),
77
+ compactList(asset.aliases),
78
+ compactField(asset.importance),
79
+ String(asset.reference_count),
80
+ String(asset.episode_count),
81
+ String(asset.scene_count),
82
+ compactField(asset.format_key),
83
+ compactField(asset.description),
84
+ compactList(asset.references),
85
+ ].join("|"));
86
+ for (const state of asset.states) {
87
+ lines.push([
88
+ "S",
89
+ compactField(state.address),
90
+ compactField(state.state_name),
91
+ String(state.reference_count),
92
+ String(state.episode_count),
93
+ String(state.scene_count),
94
+ state.frequency_flag ?? "-",
95
+ compactField(state.format_key),
96
+ compactField(state.description),
97
+ compactList(state.references),
98
+ ].join("|"));
99
+ }
100
+ }
101
+ };
102
+ appendSection("actors", snapshot.actors);
103
+ appendSection("locations", snapshot.locations);
104
+ appendSection("props", snapshot.props);
105
+ return lines.join("\n");
106
+ }
107
+ const isObj = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
108
+ const asArr = (value) => Array.isArray(value) ? value : [];
109
+ const asStr = (value) => typeof value === "string" ? value.trim() : "";
110
+ const strings = (value) => [...new Set(asArr(value).map(asStr).filter(Boolean))];
111
+ function parseJsonObject(raw) {
112
+ const text = raw.trim();
113
+ if (!text)
114
+ return { issues: [] };
115
+ const unfenced = text.startsWith("```")
116
+ ? text.replace(/^```(?:json)?\s*/i, "").replace(/\s*```$/, "")
117
+ : text;
118
+ return JSON.parse(unfenced);
119
+ }
120
+ export function parseAssetAuditResponse(raw, snapshot) {
121
+ const parsed = parseJsonObject(raw);
122
+ if (!isObj(parsed))
123
+ throw new Error("asset audit response must be a JSON object");
124
+ const validAssetIds = new Set([...snapshot.actors, ...snapshot.locations, ...snapshot.props].map((asset) => asset.id));
125
+ const validStateIds = new Set([...snapshot.actors, ...snapshot.locations, ...snapshot.props].flatMap((asset) => asset.states.map((state) => state.address)));
126
+ const issues = [];
127
+ for (const rawIssue of asArr(parsed.issues)) {
128
+ if (!isObj(rawIssue))
129
+ continue;
130
+ const type = asStr(rawIssue.type);
131
+ const action = asStr(rawIssue.action);
132
+ const confidence = asStr(rawIssue.confidence);
133
+ if (!ISSUE_TYPES.has(type) || !ACTIONS.has(action) || !CONFIDENCES.has(confidence))
134
+ continue;
135
+ const assetIds = strings(rawIssue.asset_ids).filter((id) => validAssetIds.has(id));
136
+ const stateIds = strings(rawIssue.state_ids).filter((id) => validStateIds.has(id));
137
+ if (assetIds.length === 0 && stateIds.length === 0)
138
+ continue;
139
+ const survivor = asStr(rawIssue.suggested_survivor);
140
+ const suggestedSurvivor = survivor && (validAssetIds.has(survivor) || validStateIds.has(survivor)) ? survivor : null;
141
+ issues.push({
142
+ type,
143
+ asset_ids: assetIds,
144
+ state_ids: stateIds,
145
+ names: strings(rawIssue.names),
146
+ evidence: asStr(rawIssue.evidence),
147
+ recommendation: asStr(rawIssue.recommendation),
148
+ suggested_survivor: suggestedSurvivor,
149
+ action,
150
+ confidence,
151
+ });
152
+ }
153
+ return issues;
154
+ }
155
+ export async function runAssetAudit(executor, snapshot, signal) {
156
+ const response = await executor.generateText("ingest.asset-audit", {
157
+ system: ASSET_AUDIT_SYSTEM,
158
+ user: formatAssetAuditInput(snapshot),
159
+ responseFormat: "json_object",
160
+ ...(signal ? { signal } : {}),
161
+ });
162
+ return parseAssetAuditResponse(response.text, snapshot);
163
+ }
164
+ //# sourceMappingURL=asset-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-audit.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/asset-audit.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,mDAAmD;AAWnD,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAChJ,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAEzI,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,8EAA8E;IAC9E,sLAAsL;IACtL,iCAAiC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,4JAA4J;IAC5N,iDAAiD,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,gKAAgK;IAChP,0JAA0J;IAC1J,qDAAqD;IACrD,EAAE;IACF,WAAW;IACX,yIAAyI;IACzI,uGAAuG;IACvG,EAAE;IACF,WAAW;IACX,wHAAwH;IACxH,uFAAuF;IACvF,EAAE;IACF,WAAW;IACX,iJAAiJ;IACjJ,EAAE;IACF,YAAY;IACZ,2GAA2G;IAC3G,wEAAwE;IACxE,EAAE;IACF,WAAW;IACX,+EAA+E;IAC/E,+EAA+E;IAC/E,sCAAsC;IACtC,mFAAmF;IACnF,wXAAwX;IACxX,0BAA0B;CAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAG,IAAI,GAAG,CAAsB;IAC/C,iBAAiB;IACjB,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,4BAA4B;IAC5B,cAAc;IACd,oBAAoB;CACrB,CAAC,CAAC;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAE7E,6EAA6E;AAC7E,iFAAiF;AACjF,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,OAAO,OAAO;SACX,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,MAAgB;IACnC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAA4B;IAChE,MAAM,KAAK,GAAG;QACZ,yBAAyB;QACzB,SAAS,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACvC,aAAa,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC5C,aAAa,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KAC7C,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,IAAsC,EAAE,MAAuC,EAAQ,EAAE;QAC9G,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG;gBACH,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC1B,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;gBACzB,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBAC9B,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/B,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACb,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG;oBACH,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC3B,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;oBAC7B,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;oBACzB,KAAK,CAAC,cAAc,IAAI,GAAG;oBAC3B,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;oBAC9B,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;oBAC/B,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;iBAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzI,MAAM,KAAK,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/E,MAAM,KAAK,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxF,MAAM,OAAO,GAAG,CAAC,KAAc,EAAY,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpG,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QAC9D,CAAC,CAAC,IAAI,CAAC;IACT,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,QAA4B;IAC/E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7J,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAwB,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAqB,CAAC;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAyB,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,SAAS;QAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QACrH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC9C,kBAAkB,EAAE,iBAAiB;YACrC,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAyB,EAAE,QAA4B,EAAE,MAAoB;IAC/G,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE;QACjE,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC;QACrC,cAAc,EAAE,aAAa;QAC7B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Importance } from "../../../domain/script/types.js";
1
+ import type { Importance } from "../../../domain/script/shared/types.js";
2
2
  import type { LlmTaskExecutor } from "../../types.js";
3
3
  export type CurateItem = {
4
4
  id: string;
@@ -1,5 +1,5 @@
1
1
  export type LlmProtocol = "anthropic" | "openai-compatible" | "google-gemini";
2
- export type LlmTaskId = "direct.episode-titles" | "direct.batch-extract" | "direct.episode-synopsis" | "direct.synopsis-reduction" | "direct.script-synopsis" | "direct.asset-grouping" | "direct.asset-curation" | "direct.asset-curation-audit" | "direct.location-canonicalization" | "direct.state-curation" | "direct.state-binding" | "metadata.global" | "metadata.descriptions" | "synopsis.chunk" | "synopsis.episode" | "synopsis.arc" | "synopsis.script-overview" | "ingest.body-start" | "ingest.arc-summary" | "ingest.text-normalize" | "ingest.episode-assets" | "ingest.name-fix" | "ingest.mention-resolve" | "ingest.asset-extract" | "ingest.asset-curate" | "ingest.asset-recall" | "ingest.asset-refine" | "ingest.state-reconcile" | "ingest.speaker-audit" | "ingest.video-serial";
2
+ export type LlmTaskId = "direct.episode-titles" | "direct.batch-extract" | "direct.episode-synopsis" | "direct.synopsis-reduction" | "direct.script-synopsis" | "direct.asset-grouping" | "direct.asset-curation" | "direct.asset-curation-audit" | "direct.location-canonicalization" | "direct.state-curation" | "direct.state-binding" | "metadata.global" | "metadata.descriptions" | "synopsis.chunk" | "synopsis.episode" | "synopsis.arc" | "synopsis.script-overview" | "ingest.body-start" | "ingest.arc-summary" | "ingest.text-normalize" | "ingest.episode-assets" | "ingest.name-fix" | "ingest.mention-resolve" | "ingest.asset-extract" | "ingest.asset-curate" | "ingest.asset-recall" | "ingest.asset-refine" | "ingest.state-reconcile" | "ingest.asset-audit" | "ingest.speaker-audit" | "ingest.video-serial";
3
3
  export type LlmTaskMode = "text" | "tool" | "video";
4
4
  export type JsonSchema = Record<string, unknown>;
5
5
  export interface TextGenerationRequest {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAgLA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAe;IACnB,SAAS,CAAU;IACnB,OAAO,CAAW;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,UAAuD,EAAE;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AAiLA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAe;IACnB,SAAS,CAAU;IACnB,OAAO,CAAW;IAE3B,YAAY,IAAkB,EAAE,OAAe,EAAE,UAAuD,EAAE;QACxG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  // `scriptctl ingest` — bare command (§4). Converts a txt/md/docx or video source
2
- // into a Script v3 workspace (script.jsonl → script.initial.json → script.json).
2
+ // into a Script v4 workspace (script.jsonl → script.initial.json → script.json).
3
3
  // Fully decoupled from `direct`: touches only ingest domain/infra + llm + common.
4
4
  import * as path from "node:path";
5
5
  import { CliError, EXIT_INPUT, EXIT_OK } from "../../common.js";
@@ -0,0 +1,39 @@
1
+ import { type AssetAuditIssue } from "../../domain/ingest/asset-audit.js";
2
+ import type { ValidationIssue } from "../../domain/ingest/validation.js";
3
+ import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
4
+ import type { LlmTaskExecutor } from "../../llm/types.js";
5
+ export declare const ASSET_AUDIT_VERSION = "1";
6
+ export interface AssetAuditReport {
7
+ audit_version: string;
8
+ script_hash: string;
9
+ created_at: string;
10
+ summary: {
11
+ issues: number;
12
+ high: number;
13
+ medium: number;
14
+ low: number;
15
+ };
16
+ issues: AssetAuditIssue[];
17
+ }
18
+ export declare function auditScriptAssets(script: Record<string, unknown>, executor: LlmTaskExecutor, signal?: AbortSignal): Promise<AssetAuditReport>;
19
+ export declare function auditScriptAssetsCached(opts: {
20
+ script: Record<string, unknown>;
21
+ executor: LlmTaskExecutor;
22
+ read: () => unknown;
23
+ write: (report: AssetAuditReport) => void;
24
+ exists: () => boolean;
25
+ force?: boolean;
26
+ signal?: AbortSignal;
27
+ }): Promise<{
28
+ report: AssetAuditReport;
29
+ reused: boolean;
30
+ }>;
31
+ export declare function auditWorkspaceScriptAssets(store: WorkspaceStore, script: Record<string, unknown>, executor: LlmTaskExecutor, opts?: {
32
+ force?: boolean;
33
+ signal?: AbortSignal;
34
+ }): Promise<{
35
+ report: AssetAuditReport;
36
+ reused: boolean;
37
+ }>;
38
+ export declare function assetAuditIssueLine(issue: AssetAuditIssue): string;
39
+ export declare function assetAuditWarnings(report: AssetAuditReport): ValidationIssue[];
@@ -0,0 +1,88 @@
1
+ // Shared final asset-audit boundary for text/video ingest and the standalone
2
+ // audit command. Results are content-addressed so an unchanged script reuses the
3
+ // sidecar while any edit makes the old result stale automatically.
4
+ import { buildAssetAuditSnapshot, } from "../../domain/ingest/asset-audit.js";
5
+ import { semanticScriptHash } from "../../infra/script-working-copy.js";
6
+ import { runAssetAudit } from "../../llm/tasks/ingest/asset-audit.js";
7
+ export const ASSET_AUDIT_VERSION = "1";
8
+ const isReport = (value, scriptHash) => {
9
+ if (value === null || typeof value !== "object" || Array.isArray(value))
10
+ return false;
11
+ const report = value;
12
+ return report.audit_version === ASSET_AUDIT_VERSION
13
+ && report.script_hash === scriptHash
14
+ && report.summary !== null
15
+ && typeof report.summary === "object"
16
+ && Array.isArray(report.issues);
17
+ };
18
+ function reportFor(scriptHash, issues) {
19
+ return {
20
+ audit_version: ASSET_AUDIT_VERSION,
21
+ script_hash: scriptHash,
22
+ created_at: new Date().toISOString(),
23
+ summary: {
24
+ issues: issues.length,
25
+ high: issues.filter((issue) => issue.confidence === "high").length,
26
+ medium: issues.filter((issue) => issue.confidence === "medium").length,
27
+ low: issues.filter((issue) => issue.confidence === "low").length,
28
+ },
29
+ issues,
30
+ };
31
+ }
32
+ export async function auditScriptAssets(script, executor, signal) {
33
+ const scriptHash = semanticScriptHash(script);
34
+ const snapshot = buildAssetAuditSnapshot(script);
35
+ const issues = await runAssetAudit(executor, snapshot, signal);
36
+ return reportFor(scriptHash, issues);
37
+ }
38
+ export async function auditScriptAssetsCached(opts) {
39
+ const scriptHash = semanticScriptHash(opts.script);
40
+ if (!opts.force && opts.exists()) {
41
+ try {
42
+ const cached = opts.read();
43
+ if (isReport(cached, scriptHash)) {
44
+ opts.executor.recordReuse("ingest.asset-audit");
45
+ return { report: cached, reused: true };
46
+ }
47
+ }
48
+ catch {
49
+ // A malformed/stale sidecar is disposable; regenerate it from script.json.
50
+ }
51
+ }
52
+ const report = await auditScriptAssets(opts.script, opts.executor, opts.signal);
53
+ opts.write(report);
54
+ return { report, reused: false };
55
+ }
56
+ export async function auditWorkspaceScriptAssets(store, script, executor, opts = {}) {
57
+ return auditScriptAssetsCached({
58
+ script,
59
+ executor,
60
+ read: () => store.readJson("asset-audit.json"),
61
+ write: (report) => store.writeJson("asset-audit.json", report),
62
+ exists: () => store.has("asset-audit.json"),
63
+ ...(opts.force ? { force: true } : {}),
64
+ ...(opts.signal ? { signal: opts.signal } : {}),
65
+ });
66
+ }
67
+ const TYPE_LABEL = {
68
+ duplicate_actor: "duplicate actor",
69
+ duplicate_location: "duplicate location",
70
+ duplicate_prop: "duplicate prop",
71
+ duplicate_state: "duplicate state",
72
+ suspicious_singleton_state: "suspicious singleton state",
73
+ unused_state: "unused state",
74
+ needs_human_review: "asset needs human review",
75
+ };
76
+ export function assetAuditIssueLine(issue) {
77
+ const targets = [...issue.asset_ids, ...issue.state_ids].join(", ") || "<unknown>";
78
+ const detail = issue.evidence || issue.recommendation || "review the referenced assets";
79
+ return `${TYPE_LABEL[issue.type]} [${targets}]: ${detail}`;
80
+ }
81
+ export function assetAuditWarnings(report) {
82
+ return report.issues.map((issue) => ({
83
+ code: `asset_audit_${issue.type}`,
84
+ path: "$",
85
+ message: `${assetAuditIssueLine(issue)}; action=${issue.action}; confidence=${issue.confidence}`,
86
+ }));
87
+ }
88
+ //# sourceMappingURL=final-asset-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"final-asset-audit.js","sourceRoot":"","sources":["../../../src/usecases/ingest/final-asset-audit.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,9 @@ import { parseJsonl } from "../../domain/ingest/jsonl-parser.js";
14
14
  import { validateProductionStandard } from "../../domain/ingest/production-validation.js";
15
15
  import { renumberIds } from "../../domain/ingest/renumber.js";
16
16
  import { validateScriptV3 } from "../../domain/ingest/validation.js";
17
+ import { requireScriptV3 } from "../../domain/script/v3/parse.js";
18
+ import { newScriptV4FromV3WithIdentity, } from "../../domain/script/v4/from-v3.js";
19
+ import { validateScriptV4 } from "../../domain/script/v4/validation.js";
17
20
  import { resolveSource } from "../../infra/ingest/source-resolver.js";
18
21
  import { readTextSource } from "../../infra/ingest/text-reader.js";
19
22
  import { WorkspaceStore } from "../../infra/ingest/workspace-store.js";
@@ -21,9 +24,10 @@ import { runTextNormalize, parseNormalizeOutput } from "../../llm/tasks/ingest/t
21
24
  import { detectBodyStart } from "./body-start.js";
22
25
  import { mapSettled } from "./fanout.js";
23
26
  import { runSerialGovern } from "./serial-govern.js";
27
+ import { assetAuditWarnings, auditWorkspaceScriptAssets } from "./final-asset-audit.js";
24
28
  import { Timings } from "./timings.js";
25
29
  import { writeUsage } from "./usage-report.js";
26
- const PIPELINE_VERSION = "5";
30
+ const PIPELINE_VERSION = "6";
27
31
  const pad = (n) => String(n).padStart(3, "0");
28
32
  const serializeJsonl = (records) => records.map((r) => JSON.stringify(r)).join("\n") + "\n";
29
33
  function checkLifecycle(store, sourceSha, force) {
@@ -49,7 +53,17 @@ function checkLifecycle(store, sourceSha, force) {
49
53
  if (force) {
50
54
  for (const dir of ["pass1", "pass2", "pass3", "pass5", "serial"])
51
55
  fs.rmSync(store.path(dir), { recursive: true, force: true });
52
- for (const f of ["body.json", "script.initial.json", "script.json", "validation.json", "notes.json", "issues.json", "provisional_assets.json"])
56
+ for (const f of [
57
+ "body.json",
58
+ "script.initial.json",
59
+ "script.json",
60
+ "validation.json",
61
+ "asset-audit.json",
62
+ "notes.json",
63
+ "issues.json",
64
+ "provisional_assets.json",
65
+ "v4_identity_map.json",
66
+ ])
53
67
  fs.rmSync(store.path(f), { force: true });
54
68
  }
55
69
  }
@@ -159,7 +173,7 @@ export async function runTextIngest(opts) {
159
173
  }
160
174
  // Serial govern: context starts EMPTY and grows per episode; the model reads each
161
175
  // episode's body + context-so-far and reports discovered entities / importance /
162
- // 造型 / per-scene presence. The final v3 is built from that registry. Every step
176
+ // 造型 / per-scene presence. The governed v3 intermediate is converted to v4. Every step
163
177
  // persists the full context md (= prompt) and the model's `# 更新` md; resume
164
178
  // replays cached `# 更新` (no LLM). Cleared by --force (serial dir wiped).
165
179
  const pad3 = (n) => String(n).padStart(3, "0");
@@ -202,32 +216,69 @@ export async function runTextIngest(opts) {
202
216
  if (serial.autoCreated.length)
203
217
  store.writeText("serial/auto_created.json", JSON.stringify(serial.autoCreated, null, 2));
204
218
  timings.phaseEnd("serial");
205
- // Persist token spend before the deterministic (token-free) renumber+validate, so a
206
- // validation failure never discards accounting resume caches windows at 0 tokens.
219
+ // Persist serial-model spend before deterministic conversion. A structural
220
+ // failure must not erase spend that a resumed run cannot reconstruct.
207
221
  writeUsage(store, opts.executor);
208
222
  // Final clean numbering: contiguous per-kind asset ids + per-asset state ids.
209
223
  timings.phaseStart("govern");
210
224
  const { script: renumbered, idMap } = renumberIds(governed);
211
225
  store.writeJson("id_map.json", idMap);
212
- const structuralValidation = validateScriptV3(renumbered);
226
+ const intermediateValidation = validateScriptV3(renumbered);
227
+ if (!intermediateValidation.ok) {
228
+ store.writeJson("validation.json", intermediateValidation);
229
+ throw new CliError("INGEST VALIDATION FAILED", "Intermediate script failed validation before v4 identity assignment.", {
230
+ exitCode: EXIT_INPUT,
231
+ errorCode: "INGEST_VALIDATION_FAILED",
232
+ received: intermediateValidation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`),
233
+ nextSteps: ["Inspect validation.json."],
234
+ });
235
+ }
236
+ const priorIdentity = !opts.force && store.has("v4_identity_map.json")
237
+ ? store.readJson("v4_identity_map.json")
238
+ : undefined;
239
+ // V4 identities bind to the stable pre-renumber ingest keys. The contiguous
240
+ // V3 ids in `renumbered` are an audit artifact only: deleting or merging an
241
+ // earlier entity can shift them onto a different surviving entity.
242
+ const converted = newScriptV4FromV3WithIdentity(requireScriptV3(governed), priorIdentity, serial.identityKeys);
243
+ const finalScript = converted.script;
244
+ const structuralValidation = validateScriptV4(finalScript);
245
+ let auditWarnings = [];
246
+ try {
247
+ if (structuralValidation.ok) {
248
+ const audit = await auditWorkspaceScriptAssets(store, finalScript, opts.executor, {
249
+ force: opts.force ?? false,
250
+ ...(opts.signal ? { signal: opts.signal } : {}),
251
+ });
252
+ auditWarnings = assetAuditWarnings(audit.report);
253
+ }
254
+ }
255
+ finally {
256
+ // The audit is model-backed. Persist its usage even when it fails.
257
+ writeUsage(store, opts.executor);
258
+ }
213
259
  const validation = {
214
260
  ...structuralValidation,
215
- warnings: [...structuralValidation.warnings, ...validateProductionStandard(renumbered)],
261
+ warnings: [
262
+ ...structuralValidation.warnings,
263
+ ...validateProductionStandard(finalScript),
264
+ ...auditWarnings,
265
+ ],
216
266
  };
217
- store.writeJson("pass5/script.json", renumbered);
267
+ store.writeJson("pass5/script.json", finalScript);
268
+ store.writeJson("v4_identity_map.json", converted.identityMap);
218
269
  store.writeJson("validation.json", validation);
219
270
  if (!validation.ok) {
220
- throw new CliError("INGEST VALIDATION FAILED", "Final script.json failed v3 validation.", {
271
+ throw new CliError("INGEST VALIDATION FAILED", "Final script.json failed v4 validation.", {
221
272
  exitCode: EXIT_INPUT,
222
273
  errorCode: "INGEST_VALIDATION_FAILED",
223
274
  received: validation.errors.slice(0, 5).map((e) => `${e.path}: ${e.message}`),
224
275
  nextSteps: ["Inspect validation.json."],
225
276
  });
226
277
  }
227
- store.writeJson("script.json", renumbered);
278
+ store.writeJson("script.json", finalScript);
228
279
  timings.phaseEnd("govern");
229
280
  timings.finish();
230
- const g = renumbered;
281
+ const g = finalScript;
231
282
  return {
232
283
  workspacePath: store.root,
233
284
  chunks: chunks.length,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/usecases/ingest/pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type NameScript, type NameScene } from "../../domain/ingest/assembler.js";
1
+ import { type NameScript, type NameScene, type StructuralIdentityKeys } from "../../domain/ingest/assembler.js";
2
2
  import { type GlobalContext } from "../../domain/ingest/serial-context.js";
3
3
  import type { LlmTaskExecutor } from "../../llm/types.js";
4
4
  export interface SerialCheckpoint {
@@ -29,6 +29,7 @@ export interface SerialGovernOptions {
29
29
  }
30
30
  export interface SerialGovernResult {
31
31
  doc: Record<string, unknown>;
32
+ identityKeys: StructuralIdentityKeys;
32
33
  episodes: number;
33
34
  reused: number;
34
35
  autoCreated: GlobalContext["autoCreated"];
@@ -10,7 +10,7 @@
10
10
  // importance/descriptions/looks are overlaid, and governDeterministic materializes.
11
11
  // Per-episode md checkpoint + transient-retry as before.
12
12
  import { CliError, EXIT_INPUT } from "../../common.js";
13
- import { assignProvisionalIds } from "../../domain/ingest/assembler.js";
13
+ import { assignProvisionalIds, } from "../../domain/ingest/assembler.js";
14
14
  import { governDeterministic } from "../../domain/ingest/govern.js";
15
15
  import { emptyContext, applyDelta, compact, pendingArcFold, applyArcFold, synopsisLabel, render, resolveCanon, findEntity, baseLook, estimateTokens, packEpisodes, isCrowdName } from "../../domain/ingest/serial-context.js";
16
16
  import { runArcSummary } from "../../llm/tasks/ingest/arc-summary.js";
@@ -143,7 +143,13 @@ export async function runSerialGovern(body, opts) {
143
143
  applyArcFold(ctx, summary);
144
144
  }
145
145
  }
146
- return { doc: finalize(body, ctx), episodes: episodes.length, reused, autoCreated: ctx.autoCreated };
146
+ const finalized = finalize(body, ctx);
147
+ return {
148
+ ...finalized,
149
+ episodes: episodes.length,
150
+ reused,
151
+ autoCreated: ctx.autoCreated,
152
+ };
147
153
  }
148
154
  // Body ACTOR/LOCATION names (in the given episodes) that resolve to no registry
149
155
  // entity — a missed merge worth repairing (a real character/place the serial pass
@@ -255,13 +261,14 @@ function finalize(body, ctx) {
255
261
  sc.props = props.map((n) => stateRef(ctx, n, carry));
256
262
  }
257
263
  }
258
- const script = assignProvisionalIds(doc).script;
264
+ const assigned = assignProvisionalIds(doc);
265
+ const script = assigned.script;
259
266
  overlay(script, ctx);
260
267
  applyImportance(script); // deterministic: override model/registry tiers by on-screen span
261
268
  const governed = governDeterministic(script);
262
269
  renameSyntheticDefault(governed);
263
270
  ensureDescriptions(governed); // last: nothing ships with an empty description
264
- return governed;
271
+ return { doc: governed, identityKeys: assigned.identityKeys };
265
272
  }
266
273
  const RESET = "常态";
267
274
  // De-dupe a list of already-resolved canonical names, keeping first-seen order.