@lingjingai/scriptctl 0.49.16 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/changes/0.50.0.md +63 -0
- package/changes/unreleased.md +2 -1
- package/dist/cli.js +26 -5
- package/dist/cli.js.map +1 -1
- package/dist/domain/authoring/apply.d.ts +1 -33
- package/dist/domain/authoring/apply.js +1 -783
- package/dist/domain/authoring/apply.js.map +1 -1
- package/dist/domain/authoring/export.d.ts +1 -7
- package/dist/domain/authoring/export.js +1 -84
- package/dist/domain/authoring/export.js.map +1 -1
- package/dist/domain/authoring/parser.d.ts +2 -3
- package/dist/domain/authoring/parser.js +2 -914
- package/dist/domain/authoring/parser.js.map +1 -1
- package/dist/domain/authoring/serializer.d.ts +1 -2
- package/dist/domain/authoring/serializer.js +1 -243
- package/dist/domain/authoring/serializer.js.map +1 -1
- package/dist/domain/authoring/shared/bracket.d.ts +4 -0
- package/dist/domain/authoring/shared/bracket.js +95 -0
- package/dist/domain/authoring/shared/bracket.js.map +1 -0
- package/dist/domain/authoring/shared/types.d.ts +12 -0
- package/dist/domain/authoring/shared/types.js +2 -0
- package/dist/domain/authoring/shared/types.js.map +1 -0
- package/dist/domain/authoring/types.d.ts +2 -87
- package/dist/domain/authoring/types.js +2 -1
- package/dist/domain/authoring/types.js.map +1 -1
- package/dist/domain/authoring/v3/apply.d.ts +33 -0
- package/dist/domain/authoring/v3/apply.js +784 -0
- package/dist/domain/authoring/v3/apply.js.map +1 -0
- package/dist/domain/authoring/v3/export.d.ts +7 -0
- package/dist/domain/authoring/v3/export.js +85 -0
- package/dist/domain/authoring/v3/export.js.map +1 -0
- package/dist/domain/authoring/v3/parser.d.ts +3 -0
- package/dist/domain/authoring/v3/parser.js +823 -0
- package/dist/domain/authoring/v3/parser.js.map +1 -0
- package/dist/domain/authoring/v3/serializer.d.ts +2 -0
- package/dist/domain/authoring/v3/serializer.js +244 -0
- package/dist/domain/authoring/v3/serializer.js.map +1 -0
- package/dist/domain/authoring/v3/types.d.ts +76 -0
- package/dist/domain/authoring/v3/types.js +2 -0
- package/dist/domain/authoring/v3/types.js.map +1 -0
- package/dist/domain/authoring/v4/apply.d.ts +40 -0
- package/dist/domain/authoring/v4/apply.js +451 -0
- package/dist/domain/authoring/v4/apply.js.map +1 -0
- package/dist/domain/authoring/v4/parser.d.ts +2 -0
- package/dist/domain/authoring/v4/parser.js +729 -0
- package/dist/domain/authoring/v4/parser.js.map +1 -0
- package/dist/domain/authoring/v4/serializer.d.ts +6 -0
- package/dist/domain/authoring/v4/serializer.js +280 -0
- package/dist/domain/authoring/v4/serializer.js.map +1 -0
- package/dist/domain/authoring/v4/types.d.ts +50 -0
- package/dist/domain/authoring/v4/types.js +2 -0
- package/dist/domain/authoring/v4/types.js.map +1 -0
- package/dist/domain/ingest/apply-plan.d.ts +1 -1
- package/dist/domain/ingest/assembler.d.ts +9 -0
- package/dist/domain/ingest/assembler.js +98 -36
- package/dist/domain/ingest/assembler.js.map +1 -1
- package/dist/domain/ingest/asset-audit.d.ts +50 -0
- package/dist/domain/ingest/asset-audit.js +196 -0
- package/dist/domain/ingest/asset-audit.js.map +1 -0
- package/dist/domain/ingest/production-validation.d.ts +5 -4
- package/dist/domain/ingest/production-validation.js +10 -25
- package/dist/domain/ingest/production-validation.js.map +1 -1
- package/dist/domain/ingest/records.d.ts +1 -1
- package/dist/domain/ingest/records.js +1 -1
- package/dist/domain/ingest/records.js.map +1 -1
- package/dist/domain/ingest/serial-context.d.ts +1 -1
- package/dist/domain/ingest/validation.d.ts +1 -11
- package/dist/domain/ingest/validation.js +1 -199
- package/dist/domain/ingest/validation.js.map +1 -1
- package/dist/domain/ingest/video-apply.js +68 -45
- package/dist/domain/ingest/video-apply.js.map +1 -1
- package/dist/domain/script/address.d.ts +1 -32
- package/dist/domain/script/address.js +1 -144
- package/dist/domain/script/address.js.map +1 -1
- package/dist/domain/script/dispatch.d.ts +14 -0
- package/dist/domain/script/dispatch.js +47 -0
- package/dist/domain/script/dispatch.js.map +1 -0
- package/dist/domain/script/lookups.d.ts +1 -33
- package/dist/domain/script/lookups.js +1 -316
- package/dist/domain/script/lookups.js.map +1 -1
- package/dist/domain/script/parse.d.ts +1 -3
- package/dist/domain/script/parse.js +1 -164
- package/dist/domain/script/parse.js.map +1 -1
- package/dist/domain/script/patch/apply.d.ts +1 -2
- package/dist/domain/script/patch/apply.js +1 -30
- package/dist/domain/script/patch/apply.js.map +1 -1
- package/dist/domain/script/patch/helpers.d.ts +1 -17
- package/dist/domain/script/patch/helpers.js +1 -210
- package/dist/domain/script/patch/helpers.js.map +1 -1
- package/dist/domain/script/patch/inline-speaker.d.ts +1 -2
- package/dist/domain/script/patch/inline-speaker.js +1 -49
- package/dist/domain/script/patch/inline-speaker.js.map +1 -1
- package/dist/domain/script/patch/ops-action.d.ts +1 -12
- package/dist/domain/script/patch/ops-action.js +1 -366
- package/dist/domain/script/patch/ops-action.js.map +1 -1
- package/dist/domain/script/patch/ops-asset.d.ts +1 -14
- package/dist/domain/script/patch/ops-asset.js +1 -364
- package/dist/domain/script/patch/ops-asset.js.map +1 -1
- package/dist/domain/script/patch/ops-dialogue.d.ts +1 -2
- package/dist/domain/script/patch/ops-dialogue.js +1 -25
- package/dist/domain/script/patch/ops-dialogue.js.map +1 -1
- package/dist/domain/script/patch/ops-extend.d.ts +1 -8
- package/dist/domain/script/patch/ops-extend.js +1 -110
- package/dist/domain/script/patch/ops-extend.js.map +1 -1
- package/dist/domain/script/patch/ops-meta.d.ts +1 -5
- package/dist/domain/script/patch/ops-meta.js +1 -81
- package/dist/domain/script/patch/ops-meta.js.map +1 -1
- package/dist/domain/script/patch/ops-scene.d.ts +1 -6
- package/dist/domain/script/patch/ops-scene.js +1 -350
- package/dist/domain/script/patch/ops-scene.js.map +1 -1
- package/dist/domain/script/patch/ops-state.d.ts +1 -8
- package/dist/domain/script/patch/ops-state.js +1 -164
- package/dist/domain/script/patch/ops-state.js.map +1 -1
- package/dist/domain/script/patch/registry.d.ts +1 -2
- package/dist/domain/script/patch/registry.js +1 -52
- package/dist/domain/script/patch/registry.js.map +1 -1
- package/dist/domain/script/patch/types.d.ts +1 -10
- package/dist/domain/script/patch/types.js +1 -1
- package/dist/domain/script/patch/types.js.map +1 -1
- package/dist/domain/script/refs.d.ts +1 -4
- package/dist/domain/script/refs.js +1 -63
- package/dist/domain/script/refs.js.map +1 -1
- package/dist/domain/script/scene-refs.d.ts +1 -3
- package/dist/domain/script/scene-refs.js +1 -34
- package/dist/domain/script/scene-refs.js.map +1 -1
- package/dist/domain/script/schema.d.ts +1 -6
- package/dist/domain/script/schema.js +1 -55
- package/dist/domain/script/schema.js.map +1 -1
- package/dist/domain/script/selector.d.ts +1 -45
- package/dist/domain/script/selector.js +1 -184
- package/dist/domain/script/selector.js.map +1 -1
- package/dist/domain/script/shared/regex.d.ts +2 -0
- package/dist/domain/script/shared/regex.js +7 -0
- package/dist/domain/script/shared/regex.js.map +1 -0
- package/dist/domain/script/shared/types.d.ts +18 -0
- package/dist/domain/script/shared/types.js +9 -0
- package/dist/domain/script/shared/types.js.map +1 -0
- package/dist/domain/script/shared/validation.d.ts +10 -0
- package/dist/domain/script/shared/validation.js +2 -0
- package/dist/domain/script/shared/validation.js.map +1 -0
- package/dist/domain/script/types.d.ts +1 -123
- package/dist/domain/script/types.js +1 -8
- package/dist/domain/script/types.js.map +1 -1
- package/dist/domain/script/v3/address.d.ts +32 -0
- package/dist/domain/script/v3/address.js +145 -0
- package/dist/domain/script/v3/address.js.map +1 -0
- package/dist/domain/script/v3/lookups.d.ts +33 -0
- package/dist/domain/script/v3/lookups.js +317 -0
- package/dist/domain/script/v3/lookups.js.map +1 -0
- package/dist/domain/script/v3/ordinal.d.ts +8 -0
- package/dist/domain/script/v3/ordinal.js +92 -0
- package/dist/domain/script/v3/ordinal.js.map +1 -0
- package/dist/domain/script/v3/parse.d.ts +3 -0
- package/dist/domain/script/v3/parse.js +165 -0
- package/dist/domain/script/v3/parse.js.map +1 -0
- package/dist/domain/script/v3/patch/apply.d.ts +2 -0
- package/dist/domain/script/v3/patch/apply.js +31 -0
- package/dist/domain/script/v3/patch/apply.js.map +1 -0
- package/dist/domain/script/v3/patch/helpers.d.ts +17 -0
- package/dist/domain/script/v3/patch/helpers.js +211 -0
- package/dist/domain/script/v3/patch/helpers.js.map +1 -0
- package/dist/domain/script/v3/patch/inline-speaker.d.ts +2 -0
- package/dist/domain/script/v3/patch/inline-speaker.js +50 -0
- package/dist/domain/script/v3/patch/inline-speaker.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-action.d.ts +12 -0
- package/dist/domain/script/v3/patch/ops-action.js +367 -0
- package/dist/domain/script/v3/patch/ops-action.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-asset.d.ts +14 -0
- package/dist/domain/script/v3/patch/ops-asset.js +365 -0
- package/dist/domain/script/v3/patch/ops-asset.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-dialogue.d.ts +2 -0
- package/dist/domain/script/v3/patch/ops-dialogue.js +26 -0
- package/dist/domain/script/v3/patch/ops-dialogue.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-extend.d.ts +8 -0
- package/dist/domain/script/v3/patch/ops-extend.js +111 -0
- package/dist/domain/script/v3/patch/ops-extend.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-meta.d.ts +5 -0
- package/dist/domain/script/v3/patch/ops-meta.js +82 -0
- package/dist/domain/script/v3/patch/ops-meta.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-scene.d.ts +6 -0
- package/dist/domain/script/v3/patch/ops-scene.js +351 -0
- package/dist/domain/script/v3/patch/ops-scene.js.map +1 -0
- package/dist/domain/script/v3/patch/ops-state.d.ts +8 -0
- package/dist/domain/script/v3/patch/ops-state.js +165 -0
- package/dist/domain/script/v3/patch/ops-state.js.map +1 -0
- package/dist/domain/script/v3/patch/registry.d.ts +2 -0
- package/dist/domain/script/v3/patch/registry.js +53 -0
- package/dist/domain/script/v3/patch/registry.js.map +1 -0
- package/dist/domain/script/v3/patch/types.d.ts +10 -0
- package/dist/domain/script/v3/patch/types.js +2 -0
- package/dist/domain/script/v3/patch/types.js.map +1 -0
- package/dist/domain/script/v3/refs.d.ts +4 -0
- package/dist/domain/script/v3/refs.js +64 -0
- package/dist/domain/script/v3/refs.js.map +1 -0
- package/dist/domain/script/v3/scene-refs.d.ts +3 -0
- package/dist/domain/script/v3/scene-refs.js +35 -0
- package/dist/domain/script/v3/scene-refs.js.map +1 -0
- package/dist/domain/script/v3/schema.d.ts +6 -0
- package/dist/domain/script/v3/schema.js +56 -0
- package/dist/domain/script/v3/schema.js.map +1 -0
- package/dist/domain/script/v3/selector.d.ts +44 -0
- package/dist/domain/script/v3/selector.js +180 -0
- package/dist/domain/script/v3/selector.js.map +1 -0
- package/dist/domain/script/v3/types.d.ts +106 -0
- package/dist/domain/script/v3/types.js +2 -0
- package/dist/domain/script/v3/types.js.map +1 -0
- package/dist/domain/script/v3/validation.d.ts +3 -0
- package/dist/domain/script/v3/validation.js +200 -0
- package/dist/domain/script/v3/validation.js.map +1 -0
- package/dist/domain/script/v4/address.d.ts +61 -0
- package/dist/domain/script/v4/address.js +100 -0
- package/dist/domain/script/v4/address.js.map +1 -0
- package/dist/domain/script/v4/factory.d.ts +2 -0
- package/dist/domain/script/v4/factory.js +13 -0
- package/dist/domain/script/v4/factory.js.map +1 -0
- package/dist/domain/script/v4/from-v3.d.ts +29 -0
- package/dist/domain/script/v4/from-v3.js +307 -0
- package/dist/domain/script/v4/from-v3.js.map +1 -0
- package/dist/domain/script/v4/ids.d.ts +27 -0
- package/dist/domain/script/v4/ids.js +63 -0
- package/dist/domain/script/v4/ids.js.map +1 -0
- package/dist/domain/script/v4/ordinal.d.ts +3 -0
- package/dist/domain/script/v4/ordinal.js +67 -0
- package/dist/domain/script/v4/ordinal.js.map +1 -0
- package/dist/domain/script/v4/parse.d.ts +3 -0
- package/dist/domain/script/v4/parse.js +18 -0
- package/dist/domain/script/v4/parse.js.map +1 -0
- package/dist/domain/script/v4/patch/apply.d.ts +3 -0
- package/dist/domain/script/v4/patch/apply.js +24 -0
- package/dist/domain/script/v4/patch/apply.js.map +1 -0
- package/dist/domain/script/v4/patch/helpers.d.ts +32 -0
- package/dist/domain/script/v4/patch/helpers.js +139 -0
- package/dist/domain/script/v4/patch/helpers.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-action.d.ts +13 -0
- package/dist/domain/script/v4/patch/ops-action.js +379 -0
- package/dist/domain/script/v4/patch/ops-action.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-asset.d.ts +17 -0
- package/dist/domain/script/v4/patch/ops-asset.js +617 -0
- package/dist/domain/script/v4/patch/ops-asset.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-extend.d.ts +11 -0
- package/dist/domain/script/v4/patch/ops-extend.js +86 -0
- package/dist/domain/script/v4/patch/ops-extend.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-meta.d.ts +5 -0
- package/dist/domain/script/v4/patch/ops-meta.js +49 -0
- package/dist/domain/script/v4/patch/ops-meta.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-scene-ref.d.ts +3 -0
- package/dist/domain/script/v4/patch/ops-scene-ref.js +98 -0
- package/dist/domain/script/v4/patch/ops-scene-ref.js.map +1 -0
- package/dist/domain/script/v4/patch/ops-structure.d.ts +6 -0
- package/dist/domain/script/v4/patch/ops-structure.js +236 -0
- package/dist/domain/script/v4/patch/ops-structure.js.map +1 -0
- package/dist/domain/script/v4/patch/registry.d.ts +2 -0
- package/dist/domain/script/v4/patch/registry.js +50 -0
- package/dist/domain/script/v4/patch/registry.js.map +1 -0
- package/dist/domain/script/v4/patch/schema.d.ts +7 -0
- package/dist/domain/script/v4/patch/schema.js +75 -0
- package/dist/domain/script/v4/patch/schema.js.map +1 -0
- package/dist/domain/script/v4/patch/types.d.ts +10 -0
- package/dist/domain/script/v4/patch/types.js +2 -0
- package/dist/domain/script/v4/patch/types.js.map +1 -0
- package/dist/domain/script/v4/selector.d.ts +11 -0
- package/dist/domain/script/v4/selector.js +125 -0
- package/dist/domain/script/v4/selector.js.map +1 -0
- package/dist/domain/script/v4/types.d.ts +120 -0
- package/dist/domain/script/v4/types.js +2 -0
- package/dist/domain/script/v4/types.js.map +1 -0
- package/dist/domain/script/v4/validation.d.ts +2 -0
- package/dist/domain/script/v4/validation.js +378 -0
- package/dist/domain/script/v4/validation.js.map +1 -0
- package/dist/help-text.js +146 -114
- package/dist/help-text.js.map +1 -1
- package/dist/llm/config.js +2 -0
- package/dist/llm/config.js.map +1 -1
- package/dist/llm/registry.d.ts +1 -0
- package/dist/llm/registry.js +3 -0
- package/dist/llm/registry.js.map +1 -1
- package/dist/llm/tasks/ingest/asset-audit.d.ts +6 -0
- package/dist/llm/tasks/ingest/asset-audit.js +164 -0
- package/dist/llm/tasks/ingest/asset-audit.js.map +1 -0
- package/dist/llm/tasks/ingest/asset-curate.d.ts +1 -1
- package/dist/llm/types.d.ts +1 -1
- package/dist/llm/types.js.map +1 -1
- package/dist/usecases/ingest/command.js +1 -1
- package/dist/usecases/ingest/final-asset-audit.d.ts +39 -0
- package/dist/usecases/ingest/final-asset-audit.js +88 -0
- package/dist/usecases/ingest/final-asset-audit.js.map +1 -0
- package/dist/usecases/ingest/pipeline.js +62 -11
- package/dist/usecases/ingest/pipeline.js.map +1 -1
- package/dist/usecases/ingest/serial-govern.d.ts +2 -1
- package/dist/usecases/ingest/serial-govern.js +11 -4
- package/dist/usecases/ingest/serial-govern.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.js +100 -14
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/dist/usecases/ingest/view-server.js +2 -2
- package/dist/usecases/ingest/view-server.js.map +1 -1
- package/dist/usecases/script/actions.js +101 -5
- package/dist/usecases/script/actions.js.map +1 -1
- package/dist/usecases/script/actors.js +16 -7
- package/dist/usecases/script/actors.js.map +1 -1
- package/dist/usecases/script/alias.js +7 -6
- package/dist/usecases/script/alias.js.map +1 -1
- package/dist/usecases/script/assets.js +18 -2
- package/dist/usecases/script/assets.js.map +1 -1
- package/dist/usecases/script/audit-assets.d.ts +4 -0
- package/dist/usecases/script/audit-assets.js +40 -0
- package/dist/usecases/script/audit-assets.js.map +1 -0
- package/dist/usecases/script/command-constraints.d.ts +36 -0
- package/dist/usecases/script/command-constraints.js +115 -0
- package/dist/usecases/script/command-constraints.js.map +1 -0
- package/dist/usecases/script/context.js +31 -4
- package/dist/usecases/script/context.js.map +1 -1
- package/dist/usecases/script/create.js +2 -2
- package/dist/usecases/script/create.js.map +1 -1
- package/dist/usecases/script/delete.js +6 -3
- package/dist/usecases/script/delete.js.map +1 -1
- package/dist/usecases/script/describe.js +7 -4
- package/dist/usecases/script/describe.js.map +1 -1
- package/dist/usecases/script/dialogue.js +15 -5
- package/dist/usecases/script/dialogue.js.map +1 -1
- package/dist/usecases/script/dispatch.d.ts +3 -0
- package/dist/usecases/script/dispatch.js +10 -0
- package/dist/usecases/script/dispatch.js.map +1 -0
- package/dist/usecases/script/do.js +74 -11
- package/dist/usecases/script/do.js.map +1 -1
- package/dist/usecases/script/emotion.js +14 -3
- package/dist/usecases/script/emotion.js.map +1 -1
- package/dist/usecases/script/episodes.js +15 -4
- package/dist/usecases/script/episodes.js.map +1 -1
- package/dist/usecases/script/export-authoring.js +35 -11
- package/dist/usecases/script/export-authoring.js.map +1 -1
- package/dist/usecases/script/extend.js +23 -15
- package/dist/usecases/script/extend.js.map +1 -1
- package/dist/usecases/script/ids.js +53 -10
- package/dist/usecases/script/ids.js.map +1 -1
- package/dist/usecases/script/insert.js +74 -38
- package/dist/usecases/script/insert.js.map +1 -1
- package/dist/usecases/script/lib.d.ts +50 -1
- package/dist/usecases/script/lib.js +599 -61
- package/dist/usecases/script/lib.js.map +1 -1
- package/dist/usecases/script/locations.js +16 -7
- package/dist/usecases/script/locations.js.map +1 -1
- package/dist/usecases/script/merge.js +8 -5
- package/dist/usecases/script/merge.js.map +1 -1
- package/dist/usecases/script/move.js +24 -5
- package/dist/usecases/script/move.js.map +1 -1
- package/dist/usecases/script/parenthetical.d.ts +3 -0
- package/dist/usecases/script/parenthetical.js +55 -0
- package/dist/usecases/script/parenthetical.js.map +1 -0
- package/dist/usecases/script/props.js +16 -7
- package/dist/usecases/script/props.js.map +1 -1
- package/dist/usecases/script/refs.js +44 -0
- package/dist/usecases/script/refs.js.map +1 -1
- package/dist/usecases/script/rename.js +7 -4
- package/dist/usecases/script/rename.js.map +1 -1
- package/dist/usecases/script/scenes.js +32 -6
- package/dist/usecases/script/scenes.js.map +1 -1
- package/dist/usecases/script/script-patch.js +180 -16
- package/dist/usecases/script/script-patch.js.map +1 -1
- package/dist/usecases/script/session.d.ts +3 -0
- package/dist/usecases/script/session.js +25 -5
- package/dist/usecases/script/session.js.map +1 -1
- package/dist/usecases/script/split.js +12 -6
- package/dist/usecases/script/split.js.map +1 -1
- package/dist/usecases/script/states.js +45 -1
- package/dist/usecases/script/states.js.map +1 -1
- package/dist/usecases/script/synopsis.js +11 -4
- package/dist/usecases/script/synopsis.js.map +1 -1
- package/dist/usecases/script/v3/mutations.d.ts +2 -0
- package/dist/usecases/script/v3/mutations.js +5 -0
- package/dist/usecases/script/v3/mutations.js.map +1 -0
- package/dist/usecases/script/v4/mutations.d.ts +2 -0
- package/dist/usecases/script/v4/mutations.js +6 -0
- package/dist/usecases/script/v4/mutations.js.map +1 -0
- package/dist/usecases/script/v4/queries.d.ts +14 -0
- package/dist/usecases/script/v4/queries.js +154 -0
- package/dist/usecases/script/v4/queries.js.map +1 -0
- package/dist/usecases/script/working-copy.js +3 -3
- package/dist/usecases/script/working-copy.js.map +1 -1
- package/dist/usecases/script/write-authoring.js +99 -5
- package/dist/usecases/script/write-authoring.js.map +1 -1
- package/package.json +3 -2
- package/skills/scriptctl/SKILL.md +122 -282
- package/skills/scriptctl/references/atomic-edit-workflow.md +23 -38
- package/skills/scriptctl/references/bulk-authoring.md +35 -154
- package/skills/scriptctl/references/ingest-workflow.md +12 -11
- package/skills/scriptctl/references/production-writing-standard.md +38 -67
- package/skills/scriptctl/references/state-reference-repair.md +19 -42
|
@@ -1,365 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { inferNonActorSpeakerKind } from "../text-util.js";
|
|
3
|
-
import { asList, isDict, isList, opErr, strOf } from "../shared.js";
|
|
4
|
-
import { assetKeys, normalizeStates, pluralForKind, pushAsset } from "../lookups.js";
|
|
5
|
-
import { parseAssetTarget } from "../address.js";
|
|
6
|
-
import { collectAssetRefs } from "../refs.js";
|
|
7
|
-
import { sceneRefs, setSceneRefs } from "../scene-refs.js";
|
|
8
|
-
import { contextRefsForKind, resolveAssetByTarget } from "./helpers.js";
|
|
9
|
-
import { mergeExtendInto } from "./ops-extend.js";
|
|
10
|
-
import { canonicalNameKey } from "../names.js";
|
|
11
|
-
const transTarget = (kind, id) => `${kind}:${id}`;
|
|
12
|
-
function assertActorNameAvailable(script, name, exceptActorId, op) {
|
|
13
|
-
const nameKey = canonicalNameKey(name);
|
|
14
|
-
const duplicate = asList(script["actors"]).find((actor) => strOf(actor["actor_id"]) !== exceptActorId
|
|
15
|
-
&& canonicalNameKey(strOf(actor["actor_name"])) === nameKey);
|
|
16
|
-
if (duplicate === undefined)
|
|
17
|
-
return;
|
|
18
|
-
throw opErr("SCRIPT OP BLOCKED: Actor name exists", "An actor already uses this canonical name.", {
|
|
19
|
-
required: ["one unique actor_name per character; put titles and nicknames in aliases"],
|
|
20
|
-
received: [`${strOf(duplicate["actor_id"])}: ${name}`],
|
|
21
|
-
nextSteps: ["Reuse the existing actor_id, or choose a distinct canonical name and keep alternate forms in aliases."],
|
|
22
|
-
op,
|
|
23
|
-
errorCode: "ACTOR_NAME_EXISTS",
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
export function op_actor_add(__ctx) {
|
|
27
|
-
const { script, op, applied, kind } = __ctx;
|
|
28
|
-
const name = strOf(op["name"] ?? op["actor_name"]).trim();
|
|
29
|
-
// Reject non-human speakers as actors up front.
|
|
30
|
-
if (name && inferNonActorSpeakerKind(name) !== "actor") {
|
|
31
|
-
throw opErr("SCRIPT OP BLOCKED: Non-human as actor", "Non-human speaker registered as actor.", {
|
|
32
|
-
required: ["a human/character name"], received: [name],
|
|
33
|
-
nextSteps: ["Non-human voices belong on dialogue lines as a non-actor speaker (dialogue.speaker.set --kind system|broadcast|offscreen|group)."],
|
|
34
|
-
op: kind, errorCode: "NONHUMAN_AS_ACTOR",
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
assertActorNameAvailable(script, name, null, kind);
|
|
38
|
-
const entity = pushAsset(script, "actor", op);
|
|
39
|
-
const roleType = strOf(op["role_type"] ?? op["role"]).trim();
|
|
40
|
-
if (roleType) {
|
|
41
|
-
if (!ROLE_TYPE_SET.has(roleType)) {
|
|
42
|
-
throw opErr("SCRIPT OP BLOCKED: Role type invalid", "Role type invalid.", {
|
|
43
|
-
required: ["role_type: 主角 or 配角"], received: [roleType],
|
|
44
|
-
nextSteps: ["Use a supported actor role_type, or omit to leave it unset."],
|
|
45
|
-
op: kind, errorCode: "ROLE_TYPE_INVALID",
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
entity["role_type"] = roleType;
|
|
49
|
-
}
|
|
50
|
-
const aliases = isList(op["aliases"]) ? op["aliases"].map((a) => strOf(a).trim()).filter(Boolean) : [];
|
|
51
|
-
if (aliases.length)
|
|
52
|
-
entity["aliases"] = aliases;
|
|
53
|
-
applied.push(kind);
|
|
54
|
-
}
|
|
55
|
-
export function op_location_add(__ctx) {
|
|
56
|
-
const { script, op, applied, kind } = __ctx;
|
|
57
|
-
pushAsset(script, "location", op);
|
|
58
|
-
applied.push(kind);
|
|
59
|
-
}
|
|
60
|
-
export function op_prop_add(__ctx) {
|
|
61
|
-
const { script, op, applied, kind } = __ctx;
|
|
62
|
-
pushAsset(script, "prop", op);
|
|
63
|
-
applied.push(kind);
|
|
64
|
-
}
|
|
65
|
-
export function op_asset_role_set(__ctx) {
|
|
66
|
-
const { script, op, applied, kind } = __ctx;
|
|
67
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
68
|
-
if (assetKind !== "actor") {
|
|
69
|
-
throw opErr("SCRIPT OP BLOCKED: Role only on actors", "Role applies to actor only.", {
|
|
70
|
-
required: ["actor:<id>"], received: [strOf(op["target"])],
|
|
71
|
-
nextSteps: ["Use an actor target."], op: kind, errorCode: "ROLE_TARGET_INVALID",
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
const asset = resolveAssetByTarget(script, "actor", assetId);
|
|
75
|
-
const roleType = strOf(op["role_type"] ?? op["role"]).trim();
|
|
76
|
-
if (!ROLE_TYPE_SET.has(roleType)) {
|
|
77
|
-
throw opErr("SCRIPT OP BLOCKED: Role type invalid", "Role type invalid.", {
|
|
78
|
-
required: ["role_type: 主角 or 配角"], received: [roleType || "<empty>"],
|
|
79
|
-
nextSteps: ["Use a supported actor role_type."], op: kind, errorCode: "ROLE_TYPE_INVALID",
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
asset["role_type"] = roleType;
|
|
83
|
-
applied.push(kind);
|
|
84
|
-
}
|
|
85
|
-
export function op_importance_set(__ctx) {
|
|
86
|
-
const { script, op, applied, kind } = __ctx;
|
|
87
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
88
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
89
|
-
const importance = strOf(op["importance"]).trim();
|
|
90
|
-
if (!IMPORTANCE_TIER_SET.has(importance)) {
|
|
91
|
-
throw opErr("SCRIPT OP BLOCKED: Importance invalid", "Importance invalid.", {
|
|
92
|
-
required: ["importance: featured or background"], received: [importance || "<empty>"],
|
|
93
|
-
nextSteps: ["Use featured (主角/配角) or background (龙套/背景)."], op: kind, errorCode: "IMPORTANCE_INVALID",
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
asset["importance"] = importance;
|
|
97
|
-
applied.push(kind);
|
|
98
|
-
}
|
|
99
|
-
export function op_asset_rename(__ctx) {
|
|
100
|
-
const { script, op, applied, kind } = __ctx;
|
|
101
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
102
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
103
|
-
const newName = strOf(op["name"] ?? op["new_name"]).trim();
|
|
104
|
-
if (!newName) {
|
|
105
|
-
throw opErr("SCRIPT OP BLOCKED: Name empty", "Name empty.", {
|
|
106
|
-
required: ["name"], received: [JSON.stringify(op)],
|
|
107
|
-
nextSteps: ["Provide a non-empty name."], op: kind, errorCode: "NAME_EMPTY",
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
const [, , nameKey] = assetKeys(assetKind);
|
|
111
|
-
if (assetKind === "actor")
|
|
112
|
-
assertActorNameAvailable(script, newName, assetId, kind);
|
|
113
|
-
asset[nameKey] = newName;
|
|
114
|
-
applied.push(kind);
|
|
115
|
-
}
|
|
116
|
-
export function op_asset_describe(__ctx) {
|
|
117
|
-
const { script, op, applied, kind } = __ctx;
|
|
118
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
119
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
120
|
-
const description = strOf(op["description"]).trim();
|
|
121
|
-
if (!description) {
|
|
122
|
-
throw opErr("SCRIPT OP BLOCKED: Description empty", "Description empty.", {
|
|
123
|
-
required: ["description"], received: [JSON.stringify(op)],
|
|
124
|
-
nextSteps: ["Provide a concise grounded description."], op: kind, errorCode: "DESCRIPTION_EMPTY",
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
asset["description"] = description;
|
|
128
|
-
applied.push(kind);
|
|
129
|
-
}
|
|
130
|
-
export function op_asset_alias_set(__ctx) {
|
|
131
|
-
const { script, op, applied, kind } = __ctx;
|
|
132
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
133
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
134
|
-
const aliases = op["aliases"];
|
|
135
|
-
if (!isList(aliases) || aliases.some((it) => typeof it !== "string")) {
|
|
136
|
-
throw opErr("SCRIPT OP BLOCKED: Aliases invalid", "Aliases invalid.", {
|
|
137
|
-
required: ["aliases: array of strings"], received: [JSON.stringify(op)],
|
|
138
|
-
nextSteps: ["Pass a string array."], op: kind, errorCode: "ALIASES_INVALID",
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
const seen = new Set();
|
|
142
|
-
const cleaned = [];
|
|
143
|
-
for (const item of aliases) {
|
|
144
|
-
const trimmed = item.trim();
|
|
145
|
-
if (trimmed && !seen.has(trimmed)) {
|
|
146
|
-
seen.add(trimmed);
|
|
147
|
-
cleaned.push(trimmed);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
asset["aliases"] = cleaned;
|
|
151
|
-
applied.push(kind);
|
|
152
|
-
}
|
|
153
|
-
export function op_asset_alias_add(__ctx) {
|
|
154
|
-
const { script, op, applied, kind } = __ctx;
|
|
155
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
156
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
157
|
-
const rawAdd = op["alias"] ?? op["aliases"];
|
|
158
|
-
const toAdd = isList(rawAdd)
|
|
159
|
-
? rawAdd.map((v) => strOf(v).trim()).filter((v) => v)
|
|
160
|
-
: strOf(rawAdd).trim() ? [strOf(rawAdd).trim()] : [];
|
|
161
|
-
if (toAdd.length === 0) {
|
|
162
|
-
throw opErr("SCRIPT OP BLOCKED: Alias empty", "Alias empty.", {
|
|
163
|
-
required: ["alias: non-empty string or array"], received: [JSON.stringify(op)],
|
|
164
|
-
nextSteps: ["Pass --add <alias> at least once."], op: kind, errorCode: "ALIAS_EMPTY",
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
const existing = asList(asset["aliases"]).map((s) => strOf(s));
|
|
168
|
-
const seen = new Set(existing);
|
|
169
|
-
for (const alias of toAdd) {
|
|
170
|
-
if (!seen.has(alias)) {
|
|
171
|
-
existing.push(alias);
|
|
172
|
-
seen.add(alias);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
asset["aliases"] = existing;
|
|
176
|
-
applied.push(kind);
|
|
177
|
-
}
|
|
178
|
-
export function op_asset_alias_remove(__ctx) {
|
|
179
|
-
const { script, op, applied, kind } = __ctx;
|
|
180
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
181
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
182
|
-
const rawRemove = op["alias"] ?? op["aliases"];
|
|
183
|
-
const toRemove = new Set(isList(rawRemove)
|
|
184
|
-
? rawRemove.map((v) => strOf(v).trim()).filter((v) => v)
|
|
185
|
-
: strOf(rawRemove).trim() ? [strOf(rawRemove).trim()] : []);
|
|
186
|
-
if (toRemove.size === 0) {
|
|
187
|
-
throw opErr("SCRIPT OP BLOCKED: Alias empty", "Alias empty.", {
|
|
188
|
-
required: ["alias: non-empty string or array"], received: [JSON.stringify(op)],
|
|
189
|
-
nextSteps: ["Pass --remove <alias> at least once."], op: kind, errorCode: "ALIAS_EMPTY",
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
asset["aliases"] = asList(asset["aliases"]).map((s) => strOf(s)).filter((a) => !toRemove.has(a));
|
|
193
|
-
applied.push(kind);
|
|
194
|
-
}
|
|
195
|
-
export function op_asset_states_set(__ctx) {
|
|
196
|
-
const { script, op, applied, kind } = __ctx;
|
|
197
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
198
|
-
const asset = resolveAssetByTarget(script, assetKind, assetId);
|
|
199
|
-
// v3 keeps exactly one 'default' state; preserve the existing default (or
|
|
200
|
-
// synthesize one) and append the caller's non-default states.
|
|
201
|
-
const existingDefault = asList(asset["states"]).find((s) => strOf(s["state_id"]) === "default")
|
|
202
|
-
?? { state_id: "default", state_name: "default", description: "" };
|
|
203
|
-
const rest = normalizeStates(script, op["states"], assetKind).filter((s) => strOf(s["state_id"]) !== "default");
|
|
204
|
-
asset["states"] = [existingDefault, ...rest];
|
|
205
|
-
applied.push(kind);
|
|
206
|
-
}
|
|
207
|
-
export function op_asset_merge(__ctx) {
|
|
208
|
-
const { script, op, applied, kind } = __ctx;
|
|
209
|
-
// `from` disappears, `into` keeps everything.
|
|
210
|
-
const fromRaw = op["from"] ?? op["source"];
|
|
211
|
-
const intoRaw = op["into"] ?? op["target"];
|
|
212
|
-
const [fromKind, fromId] = parseAssetTarget(fromRaw);
|
|
213
|
-
const [intoKind, intoId] = parseAssetTarget(intoRaw);
|
|
214
|
-
if (fromKind !== intoKind) {
|
|
215
|
-
throw opErr("SCRIPT OP BLOCKED: Merge kind mismatch", "Merge source and target must be the same kind.", {
|
|
216
|
-
required: ["same kind on both sides (actor/actor, location/location, prop/prop)"],
|
|
217
|
-
received: [`${fromKind}:${fromId} → ${intoKind}:${intoId}`],
|
|
218
|
-
nextSteps: ["Use a same-kind target."], op: kind, errorCode: "MERGE_KIND_MISMATCH",
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
if (fromId === intoId) {
|
|
222
|
-
throw opErr("SCRIPT OP BLOCKED: Merge self", "Cannot merge an asset into itself.", {
|
|
223
|
-
required: ["distinct from / into assets"],
|
|
224
|
-
received: [`${fromKind}:${fromId} → ${intoKind}:${intoId}`],
|
|
225
|
-
nextSteps: ["Pick two different assets to merge."], op: kind, errorCode: "MERGE_SELF",
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
const [key, idKey] = assetKeys(fromKind);
|
|
229
|
-
const fromAsset = resolveAssetByTarget(script, fromKind, fromId);
|
|
230
|
-
const intoAsset = resolveAssetByTarget(script, intoKind, intoId);
|
|
231
|
-
const intoStateIds = new Set(asList(intoAsset["states"]).map((state) => strOf(state["state_id"])));
|
|
232
|
-
// Pre-flight: every rewritten ref must remain valid on the survivor. Actor
|
|
233
|
-
// refs may repeat with different states; props and locations remain
|
|
234
|
-
// single-valued and therefore still cannot collapse conflicting refs.
|
|
235
|
-
for (const ep of asList(script["episodes"])) {
|
|
236
|
-
for (const scene of asList(ep["scenes"])) {
|
|
237
|
-
const refList = contextRefsForKind(sceneRefs(scene), fromKind);
|
|
238
|
-
const fromRefs = refList.filter((ref) => strOf(ref[idKey]) === fromId);
|
|
239
|
-
const missingStateIds = Array.from(new Set(fromRefs
|
|
240
|
-
.map((ref) => strOf(ref["state_id"]).trim())
|
|
241
|
-
.filter((stateId) => stateId && !intoStateIds.has(stateId))));
|
|
242
|
-
if (missingStateIds.length > 0) {
|
|
243
|
-
throw opErr("SCRIPT OP BLOCKED: Merge state conflict", "Merge would leave scene refs pointing at states not defined on the survivor.", {
|
|
244
|
-
required: [`${intoKind}:${intoId} materializes every state_id referenced by ${fromKind}:${fromId}`],
|
|
245
|
-
received: [`${ep["episode_id"]}/${scene["scene_id"]}: missing ${missingStateIds.join(", ")}`],
|
|
246
|
-
nextSteps: ["Add the missing states to the survivor or reassign the source scene refs, then retry merge."],
|
|
247
|
-
op: kind, errorCode: "MERGE_STATE_CONFLICT",
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
if (fromKind === "actor")
|
|
251
|
-
continue;
|
|
252
|
-
const fromRef = fromRefs[0];
|
|
253
|
-
const intoRef = refList.find((ref) => strOf(ref[idKey]) === intoId);
|
|
254
|
-
if (fromRef && intoRef && strOf(fromRef["state_id"]) !== strOf(intoRef["state_id"])) {
|
|
255
|
-
throw opErr("SCRIPT OP BLOCKED: Merge state conflict", "Merge has conflicting state_ids in a shared scene.", {
|
|
256
|
-
required: ["from and into agree on state_id in every scene where both appear"],
|
|
257
|
-
received: [`${ep["episode_id"]}/${scene["scene_id"]}: ${fromId}=${strOf(fromRef["state_id"]) || "null"}, ${intoId}=${strOf(intoRef["state_id"]) || "null"}`],
|
|
258
|
-
nextSteps: ["Resolve the state divergence (scene.ref.set) then retry merge."],
|
|
259
|
-
op: kind, errorCode: "MERGE_STATE_CONFLICT",
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
mergeExtendInto(fromAsset, intoAsset);
|
|
265
|
-
script[key] = asList(script[key]).filter((it) => strOf(it[idKey]) !== fromId);
|
|
266
|
-
// Rewrite refs: scene cast/props/location, dialogue speaker (actor), transition target.
|
|
267
|
-
const fromTgt = transTarget(fromKind, fromId);
|
|
268
|
-
for (const ep of asList(script["episodes"])) {
|
|
269
|
-
for (const scene of asList(ep["scenes"])) {
|
|
270
|
-
const bag = sceneRefs(scene);
|
|
271
|
-
const refList = contextRefsForKind(bag, fromKind);
|
|
272
|
-
for (const ref of refList) {
|
|
273
|
-
if (strOf(ref[idKey]) === fromId)
|
|
274
|
-
ref[idKey] = intoId;
|
|
275
|
-
}
|
|
276
|
-
if (fromKind === "actor") {
|
|
277
|
-
// Actor refs are ordered instances and may repeat within a scene.
|
|
278
|
-
// Rewriting identity must not collapse those instances or their states.
|
|
279
|
-
bag[pluralForKind(fromKind)] = refList;
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
const seen = new Set();
|
|
283
|
-
bag[pluralForKind(fromKind)] = refList.filter((ref) => {
|
|
284
|
-
const k = strOf(ref[idKey]);
|
|
285
|
-
if (seen.has(k))
|
|
286
|
-
return false;
|
|
287
|
-
seen.add(k);
|
|
288
|
-
return true;
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
setSceneRefs(scene, bag);
|
|
292
|
-
for (const action of asList(scene["actions"])) {
|
|
293
|
-
const speaker = action["speaker"];
|
|
294
|
-
if (fromKind === "actor" && isDict(speaker) && strOf(speaker["actor_id"]) === fromId) {
|
|
295
|
-
speaker["actor_id"] = intoId;
|
|
296
|
-
}
|
|
297
|
-
const transition = action["transition_prompt"];
|
|
298
|
-
if (isDict(transition)) {
|
|
299
|
-
const t = strOf(transition["target"]).trim();
|
|
300
|
-
if (t === fromTgt || t === fromId)
|
|
301
|
-
transition["target"] = transTarget(fromKind, intoId);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
applied.push(kind);
|
|
307
|
-
}
|
|
308
|
-
export function op_asset_delete(__ctx) {
|
|
309
|
-
const { script, op, applied, kind } = __ctx;
|
|
310
|
-
const [assetKind, assetId] = parseAssetTarget(op["target"]);
|
|
311
|
-
resolveAssetByTarget(script, assetKind, assetId);
|
|
312
|
-
const refs = collectAssetRefs(script, assetKind, assetId);
|
|
313
|
-
const strategy = strOf(op["strategy"]).trim();
|
|
314
|
-
if (refs.length > 0 && !strategy) {
|
|
315
|
-
throw opErr("SCRIPT OP BLOCKED: Asset has refs", `Asset is referenced ${refs.length} time(s).`, {
|
|
316
|
-
required: ["--strategy replace|remove"], received: [`refs=${refs.length}`],
|
|
317
|
-
nextSteps: ["Use --strategy replace --replacement <addr> to remap, or --strategy remove to scrub refs."],
|
|
318
|
-
op: kind, errorCode: "ASSET_HAS_REFS",
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
if (strategy === "replace") {
|
|
322
|
-
const replacementRaw = op["replacement"] ?? op["into"];
|
|
323
|
-
const [replacementKind, replacementId] = parseAssetTarget(replacementRaw);
|
|
324
|
-
if (replacementKind !== assetKind) {
|
|
325
|
-
throw opErr("SCRIPT OP BLOCKED: Replacement kind mismatch", "Replacement must be same kind.", {
|
|
326
|
-
required: ["replacement same kind as target"], received: [`${assetKind} vs ${replacementKind}`],
|
|
327
|
-
nextSteps: ["Pass a same-kind replacement."], op: kind, errorCode: "REPLACEMENT_KIND_MISMATCH",
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
resolveAssetByTarget(script, replacementKind, replacementId);
|
|
331
|
-
__ctx.runOps([{ op: "asset.merge", from: op["target"], into: replacementRaw }]);
|
|
332
|
-
applied.push(kind);
|
|
333
|
-
}
|
|
334
|
-
else if (strategy === "remove" || refs.length === 0) {
|
|
335
|
-
const [key, idKey] = assetKeys(assetKind);
|
|
336
|
-
const tgt = transTarget(assetKind, assetId);
|
|
337
|
-
script[key] = asList(script[key]).filter((it) => strOf(it[idKey]) !== assetId);
|
|
338
|
-
for (const ep of asList(script["episodes"])) {
|
|
339
|
-
for (const scene of asList(ep["scenes"])) {
|
|
340
|
-
const bag = sceneRefs(scene);
|
|
341
|
-
bag[pluralForKind(assetKind)] = contextRefsForKind(bag, assetKind).filter((ref) => strOf(ref[idKey]) !== assetId);
|
|
342
|
-
setSceneRefs(scene, bag);
|
|
343
|
-
for (const action of asList(scene["actions"])) {
|
|
344
|
-
const speaker = action["speaker"];
|
|
345
|
-
if (assetKind === "actor" && isDict(speaker) && strOf(speaker["actor_id"]) === assetId)
|
|
346
|
-
delete action["speaker"];
|
|
347
|
-
const transition = action["transition_prompt"];
|
|
348
|
-
if (isDict(transition)) {
|
|
349
|
-
const t = strOf(transition["target"]).trim();
|
|
350
|
-
if (t === tgt || t === assetId)
|
|
351
|
-
delete action["transition_prompt"];
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
applied.push(kind);
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
throw opErr("SCRIPT OP BLOCKED: Strategy invalid", "Strategy invalid.", {
|
|
360
|
-
required: ["strategy: replace or remove"], received: [strategy],
|
|
361
|
-
nextSteps: ["Use replace (with --replacement) or remove."], op: kind, errorCode: "DELETE_STRATEGY_INVALID",
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
}
|
|
1
|
+
export * from "../v3/patch/ops-asset.js";
|
|
365
2
|
//# sourceMappingURL=ops-asset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-asset.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-asset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ops-asset.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-asset.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function op_dialogue_speaker_set(__ctx: OpCtx): void;
|
|
1
|
+
export * from "../v3/patch/ops-dialogue.js";
|
|
@@ -1,26 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { parseActionRef } from "../address.js";
|
|
3
|
-
import { assertActorReferencedByScene } from "./helpers.js";
|
|
4
|
-
import { inlineSpeakerFromOp } from "./inline-speaker.js";
|
|
5
|
-
// v3 dialogue speaker: a single inline speaker per line. Either an actor
|
|
6
|
-
// (speaker = {actor_id}) or a non-actor source (speaker = {kind, label?}).
|
|
7
|
-
export function op_dialogue_speaker_set(__ctx) {
|
|
8
|
-
const { script, op, applied, kind } = __ctx;
|
|
9
|
-
const [epId, sceneId, actionIndex] = parseActionRef(op["at"]);
|
|
10
|
-
const speaker = inlineSpeakerFromOp(script, op, kind);
|
|
11
|
-
const actorId = speaker["actor_id"];
|
|
12
|
-
if (typeof actorId === "string") {
|
|
13
|
-
assertActorReferencedByScene(script, epId, sceneId, actorId, kind);
|
|
14
|
-
}
|
|
15
|
-
const action = findAction(script, epId, sceneId, actionIndex);
|
|
16
|
-
action["type"] = "dialogue";
|
|
17
|
-
action["speaker"] = speaker;
|
|
18
|
-
// strip any legacy speaker-identity fields
|
|
19
|
-
delete action["speakers"];
|
|
20
|
-
delete action["lines"];
|
|
21
|
-
delete action["speaker_id"];
|
|
22
|
-
delete action["actor_id"];
|
|
23
|
-
delete action["delivery"];
|
|
24
|
-
applied.push(kind);
|
|
25
|
-
}
|
|
1
|
+
export * from "../v3/patch/ops-dialogue.js";
|
|
26
2
|
//# sourceMappingURL=ops-dialogue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-dialogue.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-dialogue.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ops-dialogue.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-dialogue.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
@@ -1,8 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { type AnyAddress } from "../address.js";
|
|
3
|
-
import type { OpCtx } from "./types.js";
|
|
4
|
-
export declare function resolveExtendHost(script: Dict, addr: AnyAddress): Dict;
|
|
5
|
-
export declare function op_extend_set(__ctx: OpCtx): void;
|
|
6
|
-
export declare function op_extend_clear(__ctx: OpCtx): void;
|
|
7
|
-
export declare function readExtend(script: Dict, addr: AnyAddress): Dict;
|
|
8
|
-
export declare function mergeExtendInto(fromNode: Dict, intoNode: Dict): void;
|
|
1
|
+
export * from "../v3/patch/ops-extend.js";
|
|
@@ -1,111 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
// (global / episode / scene / action / asset / state / speaker) gets the SAME
|
|
3
|
-
// two ops because the operation is byte-identical everywhere: locate the node
|
|
4
|
-
// by address kind, then mutate a `extend{}` dict on its top level. Keeping the
|
|
5
|
-
// container at the node TOP LEVEL (never inside scene.context) is what lets the
|
|
6
|
-
// in-place edit ops preserve it automatically.
|
|
7
|
-
import { isDict, opErr, strOf } from "../shared.js";
|
|
8
|
-
import { parseAnyAddress } from "../address.js";
|
|
9
|
-
import { findAction, findEpisode, findScene } from "../lookups.js";
|
|
10
|
-
import { resolveAssetByTarget, resolveState } from "./helpers.js";
|
|
11
|
-
const EXTEND_KEY_RE = /^[A-Za-z_][A-Za-z0-9_.-]*$/;
|
|
12
|
-
const EXTEND_KEY_MAX = 128;
|
|
13
|
-
// Resolve any address kind to the live node dict that owns the extend{}. global
|
|
14
|
-
// is the script root itself. Reuses the existing throw-on-missing resolvers, so
|
|
15
|
-
// a bad id surfaces the same ASSET_NOT_FOUND / STATE_NOT_FOUND / SPEAKER_NOT_FOUND.
|
|
16
|
-
export function resolveExtendHost(script, addr) {
|
|
17
|
-
switch (addr.kind) {
|
|
18
|
-
case "global": return script;
|
|
19
|
-
case "episode": return findEpisode(script, addr.episodeId);
|
|
20
|
-
case "scene": return findScene(script, addr.episodeId, addr.sceneId);
|
|
21
|
-
case "action": return findAction(script, addr.episodeId, addr.sceneId, addr.actionIndex);
|
|
22
|
-
case "asset": return resolveAssetByTarget(script, addr.assetKind, addr.assetId);
|
|
23
|
-
case "state": return resolveState(script, addr.assetKind, addr.assetId, addr.stateId);
|
|
24
|
-
case "speaker":
|
|
25
|
-
// v3 has no speaker roster; dialogue speakers are inline on each action.
|
|
26
|
-
throw opErr("SCRIPT OP BLOCKED: speaker addresses removed", "v3 has no speaker roster.", {
|
|
27
|
-
required: ["a global/episode/scene/action/asset/state address"], received: [addr.speakerId],
|
|
28
|
-
nextSteps: ["Edit a dialogue line's speaker with dialogue.speaker.set."],
|
|
29
|
-
op: "extend", errorCode: "SPEAKER_ADDR_REMOVED",
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function validateExtendKey(raw, opKind) {
|
|
34
|
-
const key = strOf(raw).trim();
|
|
35
|
-
if (!key) {
|
|
36
|
-
throw opErr("SCRIPT OP BLOCKED: extend key empty", "extend key empty.", {
|
|
37
|
-
required: ["a non-empty key"], received: ["<empty>"],
|
|
38
|
-
nextSteps: ["Pass a key like camera_note or art_style."],
|
|
39
|
-
op: opKind, errorCode: "EXTEND_KEY_EMPTY",
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
if (key.length > EXTEND_KEY_MAX || !EXTEND_KEY_RE.test(key)) {
|
|
43
|
-
throw opErr("SCRIPT OP BLOCKED: extend key invalid", "extend key invalid.", {
|
|
44
|
-
required: [`flat key matching ${EXTEND_KEY_RE.source} (<=${EXTEND_KEY_MAX} chars)`],
|
|
45
|
-
received: [key],
|
|
46
|
-
nextSteps: ["Use letters/digits/_/-/. starting with a letter or _. Dots are literal, not a path."],
|
|
47
|
-
op: opKind, errorCode: "EXTEND_KEY_INVALID",
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return key;
|
|
51
|
-
}
|
|
52
|
-
export function op_extend_set(__ctx) {
|
|
53
|
-
const { script, op, applied, kind } = __ctx;
|
|
54
|
-
const addr = parseAnyAddress(op["at"]);
|
|
55
|
-
const host = resolveExtendHost(script, addr);
|
|
56
|
-
const key = validateExtendKey(op["key"], kind);
|
|
57
|
-
if (!("value" in op)) {
|
|
58
|
-
throw opErr("SCRIPT OP BLOCKED: extend value missing", "extend value missing.", {
|
|
59
|
-
required: ["a value field (any JSON)"], received: ["<missing>"],
|
|
60
|
-
nextSteps: ["Pass value on the op, e.g. {\"op\":\"extend.set\",\"at\":\"global\",\"key\":\"k\",\"value\":1}."],
|
|
61
|
-
op: kind, errorCode: "EXTEND_VALUE_MISSING",
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
// A non-dict extend (a malformed hand-written patch) is silently rebuilt.
|
|
65
|
-
if (!isDict(host["extend"]))
|
|
66
|
-
host["extend"] = {};
|
|
67
|
-
host["extend"][key] = op["value"];
|
|
68
|
-
applied.push(kind);
|
|
69
|
-
}
|
|
70
|
-
export function op_extend_clear(__ctx) {
|
|
71
|
-
const { script, op, applied, kind } = __ctx;
|
|
72
|
-
const addr = parseAnyAddress(op["at"]);
|
|
73
|
-
// A missing HOST node (e.g. a since-merged asset) still throws here, like every
|
|
74
|
-
// other op — you cannot clear extend on something that no longer exists.
|
|
75
|
-
const host = resolveExtendHost(script, addr);
|
|
76
|
-
const key = strOf(op["key"]).trim();
|
|
77
|
-
// Once the host resolves, deleting a missing key / clearing an absent
|
|
78
|
-
// container is an idempotent no-op (no throw) — friendlier for agent retries.
|
|
79
|
-
if (!isDict(host["extend"])) {
|
|
80
|
-
applied.push(kind);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const ext = host["extend"];
|
|
84
|
-
if (key)
|
|
85
|
-
delete ext[key];
|
|
86
|
-
else
|
|
87
|
-
for (const k of Object.keys(ext))
|
|
88
|
-
delete ext[k];
|
|
89
|
-
if (Object.keys(ext).length === 0)
|
|
90
|
-
delete host["extend"];
|
|
91
|
-
applied.push(kind);
|
|
92
|
-
}
|
|
93
|
-
// Read-only helper for the `extend <addr>` list mode. Returns the (possibly
|
|
94
|
-
// empty) extend dict for an address without mutating anything.
|
|
95
|
-
export function readExtend(script, addr) {
|
|
96
|
-
const host = resolveExtendHost(script, addr);
|
|
97
|
-
return isDict(host["extend"]) ? host["extend"] : {};
|
|
98
|
-
}
|
|
99
|
-
// Shallow-merge two extend containers (into wins on key conflict). Used by the
|
|
100
|
-
// structural merge ops (scene.merge / asset.merge) so the dropped `from` node's
|
|
101
|
-
// extend keys are not silently lost.
|
|
102
|
-
export function mergeExtendInto(fromNode, intoNode) {
|
|
103
|
-
if (!isDict(fromNode["extend"]))
|
|
104
|
-
return;
|
|
105
|
-
const fromExt = fromNode["extend"];
|
|
106
|
-
if (Object.keys(fromExt).length === 0)
|
|
107
|
-
return;
|
|
108
|
-
const intoExt = isDict(intoNode["extend"]) ? intoNode["extend"] : {};
|
|
109
|
-
intoNode["extend"] = { ...fromExt, ...intoExt };
|
|
110
|
-
}
|
|
1
|
+
export * from "../v3/patch/ops-extend.js";
|
|
111
2
|
//# sourceMappingURL=ops-extend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ops-extend.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-extend.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"ops-extend.js","sourceRoot":"","sources":["../../../../src/domain/script/patch/ops-extend.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function op_episode_add(__ctx: OpCtx): void;
|
|
3
|
-
export declare function op_episode_synopsis_set(__ctx: OpCtx): void;
|
|
4
|
-
export declare function op_meta_worldview_set(__ctx: OpCtx): void;
|
|
5
|
-
export declare function op_meta_synopsis_set(__ctx: OpCtx): void;
|
|
1
|
+
export * from "../v3/patch/ops-meta.js";
|