@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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Patch op engine driver. Replaces the former 1300-line if/else chain with a
|
|
2
|
+
// lookup-and-invoke dispatch over OP_REGISTRY (Replace Conditional Dispatcher
|
|
3
|
+
// with Command). Per-op logic lives in ops-*.ts; this file only loops and
|
|
4
|
+
// dispatches. Scene IDs are stable identities and are never rewritten as a
|
|
5
|
+
// side effect of structural edits. Any op throwing aborts the whole batch
|
|
6
|
+
// (callers persist only after this returns).
|
|
7
|
+
import { opErr, strOf } from "../../shared.js";
|
|
8
|
+
import { V3_OP_REGISTRY } from "./registry.js";
|
|
9
|
+
export function applyPatchOperations(script, sourceText, operations) {
|
|
10
|
+
const applied = [];
|
|
11
|
+
for (const op of operations) {
|
|
12
|
+
const kind = strOf(op["op"]);
|
|
13
|
+
const handler = V3_OP_REGISTRY[kind];
|
|
14
|
+
if (!handler) {
|
|
15
|
+
throw opErr("PATCH BLOCKED: Unsupported operation", "Unsupported patch operation.", {
|
|
16
|
+
required: [
|
|
17
|
+
"dot-style op: meta.{worldview,synopsis}.set / episode.{add,synopsis.set} / asset.{rename,describe,alias.set,alias.add,alias.remove,states.set,role.set,merge,delete} / importance.set / state.{add,rename,describe,delete} / scene.ref.{set,clear,remove} / action.{type.set,actor.set,emotion.set,emotion.clear,delete,insert,move,transition.set,transition.clear,content.replace,content.regex-replace} / scene.{split,merge,delete,move,insert} / dialogue.speaker.set / extend.{set,clear}",
|
|
18
|
+
],
|
|
19
|
+
received: [kind],
|
|
20
|
+
nextSteps: [
|
|
21
|
+
"Use a supported dot-style patch operation.",
|
|
22
|
+
"Removed in v3: context.* (use scene.ref.*), dialogue.speakers/dialogue.overlap (use dialogue.speaker.set — single inline speaker), speaker.add/speaker.delete (v3 has no speaker roster), action.state.change/remove (state lives on scene.ref.*).",
|
|
23
|
+
],
|
|
24
|
+
errorCode: "OP_UNSUPPORTED",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
handler({ script, op, sourceText, applied, kind, runOps: (subOps) => applyPatchOperations(script, sourceText, subOps) });
|
|
28
|
+
}
|
|
29
|
+
return applied;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../src/domain/script/v3/patch/apply.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,6CAA6C;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,MAAY,EAAE,UAAkB,EAAE,UAAkB;IACvF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,KAAK,CAAC,sCAAsC,EAAE,8BAA8B,EAAE;gBAClF,QAAQ,EAAE;oBACR,ieAAie;iBACle;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAChB,SAAS,EAAE;oBACT,4CAA4C;oBAC5C,oPAAoP;iBACrP;gBACD,SAAS,EAAE,gBAAgB;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Dict } from "../../shared.js";
|
|
2
|
+
export declare function resolveAssetByTarget(script: Dict, kind: string, targetId: string): Dict;
|
|
3
|
+
export declare function resolveState(script: Dict, kind: string, targetId: string, stateId: string): Dict;
|
|
4
|
+
export declare function validateStateForTarget(script: Dict, kind: string, targetId: string, stateId: string | null): string | null;
|
|
5
|
+
export declare function contextRefsForKind(refs: Dict, kind: string): Dict[];
|
|
6
|
+
export declare function findContextRef(refs: Dict, kind: string, targetId: string): Dict | null;
|
|
7
|
+
export declare function sceneRefOccurrence(value: unknown, op: string): number | undefined;
|
|
8
|
+
export declare function matchingContextRefIndexes(refs: Dict[], idKey: string, targetId: string): number[];
|
|
9
|
+
export declare function contextRefIndex(refs: Dict[], idKey: string, targetId: string, occurrence: number | undefined, op: string): number | undefined;
|
|
10
|
+
export declare function assertActorReferencedByScene(script: Dict, epId: string, sceneId: string, actorId: string, op: string): void;
|
|
11
|
+
export declare function assertSceneReadyForBody(script: Dict, epId: string, sceneId: string, op: string): void;
|
|
12
|
+
export declare function setContextState(script: Dict, epId: string, sceneId: string, kind: string, targetId: string, stateId: string | null, options: {
|
|
13
|
+
append?: boolean;
|
|
14
|
+
occurrence?: number;
|
|
15
|
+
op: string;
|
|
16
|
+
}): void;
|
|
17
|
+
export declare function inferStateBeforeAction(script: Dict, epId: string, sceneId: string, _actionIndex: number, kind: string, targetId: string): string | null;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { CliError, EXIT_USAGE } from "../../../../common.js";
|
|
2
|
+
import { asList, opErr, strOf } from "../../shared.js";
|
|
3
|
+
import { sceneRefs, setSceneRefs } from "../scene-refs.js";
|
|
4
|
+
import { assetKeys, ensureRefId, findScene, idKeyForKind, pluralForKind } from "../lookups.js";
|
|
5
|
+
export function resolveAssetByTarget(script, kind, targetId) {
|
|
6
|
+
const [key, idKey] = assetKeys(kind);
|
|
7
|
+
for (const item of asList(script[key])) {
|
|
8
|
+
if (strOf(item[idKey]) === targetId)
|
|
9
|
+
return item;
|
|
10
|
+
}
|
|
11
|
+
throw new CliError("SCRIPT OP BLOCKED: Asset not found", "Asset not found.", {
|
|
12
|
+
exitCode: EXIT_USAGE,
|
|
13
|
+
required: [`existing ${kind} id`],
|
|
14
|
+
received: [`${kind}:${targetId}`],
|
|
15
|
+
nextSteps: ["Inspect assets and fix the target."],
|
|
16
|
+
errorCode: "ASSET_NOT_FOUND",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function resolveState(script, kind, targetId, stateId) {
|
|
20
|
+
const asset = resolveAssetByTarget(script, kind, targetId);
|
|
21
|
+
for (const state of asList(asset["states"])) {
|
|
22
|
+
if (strOf(state["state_id"]) === stateId)
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
throw new CliError("SCRIPT OP BLOCKED: State not found", "State not found.", {
|
|
26
|
+
exitCode: EXIT_USAGE,
|
|
27
|
+
required: ["existing state_id on the target asset"],
|
|
28
|
+
received: [`${kind}:${targetId}/${stateId}`],
|
|
29
|
+
nextSteps: ["Inspect states and fix the target."],
|
|
30
|
+
errorCode: "STATE_NOT_FOUND",
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function validateStateForTarget(script, kind, targetId, stateId) {
|
|
34
|
+
const value = strOf(stateId).trim();
|
|
35
|
+
if (!value)
|
|
36
|
+
return null;
|
|
37
|
+
resolveState(script, kind, targetId, value);
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
// A scene's cast/props/location refs, read as the {actors,locations,props} bag
|
|
41
|
+
// (v3 storage lives on scene.actors/props + scene.location — see scene-refs.ts).
|
|
42
|
+
export function contextRefsForKind(refs, kind) {
|
|
43
|
+
return asList(refs[pluralForKind(kind)]);
|
|
44
|
+
}
|
|
45
|
+
export function findContextRef(refs, kind, targetId) {
|
|
46
|
+
const idKey = idKeyForKind(kind);
|
|
47
|
+
for (const ref of contextRefsForKind(refs, kind)) {
|
|
48
|
+
if (strOf(ref[idKey]) === targetId)
|
|
49
|
+
return ref;
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
export function sceneRefOccurrence(value, op) {
|
|
54
|
+
if (value === undefined || value === null || value === "")
|
|
55
|
+
return undefined;
|
|
56
|
+
const occurrence = typeof value === "number"
|
|
57
|
+
? value
|
|
58
|
+
: typeof value === "string" && /^\d+$/.test(value)
|
|
59
|
+
? Number(value)
|
|
60
|
+
: Number.NaN;
|
|
61
|
+
if (Number.isInteger(occurrence) && occurrence >= 1)
|
|
62
|
+
return occurrence;
|
|
63
|
+
throw opErr("SCRIPT OP BLOCKED: scene ref occurrence invalid", "Scene ref occurrence must be a positive integer.", {
|
|
64
|
+
required: ["occurrence: positive integer (1-based)"],
|
|
65
|
+
received: [strOf(value)],
|
|
66
|
+
nextSteps: ["Use 1 for the first matching scene ref, 2 for the second, and so on."],
|
|
67
|
+
op,
|
|
68
|
+
errorCode: "SCENE_REF_OCCURRENCE_INVALID",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function matchingContextRefIndexes(refs, idKey, targetId) {
|
|
72
|
+
const indexes = [];
|
|
73
|
+
for (let index = 0; index < refs.length; index++) {
|
|
74
|
+
if (strOf(refs[index]?.[idKey]) === targetId)
|
|
75
|
+
indexes.push(index);
|
|
76
|
+
}
|
|
77
|
+
return indexes;
|
|
78
|
+
}
|
|
79
|
+
export function contextRefIndex(refs, idKey, targetId, occurrence, op) {
|
|
80
|
+
const indexes = matchingContextRefIndexes(refs, idKey, targetId);
|
|
81
|
+
if (occurrence !== undefined) {
|
|
82
|
+
const index = indexes[occurrence - 1];
|
|
83
|
+
if (index !== undefined)
|
|
84
|
+
return index;
|
|
85
|
+
throw opErr("SCRIPT OP BLOCKED: scene ref occurrence not found", "The requested scene ref occurrence does not exist.", {
|
|
86
|
+
required: [`occurrence: 1..${indexes.length}`],
|
|
87
|
+
received: [String(occurrence)],
|
|
88
|
+
nextSteps: ["Inspect the scene refs and choose an existing occurrence."],
|
|
89
|
+
op,
|
|
90
|
+
errorCode: "SCENE_REF_OCCURRENCE_NOT_FOUND",
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (indexes.length > 1) {
|
|
94
|
+
throw opErr("SCRIPT OP BLOCKED: scene ref target is ambiguous", "The target appears more than once in this scene.", {
|
|
95
|
+
required: ["occurrence: 1-based matching ref"],
|
|
96
|
+
received: [`${targetId}: ${indexes.length} refs`],
|
|
97
|
+
nextSteps: ["Pass --occurrence <n> to select one scene ref."],
|
|
98
|
+
op,
|
|
99
|
+
errorCode: "SCENE_REF_OCCURRENCE_REQUIRED",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return indexes[0];
|
|
103
|
+
}
|
|
104
|
+
export function assertActorReferencedByScene(script, epId, sceneId, actorId, op) {
|
|
105
|
+
const scene = findScene(script, epId, sceneId);
|
|
106
|
+
const actorRef = findContextRef(sceneRefs(scene), "actor", actorId);
|
|
107
|
+
if (actorRef !== null)
|
|
108
|
+
return;
|
|
109
|
+
throw opErr("SCRIPT OP BLOCKED: Actor is not in scene", "Actor is not referenced by this scene.", {
|
|
110
|
+
required: [`scene-ref ${epId}/${sceneId} actor:${actorId} --state <state_id>`],
|
|
111
|
+
received: [`actor:${actorId}`],
|
|
112
|
+
nextSteps: ["Add the actor and its materialized state to the scene before writing or assigning the line."],
|
|
113
|
+
op,
|
|
114
|
+
errorCode: "ACTOR_NOT_IN_SCENE",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
export function assertSceneReadyForBody(script, epId, sceneId, op) {
|
|
118
|
+
const scene = findScene(script, epId, sceneId);
|
|
119
|
+
const refs = sceneRefs(scene);
|
|
120
|
+
const locations = contextRefsForKind(refs, "location");
|
|
121
|
+
if (locations.length === 0) {
|
|
122
|
+
throw opErr("SCRIPT OP BLOCKED: Scene location missing", "Scene needs a location reference before body can be written.", {
|
|
123
|
+
required: [`scene-ref ${epId}/${sceneId} location:<id> --state <state_id>`],
|
|
124
|
+
received: ["scene.location: null"],
|
|
125
|
+
nextSteps: ["Reference the scene location and its materialized state, then retry."],
|
|
126
|
+
op,
|
|
127
|
+
errorCode: "SCENE_LOCATION_REF_MISSING",
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const actors = contextRefsForKind(refs, "actor");
|
|
131
|
+
const missingStateTargets = [];
|
|
132
|
+
for (const [assetKind, assetRefs] of [
|
|
133
|
+
["location", locations],
|
|
134
|
+
["actor", actors],
|
|
135
|
+
["prop", contextRefsForKind(refs, "prop")],
|
|
136
|
+
]) {
|
|
137
|
+
const idKey = idKeyForKind(assetKind);
|
|
138
|
+
for (const ref of assetRefs) {
|
|
139
|
+
const assetId = strOf(ref[idKey]).trim();
|
|
140
|
+
const stateId = strOf(ref["state_id"]).trim();
|
|
141
|
+
if (!stateId) {
|
|
142
|
+
missingStateTargets.push(`${assetKind}:${assetId}`);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
resolveState(script, assetKind, assetId, stateId);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (missingStateTargets.length === 0)
|
|
149
|
+
return;
|
|
150
|
+
throw opErr("SCRIPT OP BLOCKED: Scene asset state missing", "Every scene asset reference needs a materialized state before body can be written.", {
|
|
151
|
+
required: ["state_id on every scene location / actor / prop reference"],
|
|
152
|
+
received: missingStateTargets,
|
|
153
|
+
nextSteps: missingStateTargets.map((target) => `Run scene-ref ${epId}/${sceneId} ${target} --state <state_id>.`),
|
|
154
|
+
op,
|
|
155
|
+
errorCode: "SCENE_REF_STATE_MISSING",
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
export function setContextState(script, epId, sceneId, kind, targetId, stateId, options) {
|
|
159
|
+
ensureRefId(script, kind, targetId);
|
|
160
|
+
const normalizedState = validateStateForTarget(script, kind, targetId, stateId);
|
|
161
|
+
const scene = findScene(script, epId, sceneId);
|
|
162
|
+
const bag = sceneRefs(scene);
|
|
163
|
+
const idKey = idKeyForKind(kind);
|
|
164
|
+
// Location is single-valued per scene. Actor refs are ordered instances and
|
|
165
|
+
// may repeat; props keep id-based upsert semantics.
|
|
166
|
+
if (kind === "location") {
|
|
167
|
+
if (options.append || options.occurrence !== undefined) {
|
|
168
|
+
throw opErr("SCRIPT OP BLOCKED: location ref is single-valued", "Location refs do not support append or occurrence.", {
|
|
169
|
+
required: ["scene.ref.set without append or occurrence"],
|
|
170
|
+
received: [options.append ? "append=true" : `occurrence=${options.occurrence}`],
|
|
171
|
+
nextSteps: ["Set the scene location directly; it replaces the existing location ref."],
|
|
172
|
+
op: options.op,
|
|
173
|
+
errorCode: "SCENE_LOCATION_REF_SINGLE",
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
bag[pluralForKind(kind)] = [{ [idKey]: targetId, state_id: normalizedState }];
|
|
177
|
+
setSceneRefs(scene, bag);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const refs = [...contextRefsForKind(bag, kind)];
|
|
181
|
+
if (options.append) {
|
|
182
|
+
if (kind !== "actor") {
|
|
183
|
+
throw opErr("SCRIPT OP BLOCKED: append only supports actor refs", "Only actor refs may repeat in a scene.", {
|
|
184
|
+
required: ["target: actor:<id>"],
|
|
185
|
+
received: [`${kind}:${targetId}`],
|
|
186
|
+
nextSteps: ["Use actor:<id> with append, or set the existing prop ref."],
|
|
187
|
+
op: options.op,
|
|
188
|
+
errorCode: "SCENE_REF_APPEND_KIND_INVALID",
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
refs.push({ [idKey]: targetId, state_id: normalizedState });
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const existingIndex = contextRefIndex(refs, idKey, targetId, options.occurrence, options.op);
|
|
195
|
+
if (existingIndex === undefined)
|
|
196
|
+
refs.push({ [idKey]: targetId, state_id: normalizedState });
|
|
197
|
+
else
|
|
198
|
+
refs[existingIndex]["state_id"] = normalizedState;
|
|
199
|
+
}
|
|
200
|
+
bag[pluralForKind(kind)] = refs;
|
|
201
|
+
setSceneRefs(scene, bag);
|
|
202
|
+
}
|
|
203
|
+
// v3: a scene ref's state_id IS the state at the scene (no per-action
|
|
204
|
+
// state_changes to walk), so the "state before action N" is simply the scene
|
|
205
|
+
// cast/location/prop ref's declared state.
|
|
206
|
+
export function inferStateBeforeAction(script, epId, sceneId, _actionIndex, kind, targetId) {
|
|
207
|
+
const scene = findScene(script, epId, sceneId);
|
|
208
|
+
const ref = findContextRef(sceneRefs(scene), kind, targetId);
|
|
209
|
+
return ref ? strOf(ref["state_id"]).trim() || null : null;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/domain/script/v3/patch/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAa,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/F,MAAM,UAAU,oBAAoB,CAAC,MAAY,EAAE,IAAY,EAAE,QAAgB;IAC/E,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,oCAAoC,EAAE,kBAAkB,EAAE;QAC3E,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,CAAC,YAAY,IAAI,KAAK,CAAC;QACjC,QAAQ,EAAE,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;QACjC,SAAS,EAAE,CAAC,oCAAoC,CAAC;QACjD,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAe;IACxF,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,oCAAoC,EAAE,kBAAkB,EAAE;QAC3E,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,CAAC,uCAAuC,CAAC;QACnD,QAAQ,EAAE,CAAC,GAAG,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC5C,SAAS,EAAE,CAAC,oCAAoC,CAAC;QACjD,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAY,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAsB;IACzG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,MAAM,UAAU,kBAAkB,CAAC,IAAU,EAAE,IAAY;IACzD,OAAO,MAAM,CAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAU,EAAE,IAAY,EAAE,QAAgB;IACvE,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,EAAU;IAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ;QAC1C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAChD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACjB,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IACvE,MAAM,KAAK,CAAC,iDAAiD,EAAE,kDAAkD,EAAE;QACjH,QAAQ,EAAE,CAAC,wCAAwC,CAAC;QACpD,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxB,SAAS,EAAE,CAAC,sEAAsE,CAAC;QACnF,EAAE;QACF,SAAS,EAAE,8BAA8B;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,KAAa,EAAE,QAAgB;IACrF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,KAAa,EACb,QAAgB,EAChB,UAA8B,EAC9B,EAAU;IAEV,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,KAAK,CAAC,mDAAmD,EAAE,oDAAoD,EAAE;YACrH,QAAQ,EAAE,CAAC,kBAAkB,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9C,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9B,SAAS,EAAE,CAAC,2DAA2D,CAAC;YACxE,EAAE;YACF,SAAS,EAAE,gCAAgC;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,kDAAkD,EAAE,kDAAkD,EAAE;YAClH,QAAQ,EAAE,CAAC,kCAAkC,CAAC;YAC9C,QAAQ,EAAE,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,OAAO,CAAC;YACjD,SAAS,EAAE,CAAC,gDAAgD,CAAC;YAC7D,EAAE;YACF,SAAS,EAAE,+BAA+B;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAAY,EACZ,IAAY,EACZ,OAAe,EACf,OAAe,EACf,EAAU;IAEV,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO;IAC9B,MAAM,KAAK,CAAC,0CAA0C,EAAE,wCAAwC,EAAE;QAChG,QAAQ,EAAE,CAAC,aAAa,IAAI,IAAI,OAAO,UAAU,OAAO,qBAAqB,CAAC;QAC9E,QAAQ,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC;QAC9B,SAAS,EAAE,CAAC,6FAA6F,CAAC;QAC1G,EAAE;QACF,SAAS,EAAE,oBAAoB;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAY,EACZ,IAAY,EACZ,OAAe,EACf,EAAU;IAEV,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC,2CAA2C,EAAE,8DAA8D,EAAE;YACvH,QAAQ,EAAE,CAAC,aAAa,IAAI,IAAI,OAAO,mCAAmC,CAAC;YAC3E,QAAQ,EAAE,CAAC,sBAAsB,CAAC;YAClC,SAAS,EAAE,CAAC,sEAAsE,CAAC;YACnF,EAAE;YACF,SAAS,EAAE,4BAA4B;SACxC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEjD,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI;QACnC,CAAC,UAAU,EAAE,SAAS,CAAC;QACvB,CAAC,OAAO,EAAE,MAAM,CAAC;QACjB,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAClC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC;gBACpD,SAAS;YACX,CAAC;YACD,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7C,MAAM,KAAK,CAAC,8CAA8C,EAAE,oFAAoF,EAAE;QAChJ,QAAQ,EAAE,CAAC,2DAA2D,CAAC;QACvE,QAAQ,EAAE,mBAAmB;QAC7B,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAChC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,IAAI,IAAI,OAAO,IAAI,MAAM,sBAAsB,CAC7E;QACD,EAAE;QACF,SAAS,EAAE,yBAAyB;KACrC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAY,EACZ,IAAY,EACZ,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,OAAsB,EACtB,OAA8D;IAE9D,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,4EAA4E;IAC5E,oDAAoD;IACpD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,KAAK,CAAC,kDAAkD,EAAE,oDAAoD,EAAE;gBACpH,QAAQ,EAAE,CAAC,4CAA4C,CAAC;gBACxD,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC/E,SAAS,EAAE,CAAC,yEAAyE,CAAC;gBACtF,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,SAAS,EAAE,2BAA2B;aACvC,CAAC,CAAC;QACL,CAAC;QACD,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9E,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,oDAAoD,EAAE,wCAAwC,EAAE;gBAC1G,QAAQ,EAAE,CAAC,oBAAoB,CAAC;gBAChC,QAAQ,EAAE,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACjC,SAAS,EAAE,CAAC,2DAA2D,CAAC;gBACxE,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,SAAS,EAAE,+BAA+B;aAC3C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,aAAa,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;;YACxF,IAAI,CAAC,aAAa,CAAE,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;IAC1D,CAAC;IACD,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,sEAAsE;AACtE,6EAA6E;AAC7E,2CAA2C;AAC3C,MAAM,UAAU,sBAAsB,CACpC,MAAY,EACZ,IAAY,EACZ,OAAe,EACf,YAAoB,EACpB,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { opErr, strOf } from "../../shared.js";
|
|
2
|
+
import { ensureRefId } from "../lookups.js";
|
|
3
|
+
import { NON_ACTOR_SPEAKER_KIND_SET } from "../types.js";
|
|
4
|
+
export function inlineSpeakerFromOp(script, op, opName) {
|
|
5
|
+
const actorId = strOf(op["actor_id"]).trim();
|
|
6
|
+
const speakerKind = strOf(op["kind"]).trim();
|
|
7
|
+
const label = strOf(op["label"]).trim();
|
|
8
|
+
if (actorId && speakerKind) {
|
|
9
|
+
throw opErr("SCRIPT OP BLOCKED: Speaker ambiguous", "Pass actor_id OR kind, not both.", {
|
|
10
|
+
required: ["exactly one of: actor_id (an actor) or kind (a non-actor source)"],
|
|
11
|
+
received: [`actor_id=${actorId}, kind=${speakerKind}`],
|
|
12
|
+
nextSteps: ["Set actor_id for an actor line, or kind (system|broadcast|offscreen|group) for a non-actor line."],
|
|
13
|
+
op: opName,
|
|
14
|
+
errorCode: "SPEAKER_AMBIGUOUS",
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
if (actorId) {
|
|
18
|
+
if (label) {
|
|
19
|
+
throw opErr("SCRIPT OP BLOCKED: Speaker label misplaced", "label is only valid with a non-actor speaker kind.", {
|
|
20
|
+
required: ["omit label with actor_id, or pair label with kind"],
|
|
21
|
+
received: [`actor_id=${actorId}, label=${label}`],
|
|
22
|
+
nextSteps: ["Remove label for an actor line, or use kind for a labeled non-actor source."],
|
|
23
|
+
op: opName,
|
|
24
|
+
errorCode: "SPEAKER_LABEL_WITHOUT_KIND",
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
ensureRefId(script, "actor", actorId);
|
|
28
|
+
return { actor_id: actorId };
|
|
29
|
+
}
|
|
30
|
+
if (speakerKind) {
|
|
31
|
+
if (!NON_ACTOR_SPEAKER_KIND_SET.has(speakerKind)) {
|
|
32
|
+
throw opErr("SCRIPT OP BLOCKED: Speaker kind invalid", "Speaker kind invalid.", {
|
|
33
|
+
required: ["kind: system, broadcast, offscreen, or group"],
|
|
34
|
+
received: [speakerKind],
|
|
35
|
+
nextSteps: ["Use a supported non-actor speaker kind, or pass actor_id for an actor."],
|
|
36
|
+
op: opName,
|
|
37
|
+
errorCode: "SPEAKER_KIND_INVALID",
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return label ? { kind: speakerKind, label } : { kind: speakerKind };
|
|
41
|
+
}
|
|
42
|
+
throw opErr("SCRIPT OP BLOCKED: Speaker missing", "Speaker missing.", {
|
|
43
|
+
required: ["actor_id or kind"],
|
|
44
|
+
received: [JSON.stringify(op)],
|
|
45
|
+
nextSteps: ["Pass actor_id for an actor line, or kind for a non-actor line."],
|
|
46
|
+
op: opName,
|
|
47
|
+
errorCode: "SPEAKER_MISSING",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=inline-speaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-speaker.js","sourceRoot":"","sources":["../../../../../src/domain/script/v3/patch/inline-speaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,UAAU,mBAAmB,CAAC,MAAY,EAAE,EAAQ,EAAE,MAAc;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC,sCAAsC,EAAE,kCAAkC,EAAE;YACtF,QAAQ,EAAE,CAAC,kEAAkE,CAAC;YAC9E,QAAQ,EAAE,CAAC,YAAY,OAAO,UAAU,WAAW,EAAE,CAAC;YACtD,SAAS,EAAE,CAAC,kGAAkG,CAAC;YAC/G,EAAE,EAAE,MAAM;YACV,SAAS,EAAE,mBAAmB;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,CAAC,4CAA4C,EAAE,oDAAoD,EAAE;gBAC9G,QAAQ,EAAE,CAAC,mDAAmD,CAAC;gBAC/D,QAAQ,EAAE,CAAC,YAAY,OAAO,WAAW,KAAK,EAAE,CAAC;gBACjD,SAAS,EAAE,CAAC,6EAA6E,CAAC;gBAC1F,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,4BAA4B;aACxC,CAAC,CAAC;QACL,CAAC;QACD,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,CAAC,yCAAyC,EAAE,uBAAuB,EAAE;gBAC9E,QAAQ,EAAE,CAAC,8CAA8C,CAAC;gBAC1D,QAAQ,EAAE,CAAC,WAAW,CAAC;gBACvB,SAAS,EAAE,CAAC,wEAAwE,CAAC;gBACrF,EAAE,EAAE,MAAM;gBACV,SAAS,EAAE,sBAAsB;aAClC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,KAAK,CAAC,oCAAoC,EAAE,kBAAkB,EAAE;QACpE,QAAQ,EAAE,CAAC,kBAAkB,CAAC;QAC9B,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,CAAC,gEAAgE,CAAC;QAC7E,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { OpCtx } from "./types.js";
|
|
2
|
+
export declare function op_action_transition_set(__ctx: OpCtx): void;
|
|
3
|
+
export declare function op_action_transition_clear(__ctx: OpCtx): void;
|
|
4
|
+
export declare function op_action_content_replace(__ctx: OpCtx): void;
|
|
5
|
+
export declare function op_action_content_regex_replace(__ctx: OpCtx): void;
|
|
6
|
+
export declare function op_action_type_set(__ctx: OpCtx): void;
|
|
7
|
+
export declare function op_action_actor_set(__ctx: OpCtx): void;
|
|
8
|
+
export declare function op_action_emotion_set(__ctx: OpCtx): void;
|
|
9
|
+
export declare function op_action_emotion_clear(__ctx: OpCtx): void;
|
|
10
|
+
export declare function op_action_delete(__ctx: OpCtx): void;
|
|
11
|
+
export declare function op_action_insert(__ctx: OpCtx): void;
|
|
12
|
+
export declare function op_action_move(__ctx: OpCtx): void;
|