@lingjingai/scriptctl 0.34.0 → 0.36.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 (375) hide show
  1. package/README.md +30 -5
  2. package/changes/0.35.0.md +22 -0
  3. package/changes/0.36.0.md +22 -0
  4. package/changes/unreleased.md +3 -5
  5. package/dist/cli.d.ts +2 -1
  6. package/dist/cli.js +56 -128
  7. package/dist/cli.js.map +1 -1
  8. package/dist/common.d.ts +0 -16
  9. package/dist/common.js +2 -342
  10. package/dist/common.js.map +1 -1
  11. package/dist/domain/ingest/apply-plan.d.ts +23 -0
  12. package/dist/domain/ingest/apply-plan.js +210 -0
  13. package/dist/domain/ingest/apply-plan.js.map +1 -0
  14. package/dist/domain/ingest/assembler.d.ts +57 -0
  15. package/dist/domain/ingest/assembler.js +181 -0
  16. package/dist/domain/ingest/assembler.js.map +1 -0
  17. package/dist/domain/ingest/chunker.d.ts +9 -0
  18. package/dist/domain/ingest/chunker.js +38 -0
  19. package/dist/domain/ingest/chunker.js.map +1 -0
  20. package/dist/domain/ingest/evidence.d.ts +5 -0
  21. package/dist/domain/ingest/evidence.js +66 -0
  22. package/dist/domain/ingest/evidence.js.map +1 -0
  23. package/dist/domain/ingest/govern.d.ts +3 -0
  24. package/dist/domain/ingest/govern.js +127 -0
  25. package/dist/domain/ingest/govern.js.map +1 -0
  26. package/dist/domain/ingest/jsonl-parser.d.ts +6 -0
  27. package/dist/domain/ingest/jsonl-parser.js +187 -0
  28. package/dist/domain/ingest/jsonl-parser.js.map +1 -0
  29. package/dist/domain/ingest/markdown-parser.d.ts +6 -0
  30. package/dist/domain/ingest/markdown-parser.js +186 -0
  31. package/dist/domain/ingest/markdown-parser.js.map +1 -0
  32. package/dist/domain/ingest/records.d.ts +71 -0
  33. package/dist/domain/ingest/records.js +9 -0
  34. package/dist/domain/ingest/records.js.map +1 -0
  35. package/dist/domain/ingest/renumber.d.ts +14 -0
  36. package/dist/domain/ingest/renumber.js +130 -0
  37. package/dist/domain/ingest/renumber.js.map +1 -0
  38. package/dist/domain/ingest/script-v3.d.ts +94 -0
  39. package/dist/domain/ingest/script-v3.js +7 -0
  40. package/dist/domain/ingest/script-v3.js.map +1 -0
  41. package/dist/domain/ingest/state-reconcile.d.ts +11 -0
  42. package/dist/domain/ingest/state-reconcile.js +90 -0
  43. package/dist/domain/ingest/state-reconcile.js.map +1 -0
  44. package/dist/domain/ingest/validation.d.ts +11 -0
  45. package/dist/domain/ingest/validation.js +168 -0
  46. package/dist/domain/ingest/validation.js.map +1 -0
  47. package/dist/domain/ingest/video-aggregate.d.ts +23 -0
  48. package/dist/domain/ingest/video-aggregate.js +89 -0
  49. package/dist/domain/ingest/video-aggregate.js.map +1 -0
  50. package/dist/domain/ingest/video-apply.d.ts +37 -0
  51. package/dist/domain/ingest/video-apply.js +236 -0
  52. package/dist/domain/ingest/video-apply.js.map +1 -0
  53. package/dist/domain/ingest/video-md-parser.d.ts +2 -0
  54. package/dist/domain/ingest/video-md-parser.js +233 -0
  55. package/dist/domain/ingest/video-md-parser.js.map +1 -0
  56. package/dist/domain/ingest/video-records.d.ts +56 -0
  57. package/dist/domain/ingest/video-records.js +9 -0
  58. package/dist/domain/ingest/video-records.js.map +1 -0
  59. package/dist/domain/loom/index.d.ts +2 -1
  60. package/dist/domain/loom/index.js +12 -10
  61. package/dist/domain/loom/index.js.map +1 -1
  62. package/dist/domain/loom/types.d.ts +3 -2
  63. package/dist/domain/script/lookups.d.ts +3 -2
  64. package/dist/domain/script/lookups.js +25 -8
  65. package/dist/domain/script/lookups.js.map +1 -1
  66. package/dist/domain/script/patch/apply.js +2 -2
  67. package/dist/domain/script/patch/apply.js.map +1 -1
  68. package/dist/domain/script/patch/helpers.d.ts +3 -7
  69. package/dist/domain/script/patch/helpers.js +23 -96
  70. package/dist/domain/script/patch/helpers.js.map +1 -1
  71. package/dist/domain/script/patch/ops-action.d.ts +0 -2
  72. package/dist/domain/script/patch/ops-action.js +34 -100
  73. package/dist/domain/script/patch/ops-action.js.map +1 -1
  74. package/dist/domain/script/patch/ops-asset.d.ts +1 -0
  75. package/dist/domain/script/patch/ops-asset.js +102 -155
  76. package/dist/domain/script/patch/ops-asset.js.map +1 -1
  77. package/dist/domain/script/patch/ops-dialogue.d.ts +1 -4
  78. package/dist/domain/script/patch/ops-dialogue.js +43 -220
  79. package/dist/domain/script/patch/ops-dialogue.js.map +1 -1
  80. package/dist/domain/script/patch/ops-extend.js +8 -2
  81. package/dist/domain/script/patch/ops-extend.js.map +1 -1
  82. package/dist/domain/script/patch/ops-meta.js.map +1 -1
  83. package/dist/domain/script/patch/ops-scene.js +26 -39
  84. package/dist/domain/script/patch/ops-scene.js.map +1 -1
  85. package/dist/domain/script/patch/ops-state.d.ts +3 -3
  86. package/dist/domain/script/patch/ops-state.js +33 -49
  87. package/dist/domain/script/patch/ops-state.js.map +1 -1
  88. package/dist/domain/script/patch/registry.js +9 -13
  89. package/dist/domain/script/patch/registry.js.map +1 -1
  90. package/dist/domain/script/refs.js +23 -111
  91. package/dist/domain/script/refs.js.map +1 -1
  92. package/dist/domain/script/scene-refs.d.ts +3 -0
  93. package/dist/domain/script/scene-refs.js +35 -0
  94. package/dist/domain/script/scene-refs.js.map +1 -0
  95. package/dist/domain/script/schema.js +17 -21
  96. package/dist/domain/script/schema.js.map +1 -1
  97. package/dist/domain/script/text-util.d.ts +7 -0
  98. package/dist/domain/script/text-util.js +91 -0
  99. package/dist/domain/script/text-util.js.map +1 -0
  100. package/dist/help-text.js +145 -414
  101. package/dist/help-text.js.map +1 -1
  102. package/dist/infra/converters.js +1 -1
  103. package/dist/infra/converters.js.map +1 -1
  104. package/dist/infra/episode-title.d.ts +4 -0
  105. package/dist/infra/episode-title.js +129 -0
  106. package/dist/infra/episode-title.js.map +1 -0
  107. package/dist/infra/ingest/review-renderer.d.ts +1 -0
  108. package/dist/infra/ingest/review-renderer.js +431 -0
  109. package/dist/infra/ingest/review-renderer.js.map +1 -0
  110. package/dist/infra/ingest/source-resolver.d.ts +21 -0
  111. package/dist/infra/ingest/source-resolver.js +51 -0
  112. package/dist/infra/ingest/source-resolver.js.map +1 -0
  113. package/dist/infra/ingest/text-reader.d.ts +3 -0
  114. package/dist/infra/ingest/text-reader.js +27 -0
  115. package/dist/infra/ingest/text-reader.js.map +1 -0
  116. package/dist/infra/ingest/video-discovery.d.ts +8 -0
  117. package/dist/infra/ingest/video-discovery.js +60 -0
  118. package/dist/infra/ingest/video-discovery.js.map +1 -0
  119. package/dist/infra/ingest/workspace-store.d.ts +18 -0
  120. package/dist/infra/ingest/workspace-store.js +70 -0
  121. package/dist/infra/ingest/workspace-store.js.map +1 -0
  122. package/dist/infra/llm/anthropic-model.d.ts +11 -0
  123. package/dist/infra/llm/anthropic-model.js +109 -0
  124. package/dist/infra/llm/anthropic-model.js.map +1 -0
  125. package/dist/infra/llm/gemini-upload.d.ts +9 -0
  126. package/dist/infra/llm/gemini-upload.js +94 -0
  127. package/dist/infra/llm/gemini-upload.js.map +1 -0
  128. package/dist/infra/llm/gemini-video-model.d.ts +47 -0
  129. package/dist/infra/llm/gemini-video-model.js +167 -0
  130. package/dist/infra/llm/gemini-video-model.js.map +1 -0
  131. package/dist/infra/llm/openai-compatible-model.d.ts +13 -0
  132. package/dist/infra/llm/openai-compatible-model.js +143 -0
  133. package/dist/infra/llm/openai-compatible-model.js.map +1 -0
  134. package/dist/infra/llm/proxy.d.ts +1 -0
  135. package/dist/infra/llm/proxy.js +30 -0
  136. package/dist/infra/llm/proxy.js.map +1 -0
  137. package/dist/infra/llm/retry.d.ts +5 -0
  138. package/dist/infra/llm/retry.js +20 -0
  139. package/dist/infra/llm/retry.js.map +1 -0
  140. package/dist/llm/composition.d.ts +5 -0
  141. package/dist/llm/composition.js +5 -0
  142. package/dist/llm/composition.js.map +1 -0
  143. package/dist/llm/config.d.ts +26 -0
  144. package/dist/llm/config.js +201 -0
  145. package/dist/llm/config.js.map +1 -0
  146. package/dist/llm/registry.d.ts +44 -0
  147. package/dist/llm/registry.js +48 -0
  148. package/dist/llm/registry.js.map +1 -0
  149. package/dist/llm/router.d.ts +23 -0
  150. package/dist/llm/router.js +0 -0
  151. package/dist/llm/router.js.map +1 -0
  152. package/dist/llm/tasks/ingest/asset-curate.d.ts +13 -0
  153. package/dist/llm/tasks/ingest/asset-curate.js +45 -0
  154. package/dist/llm/tasks/ingest/asset-curate.js.map +1 -0
  155. package/dist/llm/tasks/ingest/asset-extract.d.ts +12 -0
  156. package/dist/llm/tasks/ingest/asset-extract.js +51 -0
  157. package/dist/llm/tasks/ingest/asset-extract.js.map +1 -0
  158. package/dist/llm/tasks/ingest/asset-govern.d.ts +22 -0
  159. package/dist/llm/tasks/ingest/asset-govern.js +143 -0
  160. package/dist/llm/tasks/ingest/asset-govern.js.map +1 -0
  161. package/dist/llm/tasks/ingest/mention-resolve.d.ts +9 -0
  162. package/dist/llm/tasks/ingest/mention-resolve.js +39 -0
  163. package/dist/llm/tasks/ingest/mention-resolve.js.map +1 -0
  164. package/dist/llm/tasks/ingest/plot-speaker.d.ts +11 -0
  165. package/dist/llm/tasks/ingest/plot-speaker.js +72 -0
  166. package/dist/llm/tasks/ingest/plot-speaker.js.map +1 -0
  167. package/dist/llm/tasks/ingest/roster-merge.d.ts +46 -0
  168. package/dist/llm/tasks/ingest/roster-merge.js +235 -0
  169. package/dist/llm/tasks/ingest/roster-merge.js.map +1 -0
  170. package/dist/llm/tasks/ingest/state-merge.d.ts +10 -0
  171. package/dist/llm/tasks/ingest/state-merge.js +84 -0
  172. package/dist/llm/tasks/ingest/state-merge.js.map +1 -0
  173. package/dist/llm/tasks/ingest/state-reconcile.d.ts +8 -0
  174. package/dist/llm/tasks/ingest/state-reconcile.js +44 -0
  175. package/dist/llm/tasks/ingest/state-reconcile.js.map +1 -0
  176. package/dist/llm/tasks/ingest/text-normalize.d.ts +10 -0
  177. package/dist/llm/tasks/ingest/text-normalize.js +89 -0
  178. package/dist/llm/tasks/ingest/text-normalize.js.map +1 -0
  179. package/dist/llm/tasks/ingest/video-correct.d.ts +30 -0
  180. package/dist/llm/tasks/ingest/video-correct.js +144 -0
  181. package/dist/llm/tasks/ingest/video-correct.js.map +1 -0
  182. package/dist/llm/tasks/ingest/video-transcribe.d.ts +4 -0
  183. package/dist/llm/tasks/ingest/video-transcribe.js +105 -0
  184. package/dist/llm/tasks/ingest/video-transcribe.js.map +1 -0
  185. package/dist/llm/tasks/schemas.d.ts +5 -0
  186. package/dist/llm/tasks/schemas.js +107 -0
  187. package/dist/llm/tasks/schemas.js.map +1 -0
  188. package/dist/llm/types.d.ts +97 -0
  189. package/dist/llm/types.js +13 -0
  190. package/dist/llm/types.js.map +1 -0
  191. package/dist/usecases/doctor.d.ts +1 -1
  192. package/dist/usecases/doctor.js +36 -9
  193. package/dist/usecases/doctor.js.map +1 -1
  194. package/dist/usecases/ingest/command.d.ts +5 -0
  195. package/dist/usecases/ingest/command.js +57 -0
  196. package/dist/usecases/ingest/command.js.map +1 -0
  197. package/dist/usecases/ingest/fanout.d.ts +10 -0
  198. package/dist/usecases/ingest/fanout.js +23 -0
  199. package/dist/usecases/ingest/fanout.js.map +1 -0
  200. package/dist/usecases/ingest/pass4-mention-resolve.d.ts +11 -0
  201. package/dist/usecases/ingest/pass4-mention-resolve.js +52 -0
  202. package/dist/usecases/ingest/pass4-mention-resolve.js.map +1 -0
  203. package/dist/usecases/ingest/pass5-extract.d.ts +7 -0
  204. package/dist/usecases/ingest/pass5-extract.js +50 -0
  205. package/dist/usecases/ingest/pass5-extract.js.map +1 -0
  206. package/dist/usecases/ingest/pass5-govern.d.ts +13 -0
  207. package/dist/usecases/ingest/pass5-govern.js +155 -0
  208. package/dist/usecases/ingest/pass5-govern.js.map +1 -0
  209. package/dist/usecases/ingest/pipeline.d.ts +28 -0
  210. package/dist/usecases/ingest/pipeline.js +144 -0
  211. package/dist/usecases/ingest/pipeline.js.map +1 -0
  212. package/dist/usecases/ingest/publish-command.d.ts +4 -0
  213. package/dist/usecases/ingest/publish-command.js +77 -0
  214. package/dist/usecases/ingest/publish-command.js.map +1 -0
  215. package/dist/usecases/ingest/status.d.ts +39 -0
  216. package/dist/usecases/ingest/status.js +155 -0
  217. package/dist/usecases/ingest/status.js.map +1 -0
  218. package/dist/usecases/ingest/video-pass3.d.ts +26 -0
  219. package/dist/usecases/ingest/video-pass3.js +0 -0
  220. package/dist/usecases/ingest/video-pass3.js.map +1 -0
  221. package/dist/usecases/ingest/video-pipeline.d.ts +32 -0
  222. package/dist/usecases/ingest/video-pipeline.js +202 -0
  223. package/dist/usecases/ingest/video-pipeline.js.map +1 -0
  224. package/dist/usecases/ingest/view-command.d.ts +4 -0
  225. package/dist/usecases/ingest/view-command.js +51 -0
  226. package/dist/usecases/ingest/view-command.js.map +1 -0
  227. package/dist/usecases/script/actions.js +2 -2
  228. package/dist/usecases/script/actions.js.map +1 -1
  229. package/dist/usecases/script/actor.js.map +1 -1
  230. package/dist/usecases/script/actors.js +1 -0
  231. package/dist/usecases/script/actors.js.map +1 -1
  232. package/dist/usecases/script/add-actor.js.map +1 -1
  233. package/dist/usecases/script/add-episode.js.map +1 -1
  234. package/dist/usecases/script/add-location.js.map +1 -1
  235. package/dist/usecases/script/add-prop.js.map +1 -1
  236. package/dist/usecases/script/alias.js.map +1 -1
  237. package/dist/usecases/script/assets.js +2 -1
  238. package/dist/usecases/script/assets.js.map +1 -1
  239. package/dist/usecases/script/context.js.map +1 -1
  240. package/dist/usecases/script/create.js +3 -6
  241. package/dist/usecases/script/create.js.map +1 -1
  242. package/dist/usecases/script/delete.js.map +1 -1
  243. package/dist/usecases/script/describe.js.map +1 -1
  244. package/dist/usecases/script/dialogue.js +6 -13
  245. package/dist/usecases/script/dialogue.js.map +1 -1
  246. package/dist/usecases/script/do.js +1 -1
  247. package/dist/usecases/script/do.js.map +1 -1
  248. package/dist/usecases/script/episodes.js.map +1 -1
  249. package/dist/usecases/script/{add-speaker.d.ts → importance.d.ts} +1 -1
  250. package/dist/usecases/script/importance.js +17 -0
  251. package/dist/usecases/script/importance.js.map +1 -0
  252. package/dist/usecases/script/insert.js.map +1 -1
  253. package/dist/usecases/script/issues.js.map +1 -1
  254. package/dist/usecases/script/lib.d.ts +19 -6
  255. package/dist/usecases/script/lib.js +173 -99
  256. package/dist/usecases/script/lib.js.map +1 -1
  257. package/dist/usecases/script/locations.js +1 -0
  258. package/dist/usecases/script/locations.js.map +1 -1
  259. package/dist/usecases/script/merge.js.map +1 -1
  260. package/dist/usecases/script/move.js.map +1 -1
  261. package/dist/usecases/script/props.js +1 -0
  262. package/dist/usecases/script/props.js.map +1 -1
  263. package/dist/usecases/script/refs.js.map +1 -1
  264. package/dist/usecases/script/rename.js.map +1 -1
  265. package/dist/usecases/script/replace.js.map +1 -1
  266. package/dist/usecases/script/role.js.map +1 -1
  267. package/dist/usecases/script/scenes.js +8 -15
  268. package/dist/usecases/script/scenes.js.map +1 -1
  269. package/dist/usecases/script/script-patch.js +1 -1
  270. package/dist/usecases/script/script-patch.js.map +1 -1
  271. package/dist/usecases/script/script-validate.js +1 -1
  272. package/dist/usecases/script/script-validate.js.map +1 -1
  273. package/dist/usecases/script/session.d.ts +4 -4
  274. package/dist/usecases/script/session.js +57 -78
  275. package/dist/usecases/script/session.js.map +1 -1
  276. package/dist/usecases/script/split.js.map +1 -1
  277. package/dist/usecases/script/state-add.js.map +1 -1
  278. package/dist/usecases/script/state-delete.js.map +1 -1
  279. package/dist/usecases/script/state-rename.js.map +1 -1
  280. package/dist/usecases/script/states.js +58 -13
  281. package/dist/usecases/script/states.js.map +1 -1
  282. package/dist/usecases/script/summary.js +8 -0
  283. package/dist/usecases/script/summary.js.map +1 -1
  284. package/dist/usecases/script/synopsis-generate.d.ts +4 -5
  285. package/dist/usecases/script/synopsis-generate.js +30 -46
  286. package/dist/usecases/script/synopsis-generate.js.map +1 -1
  287. package/dist/usecases/script/transition.js.map +1 -1
  288. package/dist/usecases/script/type.js.map +1 -1
  289. package/dist/usecases/script/worldview.js.map +1 -1
  290. package/package.json +11 -3
  291. package/scripts/install-skill.mjs +120 -0
  292. package/skills/scriptctl/SKILL.md +293 -0
  293. package/skills/scriptctl/references/atomic-write-workflow.md +117 -0
  294. package/skills/scriptctl/references/ingest-workflow.md +85 -0
  295. package/skills/scriptctl/references/state-reference-repair.md +59 -0
  296. package/dist/domain/direct/runner.d.ts +0 -25
  297. package/dist/domain/direct/runner.js +0 -88
  298. package/dist/domain/direct/runner.js.map +0 -1
  299. package/dist/domain/direct/stage.d.ts +0 -108
  300. package/dist/domain/direct/stage.js +0 -134
  301. package/dist/domain/direct/stage.js.map +0 -1
  302. package/dist/domain/direct/stages/asset-curation.d.ts +0 -2
  303. package/dist/domain/direct/stages/asset-curation.js +0 -10
  304. package/dist/domain/direct/stages/asset-curation.js.map +0 -1
  305. package/dist/domain/direct/stages/batch-extract.d.ts +0 -2
  306. package/dist/domain/direct/stages/batch-extract.js +0 -12
  307. package/dist/domain/direct/stages/batch-extract.js.map +0 -1
  308. package/dist/domain/direct/stages/batch-plan.d.ts +0 -2
  309. package/dist/domain/direct/stages/batch-plan.js +0 -9
  310. package/dist/domain/direct/stages/batch-plan.js.map +0 -1
  311. package/dist/domain/direct/stages/episode-merge.d.ts +0 -2
  312. package/dist/domain/direct/stages/episode-merge.js +0 -11
  313. package/dist/domain/direct/stages/episode-merge.js.map +0 -1
  314. package/dist/domain/direct/stages/episode-plan.d.ts +0 -2
  315. package/dist/domain/direct/stages/episode-plan.js +0 -9
  316. package/dist/domain/direct/stages/episode-plan.js.map +0 -1
  317. package/dist/domain/direct/stages/episode-synopsis.d.ts +0 -2
  318. package/dist/domain/direct/stages/episode-synopsis.js +0 -12
  319. package/dist/domain/direct/stages/episode-synopsis.js.map +0 -1
  320. package/dist/domain/direct/stages/episode-titles.d.ts +0 -2
  321. package/dist/domain/direct/stages/episode-titles.js +0 -12
  322. package/dist/domain/direct/stages/episode-titles.js.map +0 -1
  323. package/dist/domain/direct/stages/index.d.ts +0 -19
  324. package/dist/domain/direct/stages/index.js +0 -41
  325. package/dist/domain/direct/stages/index.js.map +0 -1
  326. package/dist/domain/direct/stages/metadata.d.ts +0 -2
  327. package/dist/domain/direct/stages/metadata.js +0 -11
  328. package/dist/domain/direct/stages/metadata.js.map +0 -1
  329. package/dist/domain/direct/stages/script-merge.d.ts +0 -2
  330. package/dist/domain/direct/stages/script-merge.js +0 -15
  331. package/dist/domain/direct/stages/script-merge.js.map +0 -1
  332. package/dist/domain/direct/stages/script-synopsis.d.ts +0 -2
  333. package/dist/domain/direct/stages/script-synopsis.js +0 -12
  334. package/dist/domain/direct/stages/script-synopsis.js.map +0 -1
  335. package/dist/domain/direct/stages/source-prepare.d.ts +0 -2
  336. package/dist/domain/direct/stages/source-prepare.js +0 -9
  337. package/dist/domain/direct/stages/source-prepare.js.map +0 -1
  338. package/dist/domain/direct/stages/state-binding.d.ts +0 -2
  339. package/dist/domain/direct/stages/state-binding.js +0 -9
  340. package/dist/domain/direct/stages/state-binding.js.map +0 -1
  341. package/dist/domain/direct/stages/state-curation.d.ts +0 -2
  342. package/dist/domain/direct/stages/state-curation.js +0 -10
  343. package/dist/domain/direct/stages/state-curation.js.map +0 -1
  344. package/dist/domain/direct/stages/validate.d.ts +0 -2
  345. package/dist/domain/direct/stages/validate.js +0 -10
  346. package/dist/domain/direct/stages/validate.js.map +0 -1
  347. package/dist/domain/direct-core.d.ts +0 -313
  348. package/dist/domain/direct-core.js +0 -8516
  349. package/dist/domain/direct-core.js.map +0 -1
  350. package/dist/domain/script/validate.d.ts +0 -22
  351. package/dist/domain/script/validate.js +0 -997
  352. package/dist/domain/script/validate.js.map +0 -1
  353. package/dist/infra/providers.d.ts +0 -97
  354. package/dist/infra/providers.js +0 -1396
  355. package/dist/infra/providers.js.map +0 -1
  356. package/dist/usecases/direct.d.ts +0 -27
  357. package/dist/usecases/direct.js +0 -4172
  358. package/dist/usecases/direct.js.map +0 -1
  359. package/dist/usecases/parse.d.ts +0 -15
  360. package/dist/usecases/parse.js +0 -429
  361. package/dist/usecases/parse.js.map +0 -1
  362. package/dist/usecases/script/add-speaker.js +0 -22
  363. package/dist/usecases/script/add-speaker.js.map +0 -1
  364. package/dist/usecases/script/export.d.ts +0 -3
  365. package/dist/usecases/script/export.js +0 -111
  366. package/dist/usecases/script/export.js.map +0 -1
  367. package/dist/usecases/script/overlap.d.ts +0 -3
  368. package/dist/usecases/script/overlap.js +0 -21
  369. package/dist/usecases/script/overlap.js.map +0 -1
  370. package/dist/usecases/script/speakers.d.ts +0 -3
  371. package/dist/usecases/script/speakers.js +0 -28
  372. package/dist/usecases/script/speakers.js.map +0 -1
  373. package/dist/usecases/script/state-change.d.ts +0 -3
  374. package/dist/usecases/script/state-change.js +0 -24
  375. package/dist/usecases/script/state-change.js.map +0 -1
@@ -1,9 +0,0 @@
1
- import { stageSourcePrepare } from "../../../usecases/direct.js";
2
- // Convert the raw source file into source.txt (+ source_manifest.json). Reads:
3
- // the --source-path file. Writes: workspace/source.txt, source_manifest.json.
4
- export const sourcePrepareStage = {
5
- name: "source-prepare",
6
- output: "source_manifest.json",
7
- run: (ctx) => stageSourcePrepare(ctx),
8
- };
9
- //# sourceMappingURL=source-prepare.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-prepare.js","sourceRoot":"","sources":["../../../../src/domain/direct/stages/source-prepare.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,sBAAsB;IAC9B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC;CACtC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Stage } from "../stage.js";
2
- export declare const stateBindingStage: Stage;
@@ -1,9 +0,0 @@
1
- import { stageStateBinding } from "../../../usecases/direct.js";
2
- // LLM-assisted scene-level state binding. Reads: ctx.state.script after asset
3
- // curation. Writes: state_binding.json (+ mutates the in-memory script).
4
- export const stateBindingStage = {
5
- name: "state-binding",
6
- output: "state_binding.json",
7
- run: (ctx) => stageStateBinding(ctx),
8
- };
9
- //# sourceMappingURL=state-binding.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-binding.js","sourceRoot":"","sources":["../../../../src/domain/direct/stages/state-binding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,8EAA8E;AAC9E,yEAAyE;AACzE,MAAM,CAAC,MAAM,iBAAiB,GAAU;IACtC,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,oBAAoB;IAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC;CACrC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Stage } from "../stage.js";
2
- export declare const stateCurationStage: Stage;
@@ -1,10 +0,0 @@
1
- import { stageStateCuration } from "../../../usecases/direct.js";
2
- // LLM-assisted state catalog compression. Reads ctx.state.script after asset
3
- // curation, writes state_curation.json, and rewrites scene refs/state_changes
4
- // before state-binding chooses per-scene states.
5
- export const stateCurationStage = {
6
- name: "state-curation",
7
- output: "state_curation.json",
8
- run: (ctx) => stageStateCuration(ctx),
9
- };
10
- //# sourceMappingURL=state-curation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-curation.js","sourceRoot":"","sources":["../../../../src/domain/direct/stages/state-curation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,6EAA6E;AAC7E,8EAA8E;AAC9E,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACvC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,qBAAqB;IAC7B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC;CACtC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Stage } from "../stage.js";
2
- export declare const validateStage: Stage;
@@ -1,10 +0,0 @@
1
- import { stageValidate } from "../../../usecases/direct.js";
2
- // Validate the assembled script.initial.json. Reads: script.initial.json.
3
- // Writes: validation.json. `output: null` — validation is cheap and always
4
- // re-run so status reflects the latest script.
5
- export const validateStage = {
6
- name: "validate",
7
- output: null,
8
- run: (ctx) => stageValidate(ctx),
9
- };
10
- //# sourceMappingURL=validate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/domain/direct/stages/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,0EAA0E;AAC1E,2EAA2E;AAC3E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAU;IAClC,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC;CACjC,CAAC"}
@@ -1,313 +0,0 @@
1
- import { CliError } from "../common.js";
2
- type Dict = Record<string, unknown>;
3
- export declare const _ZH_DIGITS: Record<string, number>;
4
- export declare const _EP_HEADER_RE: RegExp;
5
- export declare const _EP_TITLE_PREFIX_RE: RegExp;
6
- export declare const _TECHNICAL_EP_TITLE_RE: RegExp;
7
- export declare const BRACKET_ACTION_LABELS: Set<string>;
8
- export declare function sceneContext(scene: Dict): Dict;
9
- export declare function setSceneContext(scene: Dict, context: Dict): void;
10
- export declare function normalizeDigits(value: string): string;
11
- export declare function parseEpNumber(raw: string): number | null;
12
- export declare function episodeNumberFromValue(value: unknown, defaultVal?: number | null): number | null;
13
- export declare function cleanEpisodeShortTitle(rawTitle: unknown): string;
14
- export declare function isTechnicalEpisodeTitle(rawTitle: unknown): boolean;
15
- export declare function formatEpisodeTitle(episodeNum: number, rawTitle: unknown): string | null;
16
- export declare function extractEpisodeTitleCandidate(header: string): string;
17
- export declare function buildEpisodePlan(sourceText: string): Dict;
18
- export declare function cleanName(name: unknown): string;
19
- export declare function splitEntityState(raw: unknown): [string, string | null];
20
- export declare function splitLocationState(raw: unknown): [string, string | null];
21
- export declare function stateLabelError(stateName: unknown): string | null;
22
- export declare function isStateLabelValid(stateName: unknown): boolean;
23
- export declare function stateRejectionReason(targetKind: string, stateName: unknown): string | null;
24
- export declare function isReusableState(targetKind: string, stateName: unknown): boolean;
25
- export declare function splitNames(raw: string): Array<[string, string | null]>;
26
- export declare function stripLocationState(location: string): [string, string | null];
27
- export declare function parseSceneHeader(line: string): Dict | null;
28
- export declare function lineItemsWithSpans(text: string, base: number): Array<[string, number, number]>;
29
- export declare function contentSpan(line: string, lineStart: number, content: string): {
30
- start: number;
31
- end: number;
32
- };
33
- export declare function deterministicExtractEpisode(sourceText: string, episodePlan: Dict): Dict;
34
- export declare function normalizeInt(value: unknown, defaultVal: number): number;
35
- export declare function validateResultActionTypes(planItem: Dict, result: Dict): void;
36
- export declare function validateEpisodeExtractionQuality(_sourceText: string, episodePlan: Dict, result: Dict): void;
37
- export declare function isMetadataLine(line: string): boolean;
38
- export declare function isSceneLine(line: string): boolean;
39
- export declare function extractSourceLineAction(line: string, start: number): Dict | null;
40
- export declare function sourceContentLineRecords(sourceText: string, planItem: Dict): Dict[];
41
- export declare function episodesNeedingGeneratedTitles(episodePlan: Dict): Dict[];
42
- export declare function deterministicEpisodeShortTitle(sourceText: string, episode: Dict): string;
43
- export declare function buildEpisodeTitleContext(sourceText: string, episodePlan: Dict): Dict[];
44
- export declare function episodeTitleResponseMap(payload: unknown): Map<number, string>;
45
- export interface ProviderLike {
46
- name?: string;
47
- completeText?(request: {
48
- system: string;
49
- user: string;
50
- signal?: AbortSignal;
51
- }): Promise<{
52
- text: string;
53
- raw?: unknown;
54
- }> | {
55
- text: string;
56
- raw?: unknown;
57
- };
58
- extractEpisode?(sourceText: string, plan: Dict): Promise<Dict> | Dict;
59
- extractBatch?(sourceText: string, plan: Dict): Promise<Dict> | Dict;
60
- extractMetadata?(sourceText: string, script: Dict): Promise<Dict> | Dict;
61
- groupAssets?(script: Dict, contextText: string): Promise<string> | string;
62
- curateAssets?(script: Dict, contextText: string): Promise<string> | string;
63
- curateStates?(script: Dict, contextText: string): Promise<string> | string;
64
- bindStates?(script: Dict, context: Dict): Promise<Dict> | Dict;
65
- extractEpisodeTitles?(sourceText: string, plan: Dict): Promise<Dict> | Dict;
66
- extractEpisodeSynopsis?(synopses: string[], ctx: Dict): Promise<Dict> | Dict;
67
- extractScriptSynopsis?(synopses: string[], ctx: Dict): Promise<Dict> | Dict;
68
- }
69
- export declare const DEFAULT_TITLE_CHUNK_SIZE = 10;
70
- export declare function chunkEpisodesNeedingTitles(episodePlan: Dict, chunkSize: number): Dict[][];
71
- export declare function applyEpisodeTitlesToPlan(sourceText: string, episodePlan: Dict, generated: Map<number, string>): number[];
72
- export declare function formatBatchSource(sourceText: string, batchPlan: Dict): string;
73
- export declare function lineNumberAt(sourceText: string, offset: number): number;
74
- export declare function batchContextFor(sourceText: string, episode: Dict, start: number): Dict;
75
- export declare function makeBatch(sourceText: string, episode: Dict, batchIndex: number, part: number, lines: Array<[string, number, number]>): Dict;
76
- export interface BuildBatchPlanOptions {
77
- targetLines?: number;
78
- maxChars?: number;
79
- minLines?: number;
80
- mode?: string;
81
- }
82
- export declare function buildBatchPlan(sourceText: string, episodePlan: Dict, opts?: BuildBatchPlanOptions): Dict;
83
- export declare function validateBatchExtractionQuality(_sourceText: string, batchPlan: Dict, result: Dict): void;
84
- export declare function recoverBatchFromSource(sourceText: string, batchPlan: Dict): Dict;
85
- export declare function isRecoverableBatchCliError(exc: CliError): boolean;
86
- export declare function isRetryableProviderError(exc: unknown): boolean;
87
- export declare function providerAttempts(): number;
88
- export declare function providerExtractBatch(provider: ProviderLike, sourceText: string, batch: Dict): Promise<Dict>;
89
- export declare function extractBatchWithRecovery(provider: ProviderLike, sourceText: string, batch: Dict): Promise<Dict>;
90
- export declare function _md_push_asset(items: Dict[], rawName: string, description: string | null): void;
91
- export declare function parseSpeakerRef(raw: unknown): [string, string];
92
- export declare function parseSpeakerAsset(raw: unknown): [string, string];
93
- export declare function inferNonActorSpeakerKind(name: string, scene?: Dict | null): string;
94
- export declare function normalizeDeliveryToken(value: unknown): string;
95
- export declare function contentHasSpeakerPrefix(content: string, speakerNames: Set<string>): boolean;
96
- export declare function splitSpeakerRefs(raw: unknown): string[];
97
- export declare function speakerRefEntry(scene: Dict, rawSpeaker: unknown, defaultKind?: string): {
98
- speaker: string;
99
- speaker_kind: string;
100
- } | null;
101
- export declare function applyDialogueSpeaker(action: Dict, scene: Dict, rawSpeaker: unknown, defaultKind?: string): void;
102
- export declare function parseOverlapMarkdownLines(content: string, scene: Dict): Array<{
103
- speaker: string;
104
- speaker_kind: string;
105
- content: string;
106
- }>;
107
- export interface ParseMarkdownBatchOptions {
108
- /**
109
- * When true, the parser treats input as a single-episode fragment:
110
- * - batchPlan fields beyond `episode` may be omitted (sensible defaults applied)
111
- * - the `# 资产` section is optional (already accepted by the strict parser, but explicitly tolerated here)
112
- * - scene numbers need not start from 1 or be consecutive
113
- * - error messages use "fragment" terminology
114
- *
115
- * Default false preserves existing direct init behavior (zero regression).
116
- */
117
- fragmentMode?: boolean;
118
- }
119
- export declare function parseMarkdownBatch(text: string, batchPlan: Dict, opts?: ParseMarkdownBatchOptions): Dict;
120
- /**
121
- * Parse one single-kind asset document for `scriptctl parse`.
122
- *
123
- * The parse workflow is deliberately NOT the write/direct layout: the 正文 md
124
- * carries only the screenplay (no asset registration at all), and each asset
125
- * KIND lives in ONE shared file that every subagent appends to —
126
- * 人物.md / 场景.md / 道具.md / 发声源.md.
127
- *
128
- * Primary format = a bullet per asset, with its 外观造型档位(状态)as INDENTED
129
- * sub-bullets:
130
- * - 陈墨: 归国的复仇者 ← 顶级 bullet = 一个资产(: 后是身份/描述)
131
- * - 默认: 深色风衣 ← 缩进 sub-bullet = 该资产的一个状态
132
- * - 西装: 一身定制西装
133
- * A flat `- 陈墨|西装: 描述` line is also accepted (self-contained state), so
134
- * workers can append either way; duplicates are tolerated and collapsed later.
135
- * 发声源 uses `- name(kind): description` and has no states. Any markdown header
136
- * (`# 人物` / `## …`) is ignored.
137
- */
138
- export declare function parseAssetDoc(text: string, kind: "actors" | "locations" | "props" | "speakers"): Dict;
139
- export declare function serializeAssetDoc(script: Dict, kind: "actors" | "locations" | "props" | "speakers"): string;
140
- export declare function serializeMetaDoc(script: Dict): string;
141
- export declare function expandCompactEpisodeResult(result: Dict, episodePlan: Dict): Dict;
142
- export declare function compactEpisodeResult(result: Dict): Dict;
143
- export declare function compactBatchResult(result: Dict): Dict;
144
- export interface SynopsisReductionPlan {
145
- fitsInOnePass: boolean;
146
- groups: number[][];
147
- }
148
- /**
149
- * Plan ONE level of the whole-script synopsis reduce.
150
- *
151
- * We can only char-group the items we actually have (their lengths are known);
152
- * a merged group's output length isn't known until the LLM produces it. So this
153
- * stays single-level and the orchestrator loops — call it on the episode
154
- * synopses, merge each group, then call it again on the merged outputs until it
155
- * returns fitsInOnePass, then run the final extractScriptSynopsis on whatever
156
- * survives. Pure: it never calls the provider.
157
- *
158
- * Boundaries: total ≤ threshold (or ≤1 item) → one pass; total ≫ threshold →
159
- * multiple bounded groups; every item alone already over threshold → no
160
- * grouping can make progress, so degrade to one pass rather than loop forever.
161
- */
162
- export declare function planSynopsisReduction(synopses: string[], thresholdChars: number, groupSize: number): SynopsisReductionPlan;
163
- export declare function cleanSynopsisList(items: unknown): string[];
164
- export declare function readCarriedSynopsis(d: Dict): string;
165
- export declare function sortDeep(value: unknown): unknown;
166
- export declare function normalizeEpisodeResult(result: Dict, episodePlan: Dict): Dict;
167
- export declare function _normalize_speaker_list(items: unknown): Dict[];
168
- export declare function uniqueAdd(order: string[], value: string): void;
169
- export declare function clipText(text: unknown, limit?: number): string;
170
- export declare function sceneExample(scene: Dict, limit?: number): string;
171
- export declare function buildMetadataContext(script: Dict): Dict;
172
- export declare function deterministicExtractMetadata(script: Dict): Dict;
173
- export interface MetadataMdSections {
174
- worldviewRaw: string;
175
- actors: Map<string, {
176
- role: string;
177
- description: string;
178
- }>;
179
- locations: Map<string, string>;
180
- props: Map<string, string>;
181
- }
182
- export declare function overlayMetadataSections(parsed: MetadataMdSections, script: Dict): Dict;
183
- export declare function parseGlobalMetadataMd(raw: string): {
184
- worldviewRaw: string;
185
- protagonistIds: string[];
186
- };
187
- export declare function parseAssetDescriptionsMd(raw: string): Map<string, string>;
188
- export declare function assembleMetadataFromParts(script: Dict, worldviewRaw: string, protagonistIds: string[], descriptionsById: Map<string, string>): Dict;
189
- export declare function applyMetadataToScript(script: Dict, metadata: Dict): void;
190
- interface AssetUsage {
191
- episodes: Set<string>;
192
- scenes: Set<string>;
193
- }
194
- export declare function sceneAssetUsage(script: Dict, refKey: string, idKey: string): Map<string, AssetUsage>;
195
- export type AssetCurationSelection = Partial<Record<AssetKind, readonly string[]>>;
196
- export declare const ASSET_GROUP_MAX_ITEMS = 8;
197
- export declare const ASSET_GROUP_MAX_CONTEXT_CHARS = 22000;
198
- export declare function buildAssetCurationContext(script: Dict, kinds?: readonly AssetKind[], selection?: AssetCurationSelection): Dict;
199
- export declare function formatAssetCurationContextText(context: Dict): string;
200
- export declare function buildAssetCurationContextText(script: Dict, kinds?: readonly AssetKind[], selection?: AssetCurationSelection): string;
201
- export declare function buildAssetGroupingContextText(script: Dict, kind: AssetKind): string;
202
- export interface AssetCurationChunkOptions {
203
- maxItems: number;
204
- maxContextChars: number;
205
- }
206
- export declare function buildPrimaryAssetCurationChunks(script: Dict, kind: AssetKind, options?: AssetCurationChunkOptions): string[][];
207
- export declare function extractAssetGroupingExpressions(rawText: string): string[];
208
- export declare function parseAssetGroupingExpressions(rawText: string): Dict;
209
- export declare function validateAssetGroupingPlan(script: Dict, kind: AssetKind, rawPlan: Dict): Dict;
210
- export declare function groupedAssetCurationChunks(script: Dict, kind: AssetKind, groups: readonly Dict[], options?: AssetCurationChunkOptions): string[][];
211
- export declare function buildAssetCurationRepairContextText(opts: {
212
- baseContextText: string;
213
- repairSourceKeys: readonly string[];
214
- rejectedExpressions: readonly Dict[];
215
- acceptedDecisions: readonly Dict[];
216
- }): string;
217
- export declare function missingAssetCurationRequiredSourceKeys(script: Dict, rawPlan: unknown): string[];
218
- export declare function assetCurationAuditCandidateSourceKeys(script: Dict, rawPlan: unknown): string[];
219
- export declare function assetCurationAuditSourceKeys(script: Dict, rawPlan: unknown): string[];
220
- export declare function buildAssetCurationAuditContextText(script: Dict, primaryPlan: unknown, selectedSourceKeys?: readonly string[]): string;
221
- export declare function locationCanonicalizationCandidateSourceKeys(script: Dict, rawPlan: unknown): string[];
222
- export declare function buildLocationCanonicalizationAuditContextText(script: Dict, rawPlan: unknown, selectedSourceKeys?: readonly string[]): string;
223
- export declare function assertLocationCanonicalizationPlan(rawPlan: unknown): void;
224
- export declare function combineLocationCanonicalizationPlan(script: Dict, basePlan: Dict, locationPlan: Dict, allowedNewLocationSources?: string[]): Dict;
225
- export declare function applyLocationMerges(script: Dict, replacements: Map<string, string>): void;
226
- export declare function actorCurationDecisions(script: Dict): Dict[];
227
- export declare function propCurationDecisions(script: Dict): Dict[];
228
- export declare function extractAssetCurationExpressions(rawText: string): string[];
229
- export interface RejectedAssetCurationExpression {
230
- index: number;
231
- raw: string;
232
- error: string;
233
- source_key: string | null;
234
- }
235
- export declare function guessAssetCurationExpressionSourceKey(rawExpression: string): string | null;
236
- export declare function parseAssetCurationExpressionsTolerant(rawText: string): Dict;
237
- export declare function parseAssetCurationExpressions(rawText: string): Dict;
238
- export declare function formatAssetCurationDecisionExpressions(plan: Dict): string;
239
- export declare function combineAssetCurationExpressionPlans(plans: readonly Dict[]): Dict;
240
- export declare function combinePrimaryAssetCurationPlans(plans: readonly Dict[]): Dict;
241
- interface CombineAssetCurationPlanOptions {
242
- salvageInvalidAuditSources?: boolean;
243
- }
244
- export declare function combineAssetCurationPlans(primaryPlan: Dict, auditPlan: Dict, allowedNewAuditSources?: string[], options?: CombineAssetCurationPlanOptions): Dict;
245
- export declare function applyAssetCurationPlan(script: Dict, rawPlan: unknown): Dict;
246
- export declare function applyAssetGroupingDuplicateMerges(script: Dict, rawPlan: unknown): Dict;
247
- export declare function normalizeAssetCuration(script: Dict, rawCuration: unknown): Dict;
248
- export declare function curateScriptAssets(script: Dict, rawCuration?: unknown): Dict;
249
- export declare const STATE_CURATION_MAX_ASSETS = 4;
250
- export declare const STATE_CURATION_MAX_CONTEXT_CHARS = 28000;
251
- export interface StateCurationAssetRef {
252
- kind: AssetKind;
253
- asset_id: string;
254
- }
255
- export declare function buildStateCurationContextText(script: Dict, refs?: readonly StateCurationAssetRef[]): string;
256
- export declare function buildStateCurationChunks(script: Dict, options?: {
257
- maxAssets?: number;
258
- maxContextChars?: number;
259
- }): Array<{
260
- part_id: string;
261
- refs: StateCurationAssetRef[];
262
- }>;
263
- export declare function parseStateCurationExpressions(rawText: string): Dict;
264
- export declare function formatStateCurationDecisionExpressions(plan: Dict): string;
265
- export declare function stateCurationSourceKeysForRefs(script: Dict, refs: readonly StateCurationAssetRef[]): string[];
266
- export declare function missingStateCurationRequiredSourceKeys(script: Dict, plan: Dict, requiredKeys?: readonly string[]): string[];
267
- export declare function assertStateCurationPlan(script: Dict, plan: Dict, requiredKeys?: readonly string[]): Dict;
268
- export declare function applyStateCurationPlan(script: Dict, rawPlan: Dict): Dict;
269
- export declare function normalizeStateBindingPlanShape(rawPlan: unknown): Dict | null;
270
- export declare function ensureDefaultStates(script: Dict): Dict;
271
- export declare function bindDefaultStateRefsInScript(script: Dict): Dict;
272
- export declare function buildStateBindingContexts(script: Dict, chunkSize?: number): Dict[];
273
- interface StateBindingApplyOptions {
274
- invalidStateMode?: "reject" | "skip";
275
- }
276
- export declare function applyStateBindingPlan(script: Dict, rawPlan: unknown, options?: StateBindingApplyOptions): Dict;
277
- export type AssetKind = "actor" | "location" | "prop";
278
- export type CanonicalAssetKey = string;
279
- export type AssetNormalizationAction = "canonical_merge" | "location_state_from_name" | "location_state_from_time" | "review";
280
- export interface AssetNormalizationDecision {
281
- action: AssetNormalizationAction;
282
- kind: AssetKind;
283
- from?: string;
284
- into?: string;
285
- state?: string;
286
- episode?: number;
287
- scene_num?: number;
288
- reason: string;
289
- }
290
- export interface AssetNormalizationReport {
291
- version: 1;
292
- mode: "conservative";
293
- summary: {
294
- asset_merges: number;
295
- location_states_from_names: number;
296
- location_states_from_time: number;
297
- review_items: number;
298
- };
299
- decisions: AssetNormalizationDecision[];
300
- }
301
- interface MergeEpisodeResultsOptions {
302
- bindDefaultStateRefs?: boolean;
303
- trackUnresolvedStateRefs?: boolean;
304
- assetNormalization?: "conservative" | "off";
305
- }
306
- export interface MergeEpisodeResultsWithReportResult {
307
- script: Dict;
308
- assetNormalization: AssetNormalizationReport;
309
- }
310
- export declare function canonicalAssetNameKey(kind: AssetKind, rawName: unknown): CanonicalAssetKey;
311
- export declare function mergeEpisodeResultsWithReport(results: Dict[], title: string, opts?: MergeEpisodeResultsOptions): MergeEpisodeResultsWithReportResult;
312
- export declare function mergeEpisodeResults(results: Dict[], title: string, opts?: MergeEpisodeResultsOptions): Dict;
313
- export {};