@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,10 +1,11 @@
1
- import { sceneContext, setSceneContext, stateRejectionReason, } from "../../direct-core.js";
1
+ import { stateRejectionReason } from "../text-util.js";
2
2
  import { asList, isList, opErr, strOf } from "../shared.js";
3
- import { findScene, idKeyForKind, nextStateId, pluralForKind, } from "../lookups.js";
4
- import { parseAssetTarget, parseSceneRef, parseStateTarget, } from "../address.js";
3
+ import { findScene, idKeyForKind, nextStateId, pluralForKind } from "../lookups.js";
4
+ import { parseAssetTarget, parseSceneRef, parseStateTarget } from "../address.js";
5
+ import { sceneRefs, setSceneRefs } from "../scene-refs.js";
5
6
  import { contextRefsForKind, resolveAssetByTarget, resolveState, setContextState, validateStateForTarget, } from "./helpers.js";
6
7
  export function op_state_add(__ctx) {
7
- const { script, op, sourceText, applied, kind } = __ctx;
8
+ const { script, op, applied, kind } = __ctx;
8
9
  const [targetKind, targetId] = parseAssetTarget(op["target"]);
9
10
  const asset = resolveAssetByTarget(script, targetKind, targetId);
10
11
  const name = strOf(op["name"] || op["state_name"]).trim();
@@ -32,15 +33,12 @@ export function op_state_add(__ctx) {
32
33
  if (existingStates.some((s) => strOf(s["state_name"] || s["name"]) === name)) {
33
34
  throw opErr("SCRIPT OP BLOCKED: State name exists", "State name exists.", { required: ["unused state name"], received: [name], nextSteps: ["Rename the existing state or choose another name."], op: kind, errorCode: "STATE_NAME_EXISTS" });
34
35
  }
35
- const state = { state_id: stateId, state_name: name };
36
- if (description)
37
- state["description"] = description;
38
- existingStates.push(state);
36
+ existingStates.push({ state_id: stateId, state_name: name, description });
39
37
  op["state_id"] = stateId;
40
38
  applied.push(kind);
41
39
  }
42
40
  export function op_state_rename(__ctx) {
43
- const { script, op, sourceText, applied, kind } = __ctx;
41
+ const { script, op, applied, kind } = __ctx;
44
42
  const [targetKind, targetId, stateId] = parseStateTarget(op["target"]);
45
43
  const state = resolveState(script, targetKind, targetId, stateId);
46
44
  const name = strOf(op["name"] || op["state_name"]).trim();
@@ -55,17 +53,24 @@ export function op_state_rename(__ctx) {
55
53
  applied.push(kind);
56
54
  }
57
55
  export function op_state_describe(__ctx) {
58
- const { script, op, sourceText, applied, kind } = __ctx;
56
+ const { script, op, applied, kind } = __ctx;
59
57
  const [targetKind, targetId, stateId] = parseStateTarget(op["target"]);
60
58
  const state = resolveState(script, targetKind, targetId, stateId);
61
59
  state["description"] = strOf(op["description"]).trim();
62
60
  applied.push(kind);
63
61
  }
64
62
  export function op_state_delete(__ctx) {
65
- const { script, op, sourceText, applied, kind } = __ctx;
63
+ const { script, op, applied, kind } = __ctx;
66
64
  const [targetKind, targetId, stateId] = parseStateTarget(op["target"]);
67
65
  const asset = resolveAssetByTarget(script, targetKind, targetId);
68
66
  resolveState(script, targetKind, targetId, stateId);
67
+ // v3 invariant: every asset keeps exactly one 'default' state.
68
+ if (stateId === "default") {
69
+ throw opErr("SCRIPT OP BLOCKED: Cannot delete default state", "The 'default' state cannot be deleted.", {
70
+ required: ["a non-default state_id"], received: [stateId],
71
+ nextSteps: ["Delete a specific state; the default is the always-present baseline."], op: kind, errorCode: "STATE_DEFAULT_PROTECTED",
72
+ });
73
+ }
69
74
  const strategy = strOf(op["strategy"]).trim();
70
75
  const replacement = strOf(op["replacement"]).trim();
71
76
  if (strategy !== "replace" && strategy !== "remove") {
@@ -77,70 +82,49 @@ export function op_state_delete(__ctx) {
77
82
  }
78
83
  validateStateForTarget(script, targetKind, targetId, replacement);
79
84
  }
80
- const contextField = pluralForKind(targetKind);
81
85
  const idKey = idKeyForKind(targetKind);
86
+ // Scrub scene refs that carried the deleted state: replace → replacement,
87
+ // remove → clear to null (state lives only on scene refs in v3).
82
88
  for (const ep of asList(script["episodes"])) {
83
89
  for (const scene of asList(ep["scenes"])) {
84
- const ctx = sceneContext(scene);
85
- for (const ref of contextRefsForKind(ctx, targetKind)) {
90
+ const bag = sceneRefs(scene);
91
+ let touched = false;
92
+ for (const ref of contextRefsForKind(bag, targetKind)) {
86
93
  if (strOf(ref[idKey]) === targetId && strOf(ref["state_id"]) === stateId) {
87
94
  ref["state_id"] = strategy === "replace" ? replacement : null;
95
+ touched = true;
88
96
  }
89
97
  }
90
- ctx[contextField] = contextRefsForKind(ctx, targetKind);
91
- setSceneContext(scene, ctx);
92
- for (const action of asList(scene["actions"])) {
93
- const nextChanges = [];
94
- for (const change of asList(action["state_changes"])) {
95
- if (strOf(change["target_kind"]) === targetKind && strOf(change["target_id"]) === targetId) {
96
- let touched = false;
97
- for (const stateField of ["from_state_id", "to_state_id"]) {
98
- if (strOf(change[stateField]) === stateId) {
99
- touched = true;
100
- if (strategy === "replace")
101
- change[stateField] = replacement;
102
- }
103
- }
104
- if (strategy === "remove" && touched)
105
- continue;
106
- }
107
- nextChanges.push(change);
108
- }
109
- if (action["state_changes"] !== undefined && action["state_changes"] !== null) {
110
- if (nextChanges.length > 0)
111
- action["state_changes"] = nextChanges;
112
- else
113
- delete action["state_changes"];
114
- }
115
- }
98
+ if (touched)
99
+ setSceneRefs(scene, bag);
116
100
  }
117
101
  }
118
102
  asset["states"] = asList(asset["states"]).filter((s) => strOf(s["state_id"]) !== stateId);
119
103
  applied.push(kind);
120
104
  }
121
- export function op_context_set(__ctx) {
122
- const { script, op, sourceText, applied, kind } = __ctx;
105
+ export function op_scene_ref_set(__ctx) {
106
+ const { script, op, applied, kind } = __ctx;
123
107
  const [epId, sceneId] = parseSceneRef(op["at"]);
124
108
  const [targetKind, targetId] = parseAssetTarget(op["target"]);
125
109
  setContextState(script, epId, sceneId, targetKind, targetId, strOf(op["state"] || op["state_id"]).trim());
126
110
  applied.push(kind);
127
111
  }
128
- export function op_context_clear(__ctx) {
129
- const { script, op, sourceText, applied, kind } = __ctx;
112
+ export function op_scene_ref_clear(__ctx) {
113
+ const { script, op, applied, kind } = __ctx;
130
114
  const [epId, sceneId] = parseSceneRef(op["at"]);
131
115
  const [targetKind, targetId] = parseAssetTarget(op["target"]);
132
116
  setContextState(script, epId, sceneId, targetKind, targetId, null);
133
117
  applied.push(kind);
134
118
  }
135
- export function op_context_ref_remove(__ctx) {
136
- const { script, op, sourceText, applied, kind } = __ctx;
119
+ export function op_scene_ref_remove(__ctx) {
120
+ const { script, op, applied, kind } = __ctx;
137
121
  const [epId, sceneId] = parseSceneRef(op["at"]);
138
122
  const [targetKind, targetId] = parseAssetTarget(op["target"]);
139
123
  const scene = findScene(script, epId, sceneId);
140
- const ctx = sceneContext(scene);
124
+ const bag = sceneRefs(scene);
141
125
  const idKey = idKeyForKind(targetKind);
142
- ctx[pluralForKind(targetKind)] = contextRefsForKind(ctx, targetKind).filter((ref) => strOf(ref[idKey]) !== targetId);
143
- setSceneContext(scene, ctx);
126
+ bag[pluralForKind(targetKind)] = contextRefsForKind(bag, targetKind).filter((ref) => strOf(ref[idKey]) !== targetId);
127
+ setSceneRefs(scene, bag);
144
128
  applied.push(kind);
145
129
  }
146
130
  //# sourceMappingURL=ops-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ops-state.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops-state.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-state.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,23 @@
1
- import { op_action_state_change, op_action_state_remove, op_action_transition_set, op_action_transition_clear, op_action_content_replace, op_action_content_regex_replace, op_action_type_set, op_action_actor_set, op_action_emotion_set, op_action_emotion_clear, op_action_delete, op_action_insert, op_action_move } from "./ops-action.js";
2
- import { op_actor_add, op_location_add, op_prop_add, op_asset_role_set, op_asset_rename, op_asset_describe, op_asset_alias_set, op_asset_alias_add, op_asset_alias_remove, op_asset_states_set, op_asset_merge, op_asset_delete } from "./ops-asset.js";
3
- import { op_speaker_add, op_dialogue_speakers, op_dialogue_overlap, op_speaker_delete } from "./ops-dialogue.js";
1
+ import { op_action_transition_set, op_action_transition_clear, op_action_content_replace, op_action_content_regex_replace, op_action_type_set, op_action_actor_set, op_action_emotion_set, op_action_emotion_clear, op_action_delete, op_action_insert, op_action_move } from "./ops-action.js";
2
+ import { op_actor_add, op_location_add, op_prop_add, op_asset_role_set, op_importance_set, op_asset_rename, op_asset_describe, op_asset_alias_set, op_asset_alias_add, op_asset_alias_remove, op_asset_states_set, op_asset_merge, op_asset_delete } from "./ops-asset.js";
3
+ import { op_dialogue_speaker_set } from "./ops-dialogue.js";
4
4
  import { op_episode_add, op_episode_synopsis_set, op_meta_worldview_set, op_meta_synopsis_set } from "./ops-meta.js";
5
5
  import { op_scene_insert, op_scene_split, op_scene_merge, op_scene_delete, op_scene_move } from "./ops-scene.js";
6
- import { op_state_add, op_state_rename, op_state_describe, op_state_delete, op_context_set, op_context_clear, op_context_ref_remove } from "./ops-state.js";
6
+ import { op_state_add, op_state_rename, op_state_describe, op_state_delete, op_scene_ref_set, op_scene_ref_clear, op_scene_ref_remove } from "./ops-state.js";
7
7
  import { op_extend_set, op_extend_clear } from "./ops-extend.js";
8
8
  export const OP_REGISTRY = {
9
9
  "state.add": op_state_add,
10
10
  "state.rename": op_state_rename,
11
11
  "state.describe": op_state_describe,
12
12
  "state.delete": op_state_delete,
13
- "context.set": op_context_set,
14
- "context.clear": op_context_clear,
15
- "action.state.change": op_action_state_change,
16
- "action.state.remove": op_action_state_remove,
13
+ "scene.ref.set": op_scene_ref_set,
14
+ "scene.ref.clear": op_scene_ref_clear,
15
+ "scene.ref.remove": op_scene_ref_remove,
17
16
  "action.transition.set": op_action_transition_set,
18
17
  "action.transition.clear": op_action_transition_clear,
19
18
  "action.content.replace": op_action_content_replace,
20
19
  "action.content.regex-replace": op_action_content_regex_replace,
21
- "speaker.add": op_speaker_add,
22
- "dialogue.speakers": op_dialogue_speakers,
23
- "dialogue.overlap": op_dialogue_overlap,
20
+ "dialogue.speaker.set": op_dialogue_speaker_set,
24
21
  "actor.add": op_actor_add,
25
22
  "location.add": op_location_add,
26
23
  "prop.add": op_prop_add,
@@ -29,6 +26,7 @@ export const OP_REGISTRY = {
29
26
  "meta.worldview.set": op_meta_worldview_set,
30
27
  "meta.synopsis.set": op_meta_synopsis_set,
31
28
  "asset.role.set": op_asset_role_set,
29
+ "importance.set": op_importance_set,
32
30
  "asset.rename": op_asset_rename,
33
31
  "asset.describe": op_asset_describe,
34
32
  "asset.alias.set": op_asset_alias_set,
@@ -49,8 +47,6 @@ export const OP_REGISTRY = {
49
47
  "scene.merge": op_scene_merge,
50
48
  "scene.delete": op_scene_delete,
51
49
  "scene.move": op_scene_move,
52
- "speaker.delete": op_speaker_delete,
53
- "context.ref.remove": op_context_ref_remove,
54
50
  "extend.set": op_extend_set,
55
51
  "extend.clear": op_extend_clear,
56
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAC,sBAAsB,EAAC,wBAAwB,EAAC,0BAA0B,EAAC,yBAAyB,EAAC,+BAA+B,EAAC,kBAAkB,EAAC,mBAAmB,EAAC,qBAAqB,EAAC,uBAAuB,EAAC,gBAAgB,EAAC,gBAAgB,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpU,OAAO,EAAE,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,iBAAiB,EAAC,eAAe,EAAC,iBAAiB,EAAC,kBAAkB,EAAC,kBAAkB,EAAC,qBAAqB,EAAC,mBAAmB,EAAC,cAAc,EAAC,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7O,OAAO,EAAE,cAAc,EAAC,oBAAoB,EAAC,mBAAmB,EAAC,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAC,uBAAuB,EAAC,qBAAqB,EAAC,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,eAAe,EAAC,cAAc,EAAC,cAAc,EAAC,eAAe,EAAC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAC,eAAe,EAAC,iBAAiB,EAAC,eAAe,EAAC,cAAc,EAAC,gBAAgB,EAAC,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACtJ,OAAO,EAAE,aAAa,EAAC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,WAAW,EAAE,YAAY;IACzB,cAAc,EAAE,eAAe;IAC/B,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,cAAc;IAC7B,eAAe,EAAE,gBAAgB;IACjC,qBAAqB,EAAE,sBAAsB;IAC7C,qBAAqB,EAAE,sBAAsB;IAC7C,uBAAuB,EAAE,wBAAwB;IACjD,yBAAyB,EAAE,0BAA0B;IACrD,wBAAwB,EAAE,yBAAyB;IACnD,8BAA8B,EAAE,+BAA+B;IAC/D,aAAa,EAAE,cAAc;IAC7B,mBAAmB,EAAE,oBAAoB;IACzC,kBAAkB,EAAE,mBAAmB;IACvC,WAAW,EAAE,YAAY;IACzB,cAAc,EAAE,eAAe;IAC/B,UAAU,EAAE,WAAW;IACvB,aAAa,EAAE,cAAc;IAC7B,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,gBAAgB,EAAE,iBAAiB;IACnC,iBAAiB,EAAE,kBAAkB;IACrC,iBAAiB,EAAE,kBAAkB;IACrC,oBAAoB,EAAE,qBAAqB;IAC3C,kBAAkB,EAAE,mBAAmB;IACvC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,iBAAiB,EAAE,kBAAkB;IACrC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,uBAAuB;IAC/C,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,gBAAgB;IACjC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,YAAY,EAAE,aAAa;IAC3B,gBAAgB,EAAE,iBAAiB;IACnC,oBAAoB,EAAE,qBAAqB;IAC3C,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,eAAe;CAChC,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAC,0BAA0B,EAAC,yBAAyB,EAAC,+BAA+B,EAAC,kBAAkB,EAAC,mBAAmB,EAAC,qBAAqB,EAAC,uBAAuB,EAAC,gBAAgB,EAAC,gBAAgB,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtR,OAAO,EAAE,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,iBAAiB,EAAC,iBAAiB,EAAC,eAAe,EAAC,iBAAiB,EAAC,kBAAkB,EAAC,kBAAkB,EAAC,qBAAqB,EAAC,mBAAmB,EAAC,cAAc,EAAC,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/P,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAC,uBAAuB,EAAC,qBAAqB,EAAC,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,eAAe,EAAC,cAAc,EAAC,cAAc,EAAC,eAAe,EAAC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,YAAY,EAAC,eAAe,EAAC,iBAAiB,EAAC,eAAe,EAAC,gBAAgB,EAAC,kBAAkB,EAAC,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxJ,OAAO,EAAE,aAAa,EAAC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,WAAW,EAAE,YAAY;IACzB,cAAc,EAAE,eAAe;IAC/B,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,kBAAkB;IACrC,kBAAkB,EAAE,mBAAmB;IACvC,uBAAuB,EAAE,wBAAwB;IACjD,yBAAyB,EAAE,0BAA0B;IACrD,wBAAwB,EAAE,yBAAyB;IACnD,8BAA8B,EAAE,+BAA+B;IAC/D,sBAAsB,EAAE,uBAAuB;IAC/C,WAAW,EAAE,YAAY;IACzB,cAAc,EAAE,eAAe;IAC/B,UAAU,EAAE,WAAW;IACvB,aAAa,EAAE,cAAc;IAC7B,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,gBAAgB,EAAE,iBAAiB;IACnC,gBAAgB,EAAE,iBAAiB;IACnC,cAAc,EAAE,eAAe;IAC/B,gBAAgB,EAAE,iBAAiB;IACnC,iBAAiB,EAAE,kBAAkB;IACrC,iBAAiB,EAAE,kBAAkB;IACrC,oBAAoB,EAAE,qBAAqB;IAC3C,kBAAkB,EAAE,mBAAmB;IACvC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,iBAAiB,EAAE,kBAAkB;IACrC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,uBAAuB;IAC/C,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,gBAAgB;IACjC,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,eAAe;IAC/B,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,eAAe;CAChC,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import { asList, isDict, strOf } from "./shared.js";
2
- import { sceneContext } from "../direct-core.js";
2
+ import { sceneRefs } from "./scene-refs.js";
3
3
  import { idKeyForKind, pluralForKind } from "./lookups.js";
4
- import { contextRefsForKind } from "./patch/helpers.js";
5
4
  export function stateRefSummary(kind, targetId, stateId, location, role) {
6
5
  return { target: `${kind}:${targetId}/${stateId}`, location, role };
7
6
  }
7
+ // v3: a state is referenced only where a scene's cast/props/location ref carries
8
+ // it (scene.actors[]/props[]/location.state_id). There are no per-action
9
+ // state_changes in v3, so scene refs are the whole surface.
8
10
  export function collectStateRefs(script, kind, targetId, stateId) {
9
11
  const refs = [];
10
12
  const idKey = idKeyForKind(kind);
@@ -12,141 +14,51 @@ export function collectStateRefs(script, kind, targetId, stateId) {
12
14
  const epId = strOf(ep["episode_id"]);
13
15
  for (const scene of asList(ep["scenes"])) {
14
16
  const sceneId = strOf(scene["scene_id"]);
15
- const ctx = sceneContext(scene);
16
- const refsList = contextRefsForKind(ctx, kind);
17
+ const refsList = asList(sceneRefs(scene)[pluralForKind(kind)]);
17
18
  for (let idx = 0; idx < refsList.length; idx++) {
18
19
  const ref = refsList[idx];
19
20
  if (strOf(ref[idKey]) === targetId && strOf(ref["state_id"]) === stateId) {
20
- refs.push(stateRefSummary(kind, targetId, stateId, `${epId}/${sceneId}.context.${pluralForKind(kind)}[${idx}]`, "scene_initial_state"));
21
- }
22
- }
23
- const actions = asList(scene["actions"]);
24
- for (let actionIdx = 0; actionIdx < actions.length; actionIdx++) {
25
- const changes = asList(actions[actionIdx]["state_changes"]);
26
- for (let changeIdx = 0; changeIdx < changes.length; changeIdx++) {
27
- const change = changes[changeIdx];
28
- if (strOf(change["target_kind"]) !== kind || strOf(change["target_id"]) !== targetId)
29
- continue;
30
- if (strOf(change["from_state_id"]) === stateId) {
31
- refs.push(stateRefSummary(kind, targetId, stateId, `${epId}/${sceneId}#${actionIdx}.state_changes[${changeIdx}].from_state_id`, "state_change_from"));
32
- }
33
- if (strOf(change["to_state_id"]) === stateId) {
34
- refs.push(stateRefSummary(kind, targetId, stateId, `${epId}/${sceneId}#${actionIdx}.state_changes[${changeIdx}].to_state_id`, "state_change_to"));
35
- }
21
+ refs.push(stateRefSummary(kind, targetId, stateId, `${epId}/${sceneId}.${pluralForKind(kind)}[${idx}]`, "scene_state"));
36
22
  }
37
23
  }
38
24
  }
39
25
  }
40
26
  return refs;
41
27
  }
42
- // ---------------------------------------------------------------------------
43
- // Universal address parsing + asset reverse lookup (0.6.0 namespace flatten)
44
- // ---------------------------------------------------------------------------
45
- // A union over every address format the flat top-level commands accept. The
46
- // dispatcher (CLI / usecase) picks behavior based on `kind`. Speaker addresses
47
- // use a bare `spk_XXX` form (no prefix) for terseness, mirroring how the rest
28
+ // v3: an asset is referenced by scene cast/props/location refs, by a dialogue
29
+ // line's inline speaker (action.speaker.actor_id, actors only), and by an
30
+ // action.transition_prompt.target. No speaker roster, no state_changes.
48
31
  export function collectAssetRefs(script, kind, targetId) {
49
32
  const refs = [];
50
- const isSpeaker = kind === "speaker";
51
- const target = isSpeaker ? `speaker:${targetId}` : `${kind}:${targetId}`;
52
- const idKey = isSpeaker ? null : idKeyForKind(kind);
33
+ const target = `${kind}:${targetId}`;
34
+ const idKey = idKeyForKind(kind);
53
35
  for (const ep of asList(script["episodes"])) {
54
36
  const epId = strOf(ep["episode_id"]);
55
37
  for (const scene of asList(ep["scenes"])) {
56
38
  const sceneId = strOf(scene["scene_id"]);
57
- if (!isSpeaker) {
58
- const ctx = sceneContext(scene);
59
- const refsList = contextRefsForKind(ctx, kind);
60
- for (let i = 0; i < refsList.length; i++) {
61
- if (strOf(refsList[i][idKey]) === targetId) {
62
- refs.push({
63
- target,
64
- location: `${epId}/${sceneId}.context.${pluralForKind(kind)}[${i}]`,
65
- role: `scene_${pluralForKind(kind)}`,
66
- });
67
- }
39
+ const refsList = asList(sceneRefs(scene)[pluralForKind(kind)]);
40
+ for (let i = 0; i < refsList.length; i++) {
41
+ if (strOf(refsList[i][idKey]) === targetId) {
42
+ refs.push({ target, location: `${epId}/${sceneId}.${pluralForKind(kind)}[${i}]`, role: `scene_${pluralForKind(kind)}` });
68
43
  }
69
44
  }
70
45
  const actions = asList(scene["actions"]);
71
46
  for (let actionIdx = 0; actionIdx < actions.length; actionIdx++) {
72
47
  const action = actions[actionIdx];
73
- if (kind === "actor" && strOf(action["actor_id"]) === targetId) {
74
- refs.push({
75
- target,
76
- location: `${epId}/${sceneId}#${actionIdx}.actor_id`,
77
- role: "action_actor",
78
- });
48
+ const speaker = action["speaker"];
49
+ if (kind === "actor" && isDict(speaker) && strOf(speaker["actor_id"]) === targetId) {
50
+ refs.push({ target, location: `${epId}/${sceneId}#${actionIdx}.speaker`, role: "dialogue_speaker" });
79
51
  }
80
- if (isSpeaker) {
81
- if (strOf(action["speaker_id"]) === targetId) {
82
- refs.push({
83
- target,
84
- location: `${epId}/${sceneId}#${actionIdx}.speaker_id`,
85
- role: "action_speaker",
86
- });
87
- }
88
- const speakers = asList(action["speakers"]);
89
- for (let i = 0; i < speakers.length; i++) {
90
- if (strOf(speakers[i]["speaker_id"]) === targetId) {
91
- refs.push({
92
- target,
93
- location: `${epId}/${sceneId}#${actionIdx}.speakers[${i}]`,
94
- role: "dialogue_speaker",
95
- });
96
- }
97
- }
98
- const lines = asList(action["lines"]);
99
- for (let i = 0; i < lines.length; i++) {
100
- if (strOf(lines[i]["speaker_id"]) === targetId) {
101
- refs.push({
102
- target,
103
- location: `${epId}/${sceneId}#${actionIdx}.lines[${i}].speaker_id`,
104
- role: "overlap_line_speaker",
105
- });
106
- }
107
- }
108
- }
109
- if (!isSpeaker) {
110
- const changes = asList(action["state_changes"]);
111
- for (let i = 0; i < changes.length; i++) {
112
- const change = changes[i];
113
- if (strOf(change["target_kind"]) === kind && strOf(change["target_id"]) === targetId) {
114
- refs.push({
115
- target,
116
- location: `${epId}/${sceneId}#${actionIdx}.state_changes[${i}]`,
117
- role: "state_change_target",
118
- });
119
- }
120
- }
121
- const transition = action["transition_prompt"];
122
- if (isDict(transition) && strOf(transition["target_kind"]) === kind && strOf(transition["target_id"]) === targetId) {
123
- refs.push({
124
- target,
125
- location: `${epId}/${sceneId}#${actionIdx}.transition_prompt`,
126
- role: "transition_target",
127
- });
52
+ const transition = action["transition_prompt"];
53
+ if (isDict(transition)) {
54
+ const t = strOf(transition["target"]).trim();
55
+ if (t === targetId || t === target) {
56
+ refs.push({ target, location: `${epId}/${sceneId}#${actionIdx}.transition_prompt`, role: "transition_target" });
128
57
  }
129
58
  }
130
59
  }
131
60
  }
132
61
  }
133
- // Speaker registrations pointing at this asset (actor/location/prop only).
134
- // A speaker.source_id ties an actor/location/prop to a speaker entity; the
135
- // speaker entry itself counts as a reference, so deleting / merging the
136
- // asset must surface it.
137
- if (!isSpeaker) {
138
- const speakers = asList(script["speakers"]);
139
- for (let i = 0; i < speakers.length; i++) {
140
- const s = speakers[i];
141
- if (strOf(s["source_kind"]) === kind && strOf(s["source_id"]) === targetId) {
142
- refs.push({
143
- target,
144
- location: `speakers[${i}]`,
145
- role: "speaker_source",
146
- });
147
- }
148
- }
149
- }
150
62
  return refs;
151
63
  }
152
64
  //# sourceMappingURL=refs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../src/domain/script/refs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAoB,MAAM,EAAiB,KAAK,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAa,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAE,OAAe,EAAE,QAAgB,EAAE,IAAY;IAC7G,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAe;IAC5F,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAO,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;oBACzE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,YAAY,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC;gBAC1I,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,OAAO,GAAG,MAAM,CAAO,OAAO,CAAC,SAAS,CAAE,CAAC,eAAe,CAAC,CAAC,CAAC;gBACnE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;oBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ;wBAAE,SAAS;oBAC/F,IAAI,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;wBAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,kBAAkB,SAAS,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;oBACxJ,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,kBAAkB,SAAS,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBACpJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAE9E,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB,CAAC,MAAY,EAAE,IAAY,EAAE,QAAgB;IAC3E,MAAM,IAAI,GAAW,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;IACzE,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEpD,KAAK,MAAM,EAAE,IAAI,MAAM,CAAO,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAM,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC;4BACR,MAAM;4BACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,YAAY,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;4BACnE,IAAI,EAAE,SAAS,aAAa,CAAC,IAAI,CAAC,EAAE;yBACrC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/C,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;gBAChE,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAE,CAAC;gBAEnC,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC/D,IAAI,CAAC,IAAI,CAAC;wBACR,MAAM;wBACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,WAAW;wBACpD,IAAI,EAAE,cAAc;qBACrB,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC;4BACR,MAAM;4BACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,aAAa;4BACtD,IAAI,EAAE,gBAAgB;yBACvB,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,CAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BACnD,IAAI,CAAC,IAAI,CAAC;gCACR,MAAM;gCACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,aAAa,CAAC,GAAG;gCAC1D,IAAI,EAAE,kBAAkB;6BACzB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,MAAM,KAAK,GAAG,MAAM,CAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAChD,IAAI,CAAC,IAAI,CAAC;gCACR,MAAM;gCACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,UAAU,CAAC,cAAc;gCAClE,IAAI,EAAE,sBAAsB;6BAC7B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,MAAM,CAAO,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;oBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;wBAC3B,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;4BACrF,IAAI,CAAC,IAAI,CAAC;gCACR,MAAM;gCACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,kBAAkB,CAAC,GAAG;gCAC/D,IAAI,EAAE,qBAAqB;6BAC5B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,MAAM,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;oBAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACnH,IAAI,CAAC,IAAI,CAAC;4BACR,MAAM;4BACN,QAAQ,EAAE,GAAG,IAAI,IAAI,OAAO,IAAI,SAAS,oBAAoB;4BAC7D,IAAI,EAAE,mBAAmB;yBAC1B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,yBAAyB;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,MAAM,CAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3E,IAAI,CAAC,IAAI,CAAC;oBACR,MAAM;oBACN,QAAQ,EAAE,YAAY,CAAC,GAAG;oBAC1B,IAAI,EAAE,gBAAgB;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../src/domain/script/refs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type Dict } from "./shared.js";
2
+ export declare function sceneRefs(scene: Dict): Dict;
3
+ export declare function setSceneRefs(scene: Dict, refs: Dict): void;
@@ -0,0 +1,35 @@
1
+ // v3 scene-ref accessors. In Script v3 a scene's cast/props/location live as
2
+ // top-level scene fields — scene.actors[] / scene.props[] (arrays of
3
+ // {actor_id|prop_id, state_id?}) and scene.location ({location_id, state_id?} |
4
+ // null, single-valued) — NOT the legacy scene.context{} bag. These two functions
5
+ // are the ONLY place the patch ops touch that storage, so the whole context.*
6
+ // op family operates on v3 through the same {actors,locations,props} bag shape
7
+ // the ops already expect. `locations` is synthesized as a 0-or-1 array from the
8
+ // single scene.location so multi-location callers keep working (location stays
9
+ // single-valued: setSceneRefs writes locations[0] back as scene.location).
10
+ import { asList, isDict, isList } from "./shared.js";
11
+ export function sceneRefs(scene) {
12
+ const loc = isDict(scene["location"]) ? scene["location"] : null;
13
+ return {
14
+ actors: isList(scene["actors"]) ? scene["actors"] : [],
15
+ props: isList(scene["props"]) ? scene["props"] : [],
16
+ locations: loc && String(loc["location_id"] ?? "").trim() ? [loc] : [],
17
+ };
18
+ }
19
+ // Clean a single ref to v3 shape: keep the id key, keep state_id ONLY when it is
20
+ // a real (non-null, non-empty) materialized id — v3 validation rejects a
21
+ // state_id: null (it reads as "declared but not materialized").
22
+ function cleanRef(ref, idKey) {
23
+ const out = { [idKey]: ref[idKey] };
24
+ const state = ref["state_id"];
25
+ if (state != null && String(state).trim())
26
+ out["state_id"] = state;
27
+ return out;
28
+ }
29
+ export function setSceneRefs(scene, refs) {
30
+ scene["actors"] = asList(refs["actors"]).map((r) => cleanRef(r, "actor_id"));
31
+ scene["props"] = asList(refs["props"]).map((r) => cleanRef(r, "prop_id"));
32
+ const loc = asList(refs["locations"])[0];
33
+ scene["location"] = loc && String(loc["location_id"] ?? "").trim() ? cleanRef(loc, "location_id") : null;
34
+ }
35
+ //# sourceMappingURL=scene-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-refs.js","sourceRoot":"","sources":["../../../src/domain/script/scene-refs.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,qEAAqE;AACrE,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,OAAO,EAAE,MAAM,EAAa,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,UAAU,SAAS,CAAC,KAAW;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,UAAU,CAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,QAAQ,CAAY,CAAC,CAAC,CAAC,EAAE;QAClE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,OAAO,CAAY,CAAC,CAAC,CAAC,EAAE;QAC/D,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;KACvE,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,yEAAyE;AACzE,gEAAgE;AAChE,SAAS,QAAQ,CAAC,GAAS,EAAE,KAAa;IACxC,MAAM,GAAG,GAAS,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;QAAE,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IACnE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAW,EAAE,IAAU;IAClD,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACnF,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,MAAM,CAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3G,CAAC"}
@@ -10,9 +10,9 @@ export const PATCH_OP_SCHEMA = {
10
10
  "state.describe": { required: ["target", "description"], optional: [], description: "Set a state's description." },
11
11
  "state.delete": { required: ["target", "strategy"], optional: ["replacement"], description: "Delete a state. strategy: replace|remove." },
12
12
  // asset
13
- "actor.add": { required: ["name"], optional: ["actor_id", "role_type", "description", "aliases"], description: "Register a new actor (human/character). role_type: 主角|配角." },
14
- "location.add": { required: ["name"], optional: ["location_id", "description"], description: "Register a new location." },
15
- "prop.add": { required: ["name"], optional: ["prop_id", "description"], description: "Register a new prop." },
13
+ "actor.add": { required: ["name"], optional: ["actor_id", "role_type", "importance", "description", "aliases"], description: "Register a new actor (human/character). importance: featured|background (default featured)." },
14
+ "location.add": { required: ["name"], optional: ["location_id", "importance", "description"], description: "Register a new location. importance: featured|background." },
15
+ "prop.add": { required: ["name"], optional: ["prop_id", "importance", "description"], description: "Register a new prop. importance: featured|background." },
16
16
  "episode.add": { required: [], optional: ["episode_id", "title"], description: "Append a new empty episode (no scenes)." },
17
17
  "episode.synopsis.set": { required: ["episode_id", "synopsis"], optional: [], description: "Set one episode's synopsis." },
18
18
  "asset.rename": { required: ["target", "name"], optional: [], description: "Rename an asset (actor / location / prop)." },
@@ -20,23 +20,22 @@ export const PATCH_OP_SCHEMA = {
20
20
  "asset.alias.set": { required: ["target", "aliases"], optional: [], description: "Bulk replace aliases[]." },
21
21
  "asset.alias.add": { required: ["target", "alias"], optional: [], description: "Append alias(es)." },
22
22
  "asset.alias.remove": { required: ["target", "alias"], optional: [], description: "Remove alias(es)." },
23
- "asset.states.set": { required: ["target", "states"], optional: ["asset_type"], description: "Bulk replace states[]." },
23
+ "asset.states.set": { required: ["target", "states"], optional: ["asset_type"], description: "Bulk replace states[] (the 'default' state is always preserved)." },
24
24
  "asset.role.set": { required: ["target", "role_type"], optional: [], description: "Set actor role_type (主角|配角)." },
25
+ "importance.set": { required: ["target", "importance"], optional: [], description: "Set an asset's importance tier: featured (主角/配角) | background (龙套/背景)." },
25
26
  "asset.merge": { required: ["from", "into"], optional: [], description: "Merge from asset into another; from disappears." },
26
27
  "asset.delete": { required: ["target"], optional: ["strategy", "replacement"], description: "Delete an asset. strategy: replace|remove (required if refs exist)." },
27
28
  // action
28
- "action.type.set": { required: ["at", "type"], optional: [], description: "Set action.type (dialogue|action|inner_thought)." },
29
- "action.actor.set": { required: ["at"], optional: ["actor_id"], description: "Set/clear action.actor_id." },
29
+ "action.type.set": { required: ["at", "type"], optional: [], description: "Set action.type (dialogue|action|inner_thought|transition)." },
30
+ "action.actor.set": { required: ["at"], optional: ["actor_id"], description: "Set/clear the dialogue line's speaker to an actor (action.speaker={actor_id}). Omit actor_id to clear." },
30
31
  "action.emotion.set": { required: ["at", "emotion"], optional: [], description: "Set action.emotion." },
31
32
  "action.emotion.clear": { required: ["at"], optional: [], description: "Clear action.emotion." },
32
33
  "action.content.replace": { required: ["at", "from"], optional: ["to", "all"], description: "Literal substring replace in action.content." },
33
- "action.content.regex-replace": { required: ["at", "pattern"], optional: ["to", "all"], description: "Regex (/re/flags) replace in action.content. ReDoS-guarded; refuses overlap dialogue." },
34
- "action.state.change": { required: ["at", "target", "to"], optional: ["from", "effective"], description: "Add/update a state_change on an action." },
35
- "action.state.remove": { required: ["at", "target"], optional: [], description: "Remove a state_change from an action." },
36
- "action.transition.set": { required: ["at", "target", "process", "contrast"], optional: [], description: "Set transition_prompt." },
37
- "action.transition.clear": { required: ["at", "target"], optional: [], description: "Clear transition_prompt." },
34
+ "action.content.regex-replace": { required: ["at", "pattern"], optional: ["to", "all"], description: "Regex (/re/flags) replace in action.content. ReDoS-guarded." },
35
+ "action.transition.set": { required: ["at", "target", "process", "contrast"], optional: [], description: "Set transition_prompt {target, process, contrast}." },
36
+ "action.transition.clear": { required: ["at"], optional: [], description: "Clear transition_prompt." },
38
37
  "action.delete": { required: ["at"], optional: [], description: "Remove an action; later indices shift." },
39
- "action.insert": { required: ["at", "type"], optional: ["content", "emotion", "at_index", "before", "after", "actor_id", "speaker_id"], description: "Insert an action into a scene." },
38
+ "action.insert": { required: ["at", "type"], optional: ["content", "emotion", "at_index", "before", "after", "actor_id"], description: "Insert an action into a scene. actor_id sets the inline dialogue speaker." },
40
39
  "action.move": { required: ["at", "to"], optional: [], description: "Move an action (within or across scenes)." },
41
40
  // scene
42
41
  "scene.split": { required: ["at", "at_index"], optional: ["new_scene_id"], description: "Split a scene at an action boundary." },
@@ -44,15 +43,12 @@ export const PATCH_OP_SCHEMA = {
44
43
  "scene.delete": { required: ["at"], optional: ["force"], description: "Delete a scene; empty by default, force=true for non-empty." },
45
44
  "scene.move": { required: ["at", "to"], optional: ["at_index"], description: "Move a scene to another episode." },
46
45
  "scene.insert": { required: ["at", "location"], optional: ["time", "space", "at_index", "before", "after", "scene_id"], description: "Insert a new empty scene." },
47
- // context
48
- "context.set": { required: ["at", "target"], optional: ["state", "state_id"], description: "Upsert (actor/prop) or replace (location) scene context ref + state." },
49
- "context.clear": { required: ["at", "target"], optional: [], description: "Keep ref, clear state_id." },
50
- "context.ref.remove": { required: ["at", "target"], optional: [], description: "Remove the ref entirely from scene context." },
51
- // dialogue / speaker
52
- "dialogue.speakers": { required: ["at", "speakers"], optional: ["delivery"], description: "Set dialogue speakers; delivery: single|simultaneous|group." },
53
- "dialogue.overlap": { required: ["at", "lines"], optional: [], description: "Set overlap dialogue lines[]." },
54
- "speaker.add": { required: ["kind", "name"], optional: ["source_id", "voice_desc", "speaker_id"], description: "Register a new speaker." },
55
- "speaker.delete": { required: ["target"], optional: ["strategy", "replacement"], description: "Delete a speaker. strategy: replace|remove (required if refs exist)." },
46
+ // scene refs (v3: cast/props/location live directly on the scene, no context{})
47
+ "scene.ref.set": { required: ["at", "target"], optional: ["state", "state_id"], description: "Upsert (actor/prop) or replace (location) a scene cast/prop/location ref + its state. target: actor:id|prop:id|location:id." },
48
+ "scene.ref.clear": { required: ["at", "target"], optional: [], description: "Keep the scene ref, clear its state_id." },
49
+ "scene.ref.remove": { required: ["at", "target"], optional: [], description: "Remove the ref entirely from the scene's cast/props/location." },
50
+ // dialogue speaker (v3: single inline speaker per line — actor or non-actor kind)
51
+ "dialogue.speaker.set": { required: ["at"], optional: ["actor_id", "kind", "label"], description: "Set the dialogue line's inline speaker: actor_id (an actor) OR kind (system|broadcast|offscreen|group) + optional label." },
56
52
  // extend (free-form namespace, any dimension)
57
53
  "extend.set": { required: ["at", "key", "value"], optional: [], description: "Set a free-form key on a node's extend{} namespace. at: action(ep/scn#i)|scene(ep/scn)|episode(ep)|asset(kind:id)|state(kind:id/st)|speaker(spk_x)|global. key is a flat name (dots are literal, not traversed). value is any JSON." },
58
54
  "extend.clear": { required: ["at"], optional: ["key"], description: "Delete one extend key (key set) or clear the whole extend{} container (key omitted). Empty container is removed; deleting a missing key is a no-op." },