@lingjingai/scriptctl 0.63.14 → 0.63.15
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 +7 -1
- package/changes/0.63.15.md +15 -0
- package/dist/bin.js +1 -20844
- package/dist/chunk-3LPIMYYI.js +823 -0
- package/dist/cli.d.ts +214 -5
- package/dist/cli.js +1 -187
- package/dist/review-agent.js +56 -3593
- package/package.json +12 -5
- package/dist/bin.d.ts +0 -2
- package/dist/bin.js.map +0 -7
- package/dist/cli/register-authoring.d.ts +0 -4
- package/dist/cli/register-authoring.js +0 -35
- package/dist/cli/register-authoring.js.map +0 -1
- package/dist/cli/register-review.d.ts +0 -3
- package/dist/cli/register-review.js +0 -20
- package/dist/cli/register-review.js.map +0 -1
- package/dist/cli/register-script.d.ts +0 -3
- package/dist/cli/register-script.js +0 -297
- package/dist/cli/register-script.js.map +0 -1
- package/dist/cli/register-tools.d.ts +0 -3
- package/dist/cli/register-tools.js +0 -23
- package/dist/cli/register-tools.js.map +0 -1
- package/dist/cli/register-workflows.d.ts +0 -4
- package/dist/cli/register-workflows.js +0 -108
- package/dist/cli/register-workflows.js.map +0 -1
- package/dist/cli/registry.d.ts +0 -14
- package/dist/cli/registry.js +0 -65
- package/dist/cli/registry.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/common.d.ts +0 -93
- package/dist/common.js +0 -240
- package/dist/common.js.map +0 -1
- package/dist/domain/authoring/apply.d.ts +0 -1
- package/dist/domain/authoring/apply.js +0 -2
- package/dist/domain/authoring/apply.js.map +0 -1
- package/dist/domain/authoring/export.d.ts +0 -1
- package/dist/domain/authoring/export.js +0 -2
- package/dist/domain/authoring/export.js.map +0 -1
- package/dist/domain/authoring/parser.d.ts +0 -2
- package/dist/domain/authoring/parser.js +0 -3
- package/dist/domain/authoring/parser.js.map +0 -1
- package/dist/domain/authoring/serializer.d.ts +0 -1
- package/dist/domain/authoring/serializer.js +0 -2
- package/dist/domain/authoring/serializer.js.map +0 -1
- package/dist/domain/authoring/shared/bracket.d.ts +0 -4
- package/dist/domain/authoring/shared/bracket.js +0 -95
- package/dist/domain/authoring/shared/bracket.js.map +0 -1
- package/dist/domain/authoring/shared/types.d.ts +0 -12
- package/dist/domain/authoring/shared/types.js +0 -2
- package/dist/domain/authoring/shared/types.js.map +0 -1
- package/dist/domain/authoring/types.d.ts +0 -2
- package/dist/domain/authoring/types.js +0 -3
- package/dist/domain/authoring/types.js.map +0 -1
- package/dist/domain/authoring/v3/apply.d.ts +0 -33
- package/dist/domain/authoring/v3/apply.js +0 -784
- package/dist/domain/authoring/v3/apply.js.map +0 -1
- package/dist/domain/authoring/v3/export.d.ts +0 -7
- package/dist/domain/authoring/v3/export.js +0 -85
- package/dist/domain/authoring/v3/export.js.map +0 -1
- package/dist/domain/authoring/v3/parser.d.ts +0 -3
- package/dist/domain/authoring/v3/parser.js +0 -823
- package/dist/domain/authoring/v3/parser.js.map +0 -1
- package/dist/domain/authoring/v3/serializer.d.ts +0 -2
- package/dist/domain/authoring/v3/serializer.js +0 -244
- package/dist/domain/authoring/v3/serializer.js.map +0 -1
- package/dist/domain/authoring/v3/types.d.ts +0 -76
- package/dist/domain/authoring/v3/types.js +0 -2
- package/dist/domain/authoring/v3/types.js.map +0 -1
- package/dist/domain/authoring/v4/apply.d.ts +0 -40
- package/dist/domain/authoring/v4/apply.js +0 -451
- package/dist/domain/authoring/v4/apply.js.map +0 -1
- package/dist/domain/authoring/v4/parser.d.ts +0 -2
- package/dist/domain/authoring/v4/parser.js +0 -729
- package/dist/domain/authoring/v4/parser.js.map +0 -1
- package/dist/domain/authoring/v4/serializer.d.ts +0 -6
- package/dist/domain/authoring/v4/serializer.js +0 -280
- package/dist/domain/authoring/v4/serializer.js.map +0 -1
- package/dist/domain/authoring/v4/types.d.ts +0 -50
- package/dist/domain/authoring/v4/types.js +0 -2
- package/dist/domain/authoring/v4/types.js.map +0 -1
- package/dist/domain/creative-draft/compose.d.ts +0 -18
- package/dist/domain/creative-draft/compose.js +0 -448
- package/dist/domain/creative-draft/compose.js.map +0 -1
- package/dist/domain/ingest/apply-plan.d.ts +0 -23
- package/dist/domain/ingest/apply-plan.js +0 -210
- package/dist/domain/ingest/apply-plan.js.map +0 -1
- package/dist/domain/ingest/assembler.d.ts +0 -65
- package/dist/domain/ingest/assembler.js +0 -263
- package/dist/domain/ingest/assembler.js.map +0 -1
- package/dist/domain/ingest/asset-audit.d.ts +0 -50
- package/dist/domain/ingest/asset-audit.js +0 -196
- package/dist/domain/ingest/asset-audit.js.map +0 -1
- package/dist/domain/ingest/chunker.d.ts +0 -9
- package/dist/domain/ingest/chunker.js +0 -49
- package/dist/domain/ingest/chunker.js.map +0 -1
- package/dist/domain/ingest/environment.d.ts +0 -3
- package/dist/domain/ingest/environment.js +0 -32
- package/dist/domain/ingest/environment.js.map +0 -1
- package/dist/domain/ingest/evidence.d.ts +0 -5
- package/dist/domain/ingest/evidence.js +0 -66
- package/dist/domain/ingest/evidence.js.map +0 -1
- package/dist/domain/ingest/govern.d.ts +0 -3
- package/dist/domain/ingest/govern.js +0 -157
- package/dist/domain/ingest/govern.js.map +0 -1
- package/dist/domain/ingest/jsonl-parser.d.ts +0 -6
- package/dist/domain/ingest/jsonl-parser.js +0 -204
- package/dist/domain/ingest/jsonl-parser.js.map +0 -1
- package/dist/domain/ingest/markdown-parser.d.ts +0 -6
- package/dist/domain/ingest/markdown-parser.js +0 -187
- package/dist/domain/ingest/markdown-parser.js.map +0 -1
- package/dist/domain/ingest/production-validation.d.ts +0 -8
- package/dist/domain/ingest/production-validation.js +0 -37
- package/dist/domain/ingest/production-validation.js.map +0 -1
- package/dist/domain/ingest/records.d.ts +0 -72
- package/dist/domain/ingest/records.js +0 -10
- package/dist/domain/ingest/records.js.map +0 -1
- package/dist/domain/ingest/renumber.d.ts +0 -14
- package/dist/domain/ingest/renumber.js +0 -130
- package/dist/domain/ingest/renumber.js.map +0 -1
- package/dist/domain/ingest/serial-context.d.ts +0 -93
- package/dist/domain/ingest/serial-context.js +0 -355
- package/dist/domain/ingest/serial-context.js.map +0 -1
- package/dist/domain/ingest/state-identity.d.ts +0 -2
- package/dist/domain/ingest/state-identity.js +0 -3
- package/dist/domain/ingest/state-identity.js.map +0 -1
- package/dist/domain/ingest/state-reconcile.d.ts +0 -12
- package/dist/domain/ingest/state-reconcile.js +0 -92
- package/dist/domain/ingest/state-reconcile.js.map +0 -1
- package/dist/domain/ingest/validation.d.ts +0 -1
- package/dist/domain/ingest/validation.js +0 -2
- package/dist/domain/ingest/validation.js.map +0 -1
- package/dist/domain/ingest/video-apply.d.ts +0 -4
- package/dist/domain/ingest/video-apply.js +0 -128
- package/dist/domain/ingest/video-apply.js.map +0 -1
- package/dist/domain/ingest/video-context.d.ts +0 -64
- package/dist/domain/ingest/video-context.js +0 -480
- package/dist/domain/ingest/video-context.js.map +0 -1
- package/dist/domain/ingest/video-records.d.ts +0 -57
- package/dist/domain/ingest/video-records.js +0 -9
- package/dist/domain/ingest/video-records.js.map +0 -1
- package/dist/domain/ingest/video-serial-md.d.ts +0 -81
- package/dist/domain/ingest/video-serial-md.js +0 -297
- package/dist/domain/ingest/video-serial-md.js.map +0 -1
- package/dist/domain/ingest/video-source-evolution.d.ts +0 -25
- package/dist/domain/ingest/video-source-evolution.js +0 -40
- package/dist/domain/ingest/video-source-evolution.js.map +0 -1
- package/dist/domain/ingest/video-state-evidence.d.ts +0 -66
- package/dist/domain/ingest/video-state-evidence.js +0 -385
- package/dist/domain/ingest/video-state-evidence.js.map +0 -1
- package/dist/domain/ingest/video-timestamp.d.ts +0 -8
- package/dist/domain/ingest/video-timestamp.js +0 -26
- package/dist/domain/ingest/video-timestamp.js.map +0 -1
- package/dist/domain/loom/checkpointer.d.ts +0 -3
- package/dist/domain/loom/checkpointer.js +0 -30
- package/dist/domain/loom/checkpointer.js.map +0 -1
- package/dist/domain/loom/index.d.ts +0 -45
- package/dist/domain/loom/index.js +0 -277
- package/dist/domain/loom/index.js.map +0 -1
- package/dist/domain/loom/types.d.ts +0 -101
- package/dist/domain/loom/types.js +0 -2
- package/dist/domain/loom/types.js.map +0 -1
- package/dist/domain/script/address.d.ts +0 -1
- package/dist/domain/script/address.js +0 -2
- package/dist/domain/script/address.js.map +0 -1
- package/dist/domain/script/dispatch.d.ts +0 -18
- package/dist/domain/script/dispatch.js +0 -55
- package/dist/domain/script/dispatch.js.map +0 -1
- package/dist/domain/script/lookups.d.ts +0 -1
- package/dist/domain/script/lookups.js +0 -2
- package/dist/domain/script/lookups.js.map +0 -1
- package/dist/domain/script/migrations/registry.d.ts +0 -4
- package/dist/domain/script/migrations/registry.js +0 -76
- package/dist/domain/script/migrations/registry.js.map +0 -1
- package/dist/domain/script/migrations/types.d.ts +0 -17
- package/dist/domain/script/migrations/types.js +0 -2
- package/dist/domain/script/migrations/types.js.map +0 -1
- package/dist/domain/script/migrations/v3-to-v4.d.ts +0 -3
- package/dist/domain/script/migrations/v3-to-v4.js +0 -57
- package/dist/domain/script/migrations/v3-to-v4.js.map +0 -1
- package/dist/domain/script/names.d.ts +0 -1
- package/dist/domain/script/names.js +0 -2
- package/dist/domain/script/names.js.map +0 -1
- package/dist/domain/script/parse.d.ts +0 -1
- package/dist/domain/script/parse.js +0 -2
- package/dist/domain/script/parse.js.map +0 -1
- package/dist/domain/script/patch/apply.d.ts +0 -1
- package/dist/domain/script/patch/apply.js +0 -2
- package/dist/domain/script/patch/apply.js.map +0 -1
- package/dist/domain/script/patch/helpers.d.ts +0 -1
- package/dist/domain/script/patch/helpers.js +0 -2
- package/dist/domain/script/patch/helpers.js.map +0 -1
- package/dist/domain/script/patch/inline-speaker.d.ts +0 -1
- package/dist/domain/script/patch/inline-speaker.js +0 -2
- package/dist/domain/script/patch/inline-speaker.js.map +0 -1
- package/dist/domain/script/patch/ops-action.d.ts +0 -1
- package/dist/domain/script/patch/ops-action.js +0 -2
- package/dist/domain/script/patch/ops-action.js.map +0 -1
- package/dist/domain/script/patch/ops-asset.d.ts +0 -1
- package/dist/domain/script/patch/ops-asset.js +0 -2
- package/dist/domain/script/patch/ops-asset.js.map +0 -1
- package/dist/domain/script/patch/ops-dialogue.d.ts +0 -1
- package/dist/domain/script/patch/ops-dialogue.js +0 -2
- package/dist/domain/script/patch/ops-dialogue.js.map +0 -1
- package/dist/domain/script/patch/ops-extend.d.ts +0 -1
- package/dist/domain/script/patch/ops-extend.js +0 -2
- package/dist/domain/script/patch/ops-extend.js.map +0 -1
- package/dist/domain/script/patch/ops-meta.d.ts +0 -1
- package/dist/domain/script/patch/ops-meta.js +0 -2
- package/dist/domain/script/patch/ops-meta.js.map +0 -1
- package/dist/domain/script/patch/ops-scene.d.ts +0 -1
- package/dist/domain/script/patch/ops-scene.js +0 -2
- package/dist/domain/script/patch/ops-scene.js.map +0 -1
- package/dist/domain/script/patch/ops-state.d.ts +0 -1
- package/dist/domain/script/patch/ops-state.js +0 -2
- package/dist/domain/script/patch/ops-state.js.map +0 -1
- package/dist/domain/script/patch/registry.d.ts +0 -1
- package/dist/domain/script/patch/registry.js +0 -2
- package/dist/domain/script/patch/registry.js.map +0 -1
- package/dist/domain/script/patch/types.d.ts +0 -1
- package/dist/domain/script/patch/types.js +0 -2
- package/dist/domain/script/patch/types.js.map +0 -1
- package/dist/domain/script/refs.d.ts +0 -1
- package/dist/domain/script/refs.js +0 -2
- package/dist/domain/script/refs.js.map +0 -1
- package/dist/domain/script/scene-refs.d.ts +0 -1
- package/dist/domain/script/scene-refs.js +0 -2
- package/dist/domain/script/scene-refs.js.map +0 -1
- package/dist/domain/script/schema.d.ts +0 -1
- package/dist/domain/script/schema.js +0 -2
- package/dist/domain/script/schema.js.map +0 -1
- package/dist/domain/script/selector.d.ts +0 -1
- package/dist/domain/script/selector.js +0 -2
- package/dist/domain/script/selector.js.map +0 -1
- package/dist/domain/script/shared/regex.d.ts +0 -2
- package/dist/domain/script/shared/regex.js +0 -7
- package/dist/domain/script/shared/regex.js.map +0 -1
- package/dist/domain/script/shared/types.d.ts +0 -1
- package/dist/domain/script/shared/types.js +0 -5
- package/dist/domain/script/shared/types.js.map +0 -1
- package/dist/domain/script/shared/validation.d.ts +0 -1
- package/dist/domain/script/shared/validation.js +0 -3
- package/dist/domain/script/shared/validation.js.map +0 -1
- package/dist/domain/script/shared.d.ts +0 -15
- package/dist/domain/script/shared.js +0 -35
- package/dist/domain/script/shared.js.map +0 -1
- package/dist/domain/script/text-util.d.ts +0 -7
- package/dist/domain/script/text-util.js +0 -95
- package/dist/domain/script/text-util.js.map +0 -1
- package/dist/domain/script/timestamp.d.ts +0 -1
- package/dist/domain/script/timestamp.js +0 -3
- package/dist/domain/script/timestamp.js.map +0 -1
- package/dist/domain/script/types.d.ts +0 -1
- package/dist/domain/script/types.js +0 -2
- package/dist/domain/script/types.js.map +0 -1
- package/dist/domain/script/v3/address.d.ts +0 -32
- package/dist/domain/script/v3/address.js +0 -136
- package/dist/domain/script/v3/address.js.map +0 -1
- package/dist/domain/script/v3/lookups.d.ts +0 -33
- package/dist/domain/script/v3/lookups.js +0 -316
- package/dist/domain/script/v3/lookups.js.map +0 -1
- package/dist/domain/script/v3/ordinal.d.ts +0 -8
- package/dist/domain/script/v3/ordinal.js +0 -91
- package/dist/domain/script/v3/ordinal.js.map +0 -1
- package/dist/domain/script/v3/parse.d.ts +0 -3
- package/dist/domain/script/v3/parse.js +0 -164
- package/dist/domain/script/v3/parse.js.map +0 -1
- package/dist/domain/script/v3/patch/apply.d.ts +0 -2
- package/dist/domain/script/v3/patch/apply.js +0 -31
- package/dist/domain/script/v3/patch/apply.js.map +0 -1
- package/dist/domain/script/v3/patch/helpers.d.ts +0 -15
- package/dist/domain/script/v3/patch/helpers.js +0 -155
- package/dist/domain/script/v3/patch/helpers.js.map +0 -1
- package/dist/domain/script/v3/patch/inline-speaker.d.ts +0 -2
- package/dist/domain/script/v3/patch/inline-speaker.js +0 -50
- package/dist/domain/script/v3/patch/inline-speaker.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-action.d.ts +0 -12
- package/dist/domain/script/v3/patch/ops-action.js +0 -355
- package/dist/domain/script/v3/patch/ops-action.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-asset.d.ts +0 -14
- package/dist/domain/script/v3/patch/ops-asset.js +0 -347
- package/dist/domain/script/v3/patch/ops-asset.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-dialogue.d.ts +0 -2
- package/dist/domain/script/v3/patch/ops-dialogue.js +0 -21
- package/dist/domain/script/v3/patch/ops-dialogue.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-extend.d.ts +0 -8
- package/dist/domain/script/v3/patch/ops-extend.js +0 -122
- package/dist/domain/script/v3/patch/ops-extend.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-meta.d.ts +0 -5
- package/dist/domain/script/v3/patch/ops-meta.js +0 -82
- package/dist/domain/script/v3/patch/ops-meta.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-scene.d.ts +0 -6
- package/dist/domain/script/v3/patch/ops-scene.js +0 -351
- package/dist/domain/script/v3/patch/ops-scene.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-state.d.ts +0 -8
- package/dist/domain/script/v3/patch/ops-state.js +0 -155
- package/dist/domain/script/v3/patch/ops-state.js.map +0 -1
- package/dist/domain/script/v3/patch/ops-timestamp.d.ts +0 -6
- package/dist/domain/script/v3/patch/ops-timestamp.js +0 -47
- package/dist/domain/script/v3/patch/ops-timestamp.js.map +0 -1
- package/dist/domain/script/v3/patch/registry.d.ts +0 -2
- package/dist/domain/script/v3/patch/registry.js +0 -56
- package/dist/domain/script/v3/patch/registry.js.map +0 -1
- package/dist/domain/script/v3/patch/types.d.ts +0 -10
- package/dist/domain/script/v3/patch/types.js +0 -2
- package/dist/domain/script/v3/patch/types.js.map +0 -1
- package/dist/domain/script/v3/refs.d.ts +0 -4
- package/dist/domain/script/v3/refs.js +0 -64
- package/dist/domain/script/v3/refs.js.map +0 -1
- package/dist/domain/script/v3/scene-refs.d.ts +0 -3
- package/dist/domain/script/v3/scene-refs.js +0 -35
- package/dist/domain/script/v3/scene-refs.js.map +0 -1
- package/dist/domain/script/v3/schema.d.ts +0 -6
- package/dist/domain/script/v3/schema.js +0 -58
- package/dist/domain/script/v3/schema.js.map +0 -1
- package/dist/domain/script/v3/selector.d.ts +0 -44
- package/dist/domain/script/v3/selector.js +0 -178
- package/dist/domain/script/v3/selector.js.map +0 -1
- package/dist/domain/script/v3/types.d.ts +0 -106
- package/dist/domain/script/v3/types.js +0 -2
- package/dist/domain/script/v3/types.js.map +0 -1
- package/dist/domain/script/v3/validation.d.ts +0 -2
- package/dist/domain/script/v3/validation.js +0 -2
- package/dist/domain/script/v3/validation.js.map +0 -1
- package/dist/domain/script/v4/address.d.ts +0 -61
- package/dist/domain/script/v4/address.js +0 -99
- package/dist/domain/script/v4/address.js.map +0 -1
- package/dist/domain/script/v4/factory.d.ts +0 -2
- package/dist/domain/script/v4/factory.js +0 -13
- package/dist/domain/script/v4/factory.js.map +0 -1
- package/dist/domain/script/v4/from-v3.d.ts +0 -29
- package/dist/domain/script/v4/from-v3.js +0 -307
- package/dist/domain/script/v4/from-v3.js.map +0 -1
- package/dist/domain/script/v4/ids.d.ts +0 -5
- package/dist/domain/script/v4/ids.js +0 -41
- package/dist/domain/script/v4/ids.js.map +0 -1
- package/dist/domain/script/v4/ordinal.d.ts +0 -3
- package/dist/domain/script/v4/ordinal.js +0 -66
- package/dist/domain/script/v4/ordinal.js.map +0 -1
- package/dist/domain/script/v4/parse.d.ts +0 -5
- package/dist/domain/script/v4/parse.js +0 -196
- package/dist/domain/script/v4/parse.js.map +0 -1
- package/dist/domain/script/v4/patch/apply.d.ts +0 -3
- package/dist/domain/script/v4/patch/apply.js +0 -24
- package/dist/domain/script/v4/patch/apply.js.map +0 -1
- package/dist/domain/script/v4/patch/helpers.d.ts +0 -32
- package/dist/domain/script/v4/patch/helpers.js +0 -138
- package/dist/domain/script/v4/patch/helpers.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-action.d.ts +0 -13
- package/dist/domain/script/v4/patch/ops-action.js +0 -351
- package/dist/domain/script/v4/patch/ops-action.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-asset.d.ts +0 -17
- package/dist/domain/script/v4/patch/ops-asset.js +0 -556
- package/dist/domain/script/v4/patch/ops-asset.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-extend.d.ts +0 -11
- package/dist/domain/script/v4/patch/ops-extend.js +0 -103
- package/dist/domain/script/v4/patch/ops-extend.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-meta.d.ts +0 -5
- package/dist/domain/script/v4/patch/ops-meta.js +0 -49
- package/dist/domain/script/v4/patch/ops-meta.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-scene-ref.d.ts +0 -3
- package/dist/domain/script/v4/patch/ops-scene-ref.js +0 -74
- package/dist/domain/script/v4/patch/ops-scene-ref.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-structure.d.ts +0 -6
- package/dist/domain/script/v4/patch/ops-structure.js +0 -236
- package/dist/domain/script/v4/patch/ops-structure.js.map +0 -1
- package/dist/domain/script/v4/patch/ops-timestamp.d.ts +0 -6
- package/dist/domain/script/v4/patch/ops-timestamp.js +0 -40
- package/dist/domain/script/v4/patch/ops-timestamp.js.map +0 -1
- package/dist/domain/script/v4/patch/registry.d.ts +0 -2
- package/dist/domain/script/v4/patch/registry.js +0 -53
- package/dist/domain/script/v4/patch/registry.js.map +0 -1
- package/dist/domain/script/v4/patch/schema.d.ts +0 -7
- package/dist/domain/script/v4/patch/schema.js +0 -77
- package/dist/domain/script/v4/patch/schema.js.map +0 -1
- package/dist/domain/script/v4/patch/types.d.ts +0 -10
- package/dist/domain/script/v4/patch/types.js +0 -2
- package/dist/domain/script/v4/patch/types.js.map +0 -1
- package/dist/domain/script/v4/selector.d.ts +0 -11
- package/dist/domain/script/v4/selector.js +0 -124
- package/dist/domain/script/v4/selector.js.map +0 -1
- package/dist/domain/script/v4/types.d.ts +0 -120
- package/dist/domain/script/v4/types.js +0 -2
- package/dist/domain/script/v4/types.js.map +0 -1
- package/dist/domain/script/v4/validation.d.ts +0 -2
- package/dist/domain/script/v4/validation.js +0 -2
- package/dist/domain/script/v4/validation.js.map +0 -1
- package/dist/failures.d.ts +0 -58
- package/dist/failures.js +0 -96
- package/dist/failures.js.map +0 -1
- package/dist/infra/converters.d.ts +0 -9
- package/dist/infra/converters.js +0 -689
- package/dist/infra/converters.js.map +0 -1
- package/dist/infra/env.d.ts +0 -2
- package/dist/infra/env.js +0 -81
- package/dist/infra/env.js.map +0 -1
- package/dist/infra/episode-title.d.ts +0 -4
- package/dist/infra/episode-title.js +0 -129
- package/dist/infra/episode-title.js.map +0 -1
- package/dist/infra/ingest/review-renderer.d.ts +0 -1
- package/dist/infra/ingest/review-renderer.js +0 -440
- package/dist/infra/ingest/review-renderer.js.map +0 -1
- package/dist/infra/ingest/source-resolver.d.ts +0 -21
- package/dist/infra/ingest/source-resolver.js +0 -51
- package/dist/infra/ingest/source-resolver.js.map +0 -1
- package/dist/infra/ingest/text-reader.d.ts +0 -3
- package/dist/infra/ingest/text-reader.js +0 -27
- package/dist/infra/ingest/text-reader.js.map +0 -1
- package/dist/infra/ingest/video-discovery.d.ts +0 -8
- package/dist/infra/ingest/video-discovery.js +0 -69
- package/dist/infra/ingest/video-discovery.js.map +0 -1
- package/dist/infra/ingest/video-source-snapshot.d.ts +0 -4
- package/dist/infra/ingest/video-source-snapshot.js +0 -47
- package/dist/infra/ingest/video-source-snapshot.js.map +0 -1
- package/dist/infra/ingest/video-state-evidence.d.ts +0 -14
- package/dist/infra/ingest/video-state-evidence.js +0 -140
- package/dist/infra/ingest/video-state-evidence.js.map +0 -1
- package/dist/infra/ingest/video-transcode.d.ts +0 -7
- package/dist/infra/ingest/video-transcode.js +0 -98
- package/dist/infra/ingest/video-transcode.js.map +0 -1
- package/dist/infra/ingest/workspace-lock.d.ts +0 -1
- package/dist/infra/ingest/workspace-lock.js +0 -32
- package/dist/infra/ingest/workspace-lock.js.map +0 -1
- package/dist/infra/ingest/workspace-store.d.ts +0 -18
- package/dist/infra/ingest/workspace-store.js +0 -70
- package/dist/infra/ingest/workspace-store.js.map +0 -1
- package/dist/infra/llm/anthropic-model.d.ts +0 -11
- package/dist/infra/llm/anthropic-model.js +0 -130
- package/dist/infra/llm/anthropic-model.js.map +0 -1
- package/dist/infra/llm/doubao-model.d.ts +0 -60
- package/dist/infra/llm/doubao-model.js +0 -249
- package/dist/infra/llm/doubao-model.js.map +0 -1
- package/dist/infra/llm/failure-mapping.d.ts +0 -6
- package/dist/infra/llm/failure-mapping.js +0 -146
- package/dist/infra/llm/failure-mapping.js.map +0 -1
- package/dist/infra/llm/gemini-upload.d.ts +0 -13
- package/dist/infra/llm/gemini-upload.js +0 -138
- package/dist/infra/llm/gemini-upload.js.map +0 -1
- package/dist/infra/llm/gemini-video-model.d.ts +0 -50
- package/dist/infra/llm/gemini-video-model.js +0 -371
- package/dist/infra/llm/gemini-video-model.js.map +0 -1
- package/dist/infra/llm/openai-compatible-model.d.ts +0 -14
- package/dist/infra/llm/openai-compatible-model.js +0 -207
- package/dist/infra/llm/openai-compatible-model.js.map +0 -1
- package/dist/infra/llm/retry.d.ts +0 -8
- package/dist/infra/llm/retry.js +0 -41
- package/dist/infra/llm/retry.js.map +0 -1
- package/dist/infra/local-script-output-store.d.ts +0 -43
- package/dist/infra/local-script-output-store.js +0 -168
- package/dist/infra/local-script-output-store.js.map +0 -1
- package/dist/infra/script-output-api.d.ts +0 -50
- package/dist/infra/script-output-api.js +0 -251
- package/dist/infra/script-output-api.js.map +0 -1
- package/dist/infra/script-output-store.d.ts +0 -152
- package/dist/infra/script-output-store.js +0 -114
- package/dist/infra/script-output-store.js.map +0 -1
- package/dist/infra/script-working-copy.d.ts +0 -23
- package/dist/infra/script-working-copy.js +0 -157
- package/dist/infra/script-working-copy.js.map +0 -1
- package/dist/infra/storage.d.ts +0 -35
- package/dist/infra/storage.js +0 -91
- package/dist/infra/storage.js.map +0 -1
- package/dist/llm/composition.d.ts +0 -5
- package/dist/llm/composition.js +0 -5
- package/dist/llm/composition.js.map +0 -1
- package/dist/llm/config.d.ts +0 -28
- package/dist/llm/config.js +0 -231
- package/dist/llm/config.js.map +0 -1
- package/dist/llm/registry.d.ts +0 -43
- package/dist/llm/registry.js +0 -69
- package/dist/llm/registry.js.map +0 -1
- package/dist/llm/router.d.ts +0 -46
- package/dist/llm/router.js +0 -512
- package/dist/llm/router.js.map +0 -1
- package/dist/llm/tasks/ingest/arc-summary.d.ts +0 -8
- package/dist/llm/tasks/ingest/arc-summary.js +0 -26
- package/dist/llm/tasks/ingest/arc-summary.js.map +0 -1
- package/dist/llm/tasks/ingest/asset-audit.d.ts +0 -6
- package/dist/llm/tasks/ingest/asset-audit.js +0 -158
- package/dist/llm/tasks/ingest/asset-audit.js.map +0 -1
- package/dist/llm/tasks/ingest/asset-curate.d.ts +0 -13
- package/dist/llm/tasks/ingest/asset-curate.js +0 -45
- package/dist/llm/tasks/ingest/asset-curate.js.map +0 -1
- package/dist/llm/tasks/ingest/asset-extract.d.ts +0 -12
- package/dist/llm/tasks/ingest/asset-extract.js +0 -51
- package/dist/llm/tasks/ingest/asset-extract.js.map +0 -1
- package/dist/llm/tasks/ingest/asset-govern.d.ts +0 -22
- package/dist/llm/tasks/ingest/asset-govern.js +0 -143
- package/dist/llm/tasks/ingest/asset-govern.js.map +0 -1
- package/dist/llm/tasks/ingest/body-start.d.ts +0 -10
- package/dist/llm/tasks/ingest/body-start.js +0 -41
- package/dist/llm/tasks/ingest/body-start.js.map +0 -1
- package/dist/llm/tasks/ingest/episode-assets.d.ts +0 -29
- package/dist/llm/tasks/ingest/episode-assets.js +0 -282
- package/dist/llm/tasks/ingest/episode-assets.js.map +0 -1
- package/dist/llm/tasks/ingest/mention-resolve.d.ts +0 -9
- package/dist/llm/tasks/ingest/mention-resolve.js +0 -39
- package/dist/llm/tasks/ingest/mention-resolve.js.map +0 -1
- package/dist/llm/tasks/ingest/name-fix.d.ts +0 -9
- package/dist/llm/tasks/ingest/name-fix.js +0 -56
- package/dist/llm/tasks/ingest/name-fix.js.map +0 -1
- package/dist/llm/tasks/ingest/state-reconcile.d.ts +0 -8
- package/dist/llm/tasks/ingest/state-reconcile.js +0 -44
- package/dist/llm/tasks/ingest/state-reconcile.js.map +0 -1
- package/dist/llm/tasks/ingest/text-normalize.d.ts +0 -10
- package/dist/llm/tasks/ingest/text-normalize.js +0 -122
- package/dist/llm/tasks/ingest/text-normalize.js.map +0 -1
- package/dist/llm/tasks/ingest/video-serial.d.ts +0 -24
- package/dist/llm/tasks/ingest/video-serial.js +0 -416
- package/dist/llm/tasks/ingest/video-serial.js.map +0 -1
- package/dist/llm/tasks/schemas.d.ts +0 -9
- package/dist/llm/tasks/schemas.js +0 -466
- package/dist/llm/tasks/schemas.js.map +0 -1
- package/dist/llm/types.d.ts +0 -178
- package/dist/llm/types.js +0 -44
- package/dist/llm/types.js.map +0 -1
- package/dist/output.d.ts +0 -3
- package/dist/output.js +0 -94
- package/dist/output.js.map +0 -1
- package/dist/package-root.d.ts +0 -2
- package/dist/package-root.js +0 -38
- package/dist/package-root.js.map +0 -1
- package/dist/review-agent.js.map +0 -7
- package/dist/usecases/changelog.d.ts +0 -9
- package/dist/usecases/changelog.js +0 -134
- package/dist/usecases/changelog.js.map +0 -1
- package/dist/usecases/doctor.d.ts +0 -2
- package/dist/usecases/doctor.js +0 -231
- package/dist/usecases/doctor.js.map +0 -1
- package/dist/usecases/ingest/body-start.d.ts +0 -8
- package/dist/usecases/ingest/body-start.js +0 -36
- package/dist/usecases/ingest/body-start.js.map +0 -1
- package/dist/usecases/ingest/command.d.ts +0 -5
- package/dist/usecases/ingest/command.js +0 -183
- package/dist/usecases/ingest/command.js.map +0 -1
- package/dist/usecases/ingest/failure.d.ts +0 -26
- package/dist/usecases/ingest/failure.js +0 -153
- package/dist/usecases/ingest/failure.js.map +0 -1
- package/dist/usecases/ingest/fanout.d.ts +0 -10
- package/dist/usecases/ingest/fanout.js +0 -23
- package/dist/usecases/ingest/fanout.js.map +0 -1
- package/dist/usecases/ingest/final-asset-audit.d.ts +0 -39
- package/dist/usecases/ingest/final-asset-audit.js +0 -88
- package/dist/usecases/ingest/final-asset-audit.js.map +0 -1
- package/dist/usecases/ingest/generate-video-state-evidence.d.ts +0 -23
- package/dist/usecases/ingest/generate-video-state-evidence.js +0 -124
- package/dist/usecases/ingest/generate-video-state-evidence.js.map +0 -1
- package/dist/usecases/ingest/pass4-mention-resolve.d.ts +0 -11
- package/dist/usecases/ingest/pass4-mention-resolve.js +0 -52
- package/dist/usecases/ingest/pass4-mention-resolve.js.map +0 -1
- package/dist/usecases/ingest/pass5-extract.d.ts +0 -7
- package/dist/usecases/ingest/pass5-extract.js +0 -51
- package/dist/usecases/ingest/pass5-extract.js.map +0 -1
- package/dist/usecases/ingest/pass5-govern.d.ts +0 -13
- package/dist/usecases/ingest/pass5-govern.js +0 -157
- package/dist/usecases/ingest/pass5-govern.js.map +0 -1
- package/dist/usecases/ingest/pipeline.d.ts +0 -28
- package/dist/usecases/ingest/pipeline.js +0 -335
- package/dist/usecases/ingest/pipeline.js.map +0 -1
- package/dist/usecases/ingest/publish-command.d.ts +0 -1
- package/dist/usecases/ingest/publish-command.js +0 -4
- package/dist/usecases/ingest/publish-command.js.map +0 -1
- package/dist/usecases/ingest/serial-govern.d.ts +0 -40
- package/dist/usecases/ingest/serial-govern.js +0 -488
- package/dist/usecases/ingest/serial-govern.js.map +0 -1
- package/dist/usecases/ingest/skip-video-episode.d.ts +0 -4
- package/dist/usecases/ingest/skip-video-episode.js +0 -120
- package/dist/usecases/ingest/skip-video-episode.js.map +0 -1
- package/dist/usecases/ingest/status.d.ts +0 -61
- package/dist/usecases/ingest/status.js +0 -347
- package/dist/usecases/ingest/status.js.map +0 -1
- package/dist/usecases/ingest/timings.d.ts +0 -51
- package/dist/usecases/ingest/timings.js +0 -68
- package/dist/usecases/ingest/timings.js.map +0 -1
- package/dist/usecases/ingest/usage-report.d.ts +0 -125
- package/dist/usecases/ingest/usage-report.js +0 -248
- package/dist/usecases/ingest/usage-report.js.map +0 -1
- package/dist/usecases/ingest/video-pipeline.d.ts +0 -81
- package/dist/usecases/ingest/video-pipeline.js +0 -548
- package/dist/usecases/ingest/video-pipeline.js.map +0 -1
- package/dist/usecases/ingest/video-skip-state.d.ts +0 -29
- package/dist/usecases/ingest/video-skip-state.js +0 -148
- package/dist/usecases/ingest/video-skip-state.js.map +0 -1
- package/dist/usecases/ingest/view-command.d.ts +0 -4
- package/dist/usecases/ingest/view-command.js +0 -67
- package/dist/usecases/ingest/view-command.js.map +0 -1
- package/dist/usecases/ingest/view-server.d.ts +0 -29
- package/dist/usecases/ingest/view-server.js +0 -364
- package/dist/usecases/ingest/view-server.js.map +0 -1
- package/dist/usecases/script/action-span.d.ts +0 -10
- package/dist/usecases/script/action-span.js +0 -42
- package/dist/usecases/script/action-span.js.map +0 -1
- package/dist/usecases/script/actions.d.ts +0 -3
- package/dist/usecases/script/actions.js +0 -184
- package/dist/usecases/script/actions.js.map +0 -1
- package/dist/usecases/script/actor.d.ts +0 -3
- package/dist/usecases/script/actor.js +0 -26
- package/dist/usecases/script/actor.js.map +0 -1
- package/dist/usecases/script/actors.d.ts +0 -3
- package/dist/usecases/script/actors.js +0 -25
- package/dist/usecases/script/actors.js.map +0 -1
- package/dist/usecases/script/add-actor.d.ts +0 -3
- package/dist/usecases/script/add-actor.js +0 -13
- package/dist/usecases/script/add-actor.js.map +0 -1
- package/dist/usecases/script/add-episode.d.ts +0 -3
- package/dist/usecases/script/add-episode.js +0 -9
- package/dist/usecases/script/add-episode.js.map +0 -1
- package/dist/usecases/script/add-location.d.ts +0 -3
- package/dist/usecases/script/add-location.js +0 -11
- package/dist/usecases/script/add-location.js.map +0 -1
- package/dist/usecases/script/add-prop.d.ts +0 -3
- package/dist/usecases/script/add-prop.js +0 -11
- package/dist/usecases/script/add-prop.js.map +0 -1
- package/dist/usecases/script/alias.d.ts +0 -3
- package/dist/usecases/script/alias.js +0 -39
- package/dist/usecases/script/alias.js.map +0 -1
- package/dist/usecases/script/assets.d.ts +0 -3
- package/dist/usecases/script/assets.js +0 -46
- package/dist/usecases/script/assets.js.map +0 -1
- package/dist/usecases/script/audit-assets.d.ts +0 -4
- package/dist/usecases/script/audit-assets.js +0 -37
- package/dist/usecases/script/audit-assets.js.map +0 -1
- package/dist/usecases/script/command-constraints.d.ts +0 -38
- package/dist/usecases/script/command-constraints.js +0 -143
- package/dist/usecases/script/command-constraints.js.map +0 -1
- package/dist/usecases/script/compose-creative-draft.d.ts +0 -3
- package/dist/usecases/script/compose-creative-draft.js +0 -106
- package/dist/usecases/script/compose-creative-draft.js.map +0 -1
- package/dist/usecases/script/context.d.ts +0 -3
- package/dist/usecases/script/context.js +0 -52
- package/dist/usecases/script/context.js.map +0 -1
- package/dist/usecases/script/create.d.ts +0 -3
- package/dist/usecases/script/create.js +0 -27
- package/dist/usecases/script/create.js.map +0 -1
- package/dist/usecases/script/delete.d.ts +0 -3
- package/dist/usecases/script/delete.js +0 -88
- package/dist/usecases/script/delete.js.map +0 -1
- package/dist/usecases/script/describe.d.ts +0 -3
- package/dist/usecases/script/describe.js +0 -32
- package/dist/usecases/script/describe.js.map +0 -1
- package/dist/usecases/script/dialogue.d.ts +0 -3
- package/dist/usecases/script/dialogue.js +0 -30
- package/dist/usecases/script/dialogue.js.map +0 -1
- package/dist/usecases/script/dispatch.d.ts +0 -3
- package/dist/usecases/script/dispatch.js +0 -10
- package/dist/usecases/script/dispatch.js.map +0 -1
- package/dist/usecases/script/do.d.ts +0 -3
- package/dist/usecases/script/do.js +0 -186
- package/dist/usecases/script/do.js.map +0 -1
- package/dist/usecases/script/emotion.d.ts +0 -3
- package/dist/usecases/script/emotion.js +0 -24
- package/dist/usecases/script/emotion.js.map +0 -1
- package/dist/usecases/script/episodes.d.ts +0 -3
- package/dist/usecases/script/episodes.js +0 -62
- package/dist/usecases/script/episodes.js.map +0 -1
- package/dist/usecases/script/export-authoring.d.ts +0 -4
- package/dist/usecases/script/export-authoring.js +0 -326
- package/dist/usecases/script/export-authoring.js.map +0 -1
- package/dist/usecases/script/extend.d.ts +0 -3
- package/dist/usecases/script/extend.js +0 -94
- package/dist/usecases/script/extend.js.map +0 -1
- package/dist/usecases/script/ids.d.ts +0 -3
- package/dist/usecases/script/ids.js +0 -148
- package/dist/usecases/script/ids.js.map +0 -1
- package/dist/usecases/script/importance.d.ts +0 -3
- package/dist/usecases/script/importance.js +0 -16
- package/dist/usecases/script/importance.js.map +0 -1
- package/dist/usecases/script/insert.d.ts +0 -3
- package/dist/usecases/script/insert.js +0 -127
- package/dist/usecases/script/insert.js.map +0 -1
- package/dist/usecases/script/issues.d.ts +0 -3
- package/dist/usecases/script/issues.js +0 -35
- package/dist/usecases/script/issues.js.map +0 -1
- package/dist/usecases/script/lib.d.ts +0 -152
- package/dist/usecases/script/lib.js +0 -1654
- package/dist/usecases/script/lib.js.map +0 -1
- package/dist/usecases/script/locations.d.ts +0 -3
- package/dist/usecases/script/locations.js +0 -25
- package/dist/usecases/script/locations.js.map +0 -1
- package/dist/usecases/script/merge.d.ts +0 -3
- package/dist/usecases/script/merge.js +0 -43
- package/dist/usecases/script/merge.js.map +0 -1
- package/dist/usecases/script/migrate.d.ts +0 -3
- package/dist/usecases/script/migrate.js +0 -210
- package/dist/usecases/script/migrate.js.map +0 -1
- package/dist/usecases/script/move.d.ts +0 -3
- package/dist/usecases/script/move.js +0 -50
- package/dist/usecases/script/move.js.map +0 -1
- package/dist/usecases/script/parenthetical.d.ts +0 -3
- package/dist/usecases/script/parenthetical.js +0 -52
- package/dist/usecases/script/parenthetical.js.map +0 -1
- package/dist/usecases/script/props.d.ts +0 -3
- package/dist/usecases/script/props.js +0 -25
- package/dist/usecases/script/props.js.map +0 -1
- package/dist/usecases/script/refs.d.ts +0 -3
- package/dist/usecases/script/refs.js +0 -111
- package/dist/usecases/script/refs.js.map +0 -1
- package/dist/usecases/script/rename.d.ts +0 -3
- package/dist/usecases/script/rename.js +0 -35
- package/dist/usecases/script/rename.js.map +0 -1
- package/dist/usecases/script/replace.d.ts +0 -3
- package/dist/usecases/script/replace.js +0 -33
- package/dist/usecases/script/replace.js.map +0 -1
- package/dist/usecases/script/review.d.ts +0 -3
- package/dist/usecases/script/review.js +0 -187
- package/dist/usecases/script/review.js.map +0 -1
- package/dist/usecases/script/role.d.ts +0 -3
- package/dist/usecases/script/role.js +0 -16
- package/dist/usecases/script/role.js.map +0 -1
- package/dist/usecases/script/scenes.d.ts +0 -3
- package/dist/usecases/script/scenes.js +0 -66
- package/dist/usecases/script/scenes.js.map +0 -1
- package/dist/usecases/script/script-patch.d.ts +0 -3
- package/dist/usecases/script/script-patch.js +0 -321
- package/dist/usecases/script/script-patch.js.map +0 -1
- package/dist/usecases/script/script-validate.d.ts +0 -3
- package/dist/usecases/script/script-validate.js +0 -27
- package/dist/usecases/script/script-validate.js.map +0 -1
- package/dist/usecases/script/session.d.ts +0 -62
- package/dist/usecases/script/session.js +0 -567
- package/dist/usecases/script/session.js.map +0 -1
- package/dist/usecases/script/split.d.ts +0 -3
- package/dist/usecases/script/split.js +0 -41
- package/dist/usecases/script/split.js.map +0 -1
- package/dist/usecases/script/state-add.d.ts +0 -3
- package/dist/usecases/script/state-add.js +0 -22
- package/dist/usecases/script/state-add.js.map +0 -1
- package/dist/usecases/script/state-delete.d.ts +0 -3
- package/dist/usecases/script/state-delete.js +0 -22
- package/dist/usecases/script/state-delete.js.map +0 -1
- package/dist/usecases/script/state-rename.d.ts +0 -3
- package/dist/usecases/script/state-rename.js +0 -16
- package/dist/usecases/script/state-rename.js.map +0 -1
- package/dist/usecases/script/states.d.ts +0 -3
- package/dist/usecases/script/states.js +0 -197
- package/dist/usecases/script/states.js.map +0 -1
- package/dist/usecases/script/summary.d.ts +0 -3
- package/dist/usecases/script/summary.js +0 -72
- package/dist/usecases/script/summary.js.map +0 -1
- package/dist/usecases/script/synopsis-generate.d.ts +0 -115
- package/dist/usecases/script/synopsis-generate.js +0 -776
- package/dist/usecases/script/synopsis-generate.js.map +0 -1
- package/dist/usecases/script/synopsis.d.ts +0 -3
- package/dist/usecases/script/synopsis.js +0 -45
- package/dist/usecases/script/synopsis.js.map +0 -1
- package/dist/usecases/script/timestamp-filter.d.ts +0 -4
- package/dist/usecases/script/timestamp-filter.js +0 -55
- package/dist/usecases/script/timestamp-filter.js.map +0 -1
- package/dist/usecases/script/timestamp.d.ts +0 -3
- package/dist/usecases/script/timestamp.js +0 -11
- package/dist/usecases/script/timestamp.js.map +0 -1
- package/dist/usecases/script/transition.d.ts +0 -3
- package/dist/usecases/script/transition.js +0 -23
- package/dist/usecases/script/transition.js.map +0 -1
- package/dist/usecases/script/type.d.ts +0 -3
- package/dist/usecases/script/type.js +0 -23
- package/dist/usecases/script/type.js.map +0 -1
- package/dist/usecases/script/v3/mutations.d.ts +0 -2
- package/dist/usecases/script/v3/mutations.js +0 -5
- package/dist/usecases/script/v3/mutations.js.map +0 -1
- package/dist/usecases/script/v4/mutations.d.ts +0 -2
- package/dist/usecases/script/v4/mutations.js +0 -6
- package/dist/usecases/script/v4/mutations.js.map +0 -1
- package/dist/usecases/script/v4/queries.d.ts +0 -15
- package/dist/usecases/script/v4/queries.js +0 -196
- package/dist/usecases/script/v4/queries.js.map +0 -1
- package/dist/usecases/script/working-copy.d.ts +0 -5
- package/dist/usecases/script/working-copy.js +0 -399
- package/dist/usecases/script/working-copy.js.map +0 -1
- package/dist/usecases/script/worldview.d.ts +0 -3
- package/dist/usecases/script/worldview.js +0 -17
- package/dist/usecases/script/worldview.js.map +0 -1
- package/dist/usecases/script/write-authoring.d.ts +0 -3
- package/dist/usecases/script/write-authoring.js +0 -263
- package/dist/usecases/script/write-authoring.js.map +0 -1
- package/dist/usecases/update.d.ts +0 -13
- package/dist/usecases/update.js +0 -128
- package/dist/usecases/update.js.map +0 -1
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// Body-start classifier. A one-piece txt often carries planning front matter
|
|
2
|
-
// before the actual screenplay: 项目大纲 / 角色卡 / 宏观结构 / 一卡集纲. Those
|
|
3
|
-
// pages normalize into stray scenes/episodes (a scene before any episode crashes
|
|
4
|
-
// assemble; 集纲 summaries inflate the episode count). This task judges a numbered
|
|
5
|
-
// window of source lines and, if the real screenplay body begins within it,
|
|
6
|
-
// reports that line number. The pipeline scans windows forward until one hits.
|
|
7
|
-
//
|
|
8
|
-
// Text (not tool) mode: it runs on the cheap deepseek-flash profile, which does
|
|
9
|
-
// not support function calling. The model emits a single line `起点: <行号>` or
|
|
10
|
-
// `起点: 无`, parsed deterministically here.
|
|
11
|
-
export const BODY_START_SYSTEM = "你是短剧剧本的「正文起点定位器」。一份文件常常在真正的剧本正文之前,压着一大段**非正文**的筹备材料。你要判断:**真正的剧本正文**是不是在我给你的这段带行号的文本里开始,如果是,报告它的起始行号。" +
|
|
12
|
-
"\n\n【正文长什么样】逐场的剧本:以「第N集」为集头,下面紧跟「场X-Y 日/内 地点」这种带场次编号的场景头,再往下是「主要人物:/人物:」和一条条以 △ 开头的动作、以及带说话人的台词。这才是正文。" +
|
|
13
|
-
"\n\n【前言长什么样,绝不算正文】:" +
|
|
14
|
-
"\n- 项目基本信息 / 策划大纲 / 题材标签 / 一句话故事 / 核心看点;" +
|
|
15
|
-
"\n- 角色卡:一段段「人物身份 / 外貌和服饰特点 / 性格标签 / 台词语言风格 / 人物小传」的介绍;" +
|
|
16
|
-
"\n- 宏观结构大纲:「阶段一 / 阶段二……」这种整段叙事概述(读起来像剧情简介,没有场次编号、没有逐条台词);" +
|
|
17
|
-
"\n- 一卡集纲:也会写「第N集:小标题」,但下面只是**一句话到一段话的剧情摘要**,没有「场X-Y」场次、没有 △ 动作、没有逐句台词。这是最容易误判的陷阱——它有「第N集」但**不是正文**。" +
|
|
18
|
-
"\n\n【判定规则】只有当你在窗口里看到**带场次编号(场X-Y)或明显逐条动作/台词的剧集**时,才算正文开始。取正文的第一行:通常是正文那个「第N集」集头所在行(若没有集头就是第一个「场X-Y」行)。如果文件里有「剧本正文」「分集剧本」这类分隔标题,正文就从它之后的第一个集头/场次开始。" +
|
|
19
|
-
"\n\n【边界与保守】" +
|
|
20
|
-
"\n- 只报告**本窗口内**能确认的行号;如果这段还全是前言、或正文还没出现,就报告『无』,我会把下一段给你。" +
|
|
21
|
-
"\n- 宁可稍微靠前也不要跳过第 1 集:拿不准该取集头还是场次行时,取更靠前的那一行。" +
|
|
22
|
-
"\n- 行号必须原样照抄我给你的行首数字。" +
|
|
23
|
-
"\n\n【输出格式】只输出一行,不要任何解释:\n- 找到正文起点:`起点: <行号>`(例如 `起点: 140`)\n- 本窗口全是前言 / 还没到正文:`起点: 无`";
|
|
24
|
-
/** Parse the model's single-line reply. Lenient: finds `起点: <n>` anywhere. */
|
|
25
|
-
export function parseBodyStart(text) {
|
|
26
|
-
const m = text.match(/起点\s*[::]\s*(\d+)/);
|
|
27
|
-
if (m)
|
|
28
|
-
return { found: true, line: Math.trunc(Number(m[1])) };
|
|
29
|
-
return { found: false, line: null };
|
|
30
|
-
}
|
|
31
|
-
/** One numbered window → does the screenplay body start here, and at which line. */
|
|
32
|
-
export async function runBodyStart(executor, numberedWindow, signal) {
|
|
33
|
-
const res = await executor.generateText("ingest.body-start", {
|
|
34
|
-
system: BODY_START_SYSTEM,
|
|
35
|
-
user: "下面是源文件的一段,每行以「行号<TAB>内容」给出。判断真正的剧本正文是否在这段里开始,按格式只回一行。\n\n" +
|
|
36
|
-
numberedWindow,
|
|
37
|
-
...(signal ? { signal } : {}),
|
|
38
|
-
});
|
|
39
|
-
return parseBodyStart(res.text);
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=body-start.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"body-start.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/body-start.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,+EAA+E;AAC/E,EAAE;AACF,gFAAgF;AAChF,4EAA4E;AAC5E,0CAA0C;AAI1C,MAAM,CAAC,MAAM,iBAAiB,GAC5B,uGAAuG;IACvG,yGAAyG;IACzG,qBAAqB;IACrB,0CAA0C;IAC1C,wDAAwD;IACxD,2DAA2D;IAC3D,qGAAqG;IACrG,oJAAoJ;IACpJ,aAAa;IACb,0DAA0D;IAC1D,8CAA8C;IAC9C,uBAAuB;IACvB,uFAAuF,CAAC;AAO1F,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC1C,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAyB,EACzB,cAAsB,EACtB,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC3D,MAAM,EAAE,iBAAiB;QACzB,IAAI,EACF,2DAA2D;YAC3D,cAAc;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { type Delta } from "../../../domain/ingest/serial-context.js";
|
|
2
|
-
import type { LlmTaskExecutor } from "../../types.js";
|
|
3
|
-
export declare const EPISODE_ASSETS_SYSTEM: string;
|
|
4
|
-
export declare function buildEpisodeAssetsUser(contextMd: string, bodyMd: string): string;
|
|
5
|
-
export declare function runEpisodeAssets(executor: LlmTaskExecutor, contextMd: string, bodyMd: string, signal?: AbortSignal): Promise<{
|
|
6
|
-
delta: Delta;
|
|
7
|
-
raw: string;
|
|
8
|
-
}>;
|
|
9
|
-
/** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
|
|
10
|
-
export declare class SerialDeltaShapeError extends Error {
|
|
11
|
-
readonly code: "serial_delta_shape";
|
|
12
|
-
constructor(message: string);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Best-effort repair when the model double-encodes an array as a JSON string and
|
|
16
|
-
* uses bare `"` as Chinese quotation marks inside values
|
|
17
|
-
* (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
|
|
18
|
-
* walk the text as JSON-ish strings and escape interior `"` that cannot close a
|
|
19
|
-
* value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
|
|
20
|
-
* parse fails — callers must not use this on already-valid JSON.
|
|
21
|
-
*/
|
|
22
|
-
export declare function repairDoubleEncodedJson(raw: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
|
|
25
|
-
* and JSON-encoded array strings (double-encoding, with quote-repair). Anything
|
|
26
|
-
* else throws — never silently collapses to [].
|
|
27
|
-
*/
|
|
28
|
-
export declare function coerceJsonArray(v: unknown, field: string): unknown[];
|
|
29
|
-
export declare function toDelta(input: unknown): Delta;
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
// ingest.episode-assets task (§ serial). The front gives ONLY the body (scenes +
|
|
2
|
-
// dialogue/action, speakers by name) — no pre-extracted cast/props/look. Walking
|
|
3
|
-
// episodes IN ORDER with a running context that starts EMPTY, the model discovers
|
|
4
|
-
// entities, 造型 (looks), identity merges, and — per scene — who is
|
|
5
|
-
// present, where, and in which look. Output is a structured Delta via native
|
|
6
|
-
// tool-calling (SERIAL_DELTA_SCHEMA): `name` and `aliases` are separate fields, so
|
|
7
|
-
// a canonical name can never be mangled by a markdown `名 | 名` delimiter — the
|
|
8
|
-
// failure mode where a model that wrote `大骨头(Big Bones / Marcus Vale)` got
|
|
9
|
-
// fragmented into ghost entities. Tool mode → serial profile must call functions.
|
|
10
|
-
import { emptyDelta } from "../../../domain/ingest/serial-context.js";
|
|
11
|
-
import { SERIAL_DELTA_SCHEMA } from "../schemas.js";
|
|
12
|
-
export const EPISODE_ASSETS_SYSTEM = [
|
|
13
|
-
"你是剧本资产/造型标注器。前段只给了正文(场景、台词、动作),**没有任何现成的人物/道具/造型清单**——资产与造型全部由你从正文里逐集发现、逐集维护。",
|
|
14
|
-
"结合【已知设定】(到目前为止你已建立的登记)与【本段正文】,调用 `emit_delta` 工具返回一个结构化对象覆盖这一整段的所有决策。空数组就传 `[]`。",
|
|
15
|
-
"**【本段正文】可能包含若干集**(每集以 `# ep_NNN` 开头);把它们当作连续推进的一段整体处理,跨集沿用同一 canonical 名字。",
|
|
16
|
-
"始终使用【已知设定】里的既有 canonical 名字;同一个人全剧保持同一名字。",
|
|
17
|
-
"人物 canonical 名必须采用【本段正文】scene.actors 或 speaker 中出现的原文姓名拼写;外语姓名保持外语原名,不翻译、不音译、不改成中文名。称谓、简称和译名只放 aliases 或 merges,不能取代已经出现的原文全名。",
|
|
18
|
-
"",
|
|
19
|
-
"**newEntities —— 本段【已知设定】里还没有的实体,每个登记一条**:",
|
|
20
|
-
" · name = 纯 canonical 名,**绝不含括号/斜杠/译名夹注/对白标记**(不要 name=『Marcus Vale(马库斯·维尔)』或『Marcus Vale,魂语』,而是 name=『Marcus Vale』)。人名采用正文里出现的原文完整姓名拼写(`Emily Cole` 不得改成 `艾米丽·科尔`;『苏若雪』不缩成『若雪』)。",
|
|
21
|
-
" · aliases = 这段里该实体的**所有其他叫法**,逐个单列(纯名,别带『(心)』『:』『,魂语』这类对白/情绪标记):别名、译名、前世名、短名/全名、英文原名,**尤其对白说话人在正文里的写法**。正文说话人写『伊文·布鲁克斯』而你 canonical 是『大牛』→ 把『伊文·布鲁克斯』放进 aliases;写『大骨』而 canonical 是『大骨头』→ aliases 放『大骨』。系统靠 aliases 把正文里的说话人/称呼归到你这个实体,**aliases 漏了就会新造重复鬼影**。",
|
|
22
|
-
" · **同一个实体只登记一条,绝不拆成多条**。**不同的角色绝不互相列为别名**——哪怕关系密切、常同框:大牛 和 丹尼·克罗斯 是两个人,别把丹尼的名字写进大牛的 aliases,反之亦然。判据:aliases 只放**同一个人/物**的不同叫法,不放另一个角色。",
|
|
23
|
-
" · kind=actor/location/prop。",
|
|
24
|
-
" · description=一句话说明**这个实体本身是谁 / 什么身份 / 什么东西**,非空。人物只写身份、角色、关系,不写服装造型;绝不写它所处的场景 / 环境 / 地点 / 当时在发生什么。原文有身份信息就照抄 / 概括;原文没写就据台词 / 称呼 / 戏份补一句最简身份(如『苏家中间人』『急诊护士』『赵长河的手下』)。场景写空间用途;道具写物件用途。",
|
|
25
|
-
" · defaultLook=实体首次登记时必填的**默认造型**:name 固定写『常态』;description 写可直接用于视觉复现的外貌、服饰、材质、颜色、布景或形制,非空。人物身份与关系不能拿来充当造型描述。优先采用原文明确描写;原文信息不足时,结合实体身份与同场视觉信息补成最简、稳定、可画的常态造型。",
|
|
26
|
-
" · **登记范围**:人物——登记每个能独立说话、拿取或交接道具、推动动作的具体单人角色;众人、群众、路人、轿夫4名等无法区分成员的群体不登记为 actor,群体共同发声由正文的 group speaker 承载。地点——每个可独立布置和重复引用的稳定物理空间各登记一次;客厅、卧室、卫生间、大厅、广场、舞台、后台分别登记,相关空间用『豪宅·客厅』『豪宅·卧室』表达归属。地点其它写法用 merges 归一。道具——**只登记关键道具**:①剧情关键(信物/线索/推动情节,如第一集丢了第三集寻回的手机)或 ②跨≥2场需稳定复现、要美术保持一致的物件;一次性/纯功能/视觉无需追踪的(随手打电话的手机、背景杯子/路人车)不登记。",
|
|
27
|
-
" · 已登记过的实体不要重复登记;若它这段有了新叫法,用 merges 补,不用在 newEntities 再列一遍。",
|
|
28
|
-
"**merges —— 本段冒出一个称呼,其实是某个【已知设定】里已登记实体的别名(尚未登记过这个称呼)**:{from: 本段这个称呼, into: 已登记实体的 canonical}。判据:(1) 字面变体(大骨=大骨头=大骨(BigBull)、苏若雪=若雪);(2) 剧情推断同一(上下文/外观/关系/连续动作,如前文『小骨』本段点名『杰克·莱德』)。**只有当 from 确实是 into 的另一叫法时才 merge;名字或外观相似但是不同角色(如同为骷髅但身份不同)绝不 merge。** from 已经是独立登记的实体时,不要 merge(系统不会合并两个已登记实体)。",
|
|
29
|
-
" · **地点同样要 merge——判据一样:是不是同一个场**。同一个地方的不同写法要合成一条:①字面变体(『车轮旁』『矿车车轮旁』『矿车车轮』是同一处;带不带平台/区域前缀如『Dawnfall Online - 棺木铺』=『棺木铺』);②剧情确定同一处(同一场戏在同一空间发生)。**不是同一个场就各自独立**(矿轨修造铺 和 棺木铺 是两个地方,不合)。别因为写法带了长前缀就当成新地点。",
|
|
30
|
-
"**正文里每个和已登记 canonical 写法不同的名字,都要用 merges 归过去**——系统会照 merges + aliases 把正文(对白说话人、旁白文本)里的这些写法直接改写成 canonical。**漏掉某个写法,它就会变成一个游离的重复实体。** 所以本段正文里出现的每个人名/称呼,要么本身就是某 canonical,要么在 aliases/merges 里登记过。",
|
|
31
|
-
"looks:默认造型之外、需要单独复现的新增造型。entity=实体 canonical 名;name=造型名;aliases=同义造型名;description=这套外观一句话。",
|
|
32
|
-
" **复用优先——造型默认从【已知设定】里该实体已列出的造型清单里选一个,逐字照抄那个已有造型名**。除非本段外观与所有已有造型都有实质差异(换了整套衣服/场景被毁/道具明显改形),才新开一条造型。不要因为本段原文用词不同就另造近义新名——已知设定里已有『黑色连帽卫衣』,本段又见黑色卫衣,照抄『黑色连帽卫衣』即可;同义换名只会把同一套衣服拆成多张图。",
|
|
33
|
-
" 默认造型只写在 newEntities.defaultLook,不要在 looks 里重复;looks 只登记换装、变身、场景被毁、道具破损/发光等额外造型。人物=整体扮相;场景=环境外观;道具=物件外观。",
|
|
34
|
-
" 造型名=需要美术单独画一张图的外观档位(常态、婚服、西装、龙形;场景的 白天/夜晚/被毁;道具的 破损/发光)。**造型名必须用中文**:正文里的英文专名(套装/职业/形态名,如 Sean's Revenge、Flamecaster、Grave Priest、Shieldguard)一律译成中文再作造型名(肖恩的复仇套装、焰术师、墓祭司、盾卫)。",
|
|
35
|
-
" description=这套外观长什么样的一句话(优先用原文描写:服饰/颜色/发型/配饰,或场景布景/道具形制)。**常态 description 不能留空。绝不写心情/身体状况/胖瘦**(满脸泪痕、愤怒、虚弱濒死、受伤、昏迷、消瘦——这些不是造型;判据:换成它,美术要不要另画一张图)。",
|
|
36
|
-
"**lookChanges —— 造型变化(稀疏,只标变化处)**:某个实体的造型从某一场起变了,就标一条 {scene, entity, look}。scene=变化发生的场景id(scn_012);entity=canonical 名;look=从这场起穿的造型(必须是你在 looks 里注册过的档位名)。",
|
|
37
|
-
" · **只标造型真的改变的那一场**(换装/变身/受损/回归日常)。例:大骨头在 scn_050 变身焰术师 → {scene:scn_050, entity:大骨头, look:焰术师态};后面若换回常态,在那一场再标 {..., look:常态}。",
|
|
38
|
-
" · 没变化的场**不用标**——系统自动沿用上一次的造型一直到下一次变化。首次出现默认常态,也不用特意标。",
|
|
39
|
-
" · 你**不需要**列出每一场谁在场——谁在场系统直接从正文(对白说话人、旁白)读,你只管注册实体、归一名字、标造型变化。",
|
|
40
|
-
"subEvents:本段关键剧情原子,每条一句话(维护剧情理解与压缩)。",
|
|
41
|
-
"summary:本段一句话梗概;若本段含多集,概括为整段一句话。",
|
|
42
|
-
].join("\n");
|
|
43
|
-
export function buildEpisodeAssetsUser(contextMd, bodyMd) {
|
|
44
|
-
return [
|
|
45
|
-
"【已知设定】(截至上一段你已建立的登记;开篇时为空)",
|
|
46
|
-
contextMd.trim() || "(空,从这一段开始建立)",
|
|
47
|
-
"",
|
|
48
|
-
"【本段正文】(可能含多集,每集以 `# ep_NNN` 开头)",
|
|
49
|
-
bodyMd.trim(),
|
|
50
|
-
].join("\n");
|
|
51
|
-
}
|
|
52
|
-
export async function runEpisodeAssets(executor, contextMd, bodyMd, signal) {
|
|
53
|
-
const response = await executor.generateTool("ingest.episode-assets", {
|
|
54
|
-
system: EPISODE_ASSETS_SYSTEM,
|
|
55
|
-
user: buildEpisodeAssetsUser(contextMd, bodyMd),
|
|
56
|
-
tool: { name: "emit_delta", description: "返回本段的资产/造型/场景 Delta", inputSchema: SERIAL_DELTA_SCHEMA },
|
|
57
|
-
...(signal ? { signal } : {}),
|
|
58
|
-
});
|
|
59
|
-
return { delta: toDelta(response.input), raw: JSON.stringify(response.input) };
|
|
60
|
-
}
|
|
61
|
-
// Schema-validated tool input → Delta. The schema guarantees shape, so this is a
|
|
62
|
-
// straight, defensive projection: entity `aliases` become immediate merges into
|
|
63
|
-
// the canonical name (so translations/past-life/alt names fold in), and look
|
|
64
|
-
// name+aliases become the `names[]` list (names[0]=canonical) applyDelta expects.
|
|
65
|
-
//
|
|
66
|
-
// Models (and some tool bridges) still occasionally emit array fields as JSON
|
|
67
|
-
// *strings* (double-encoded), sometimes with unescaped quotes inside. Historically
|
|
68
|
-
// `arr()` treated any non-array as `[]` and serial silently dropped every entity /
|
|
69
|
-
// look for that window. We now re-parse stringified arrays and **throw** on shape
|
|
70
|
-
// failure so the window can retry instead of shipping an empty registry.
|
|
71
|
-
const KIND = new Set(["actor", "location", "prop"]);
|
|
72
|
-
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
73
|
-
const str = (v) => (typeof v === "string" ? v.trim() : "");
|
|
74
|
-
function requiredString(value, field) {
|
|
75
|
-
const parsed = str(value);
|
|
76
|
-
if (!parsed)
|
|
77
|
-
throw new SerialDeltaShapeError(`${field}: expected non-empty string`);
|
|
78
|
-
return parsed;
|
|
79
|
-
}
|
|
80
|
-
function parseDefaultLook(value, field) {
|
|
81
|
-
if (!isObj(value))
|
|
82
|
-
throw new SerialDeltaShapeError(`${field}: expected object`);
|
|
83
|
-
const name = requiredString(value.name, `${field}.name`);
|
|
84
|
-
if (name !== "常态")
|
|
85
|
-
throw new SerialDeltaShapeError(`${field}.name: expected 常态`);
|
|
86
|
-
return { name, description: requiredString(value.description, `${field}.description`) };
|
|
87
|
-
}
|
|
88
|
-
/** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
|
|
89
|
-
export class SerialDeltaShapeError extends Error {
|
|
90
|
-
code = "serial_delta_shape";
|
|
91
|
-
constructor(message) {
|
|
92
|
-
super(message);
|
|
93
|
-
this.name = "SerialDeltaShapeError";
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Best-effort repair when the model double-encodes an array as a JSON string and
|
|
98
|
-
* uses bare `"` as Chinese quotation marks inside values
|
|
99
|
-
* (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
|
|
100
|
-
* walk the text as JSON-ish strings and escape interior `"` that cannot close a
|
|
101
|
-
* value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
|
|
102
|
-
* parse fails — callers must not use this on already-valid JSON.
|
|
103
|
-
*/
|
|
104
|
-
export function repairDoubleEncodedJson(raw) {
|
|
105
|
-
let out = "";
|
|
106
|
-
let inString = false;
|
|
107
|
-
for (let i = 0; i < raw.length; i++) {
|
|
108
|
-
const c = raw[i];
|
|
109
|
-
if (!inString) {
|
|
110
|
-
out += c;
|
|
111
|
-
if (c === '"')
|
|
112
|
-
inString = true;
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
if (c === "\\" && i + 1 < raw.length) {
|
|
116
|
-
out += c + raw[i + 1];
|
|
117
|
-
i++;
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
if (c === '"') {
|
|
121
|
-
let j = i + 1;
|
|
122
|
-
while (j < raw.length && /\s/.test(raw[j]))
|
|
123
|
-
j++;
|
|
124
|
-
const next = j < raw.length ? raw[j] : "";
|
|
125
|
-
// Structural close of a JSON string (key or value).
|
|
126
|
-
if (next === "" || next === "," || next === "}" || next === "]" || next === ":") {
|
|
127
|
-
out += c;
|
|
128
|
-
inString = false;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
// Interior bare quote (Chinese quotation marks etc.) → escape.
|
|
132
|
-
out += '\\"';
|
|
133
|
-
}
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
out += c;
|
|
137
|
-
}
|
|
138
|
-
return out;
|
|
139
|
-
}
|
|
140
|
-
function parseJsonArrayString(t, field) {
|
|
141
|
-
const tryParse = (s) => JSON.parse(s);
|
|
142
|
-
let parsed;
|
|
143
|
-
try {
|
|
144
|
-
parsed = tryParse(t);
|
|
145
|
-
}
|
|
146
|
-
catch (first) {
|
|
147
|
-
const repaired = repairDoubleEncodedJson(t);
|
|
148
|
-
if (repaired === t) {
|
|
149
|
-
throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed: ${first instanceof Error ? first.message : String(first)}`);
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
parsed = tryParse(repaired);
|
|
153
|
-
}
|
|
154
|
-
catch (second) {
|
|
155
|
-
throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed after quote-repair: ${second instanceof Error ? second.message : String(second)}`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
if (!Array.isArray(parsed)) {
|
|
159
|
-
throw new SerialDeltaShapeError(`${field}: expected JSON array string, got ${typeof parsed}`);
|
|
160
|
-
}
|
|
161
|
-
return parsed;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
|
|
165
|
-
* and JSON-encoded array strings (double-encoding, with quote-repair). Anything
|
|
166
|
-
* else throws — never silently collapses to [].
|
|
167
|
-
*/
|
|
168
|
-
export function coerceJsonArray(v, field) {
|
|
169
|
-
if (v == null)
|
|
170
|
-
return [];
|
|
171
|
-
if (Array.isArray(v))
|
|
172
|
-
return v;
|
|
173
|
-
if (typeof v === "string") {
|
|
174
|
-
const t = v.trim();
|
|
175
|
-
if (!t)
|
|
176
|
-
return [];
|
|
177
|
-
return parseJsonArrayString(t, field);
|
|
178
|
-
}
|
|
179
|
-
throw new SerialDeltaShapeError(`${field}: expected array, got ${typeof v}`);
|
|
180
|
-
}
|
|
181
|
-
// Deterministic backstop for the one thing the model still slips on: a canonical
|
|
182
|
-
// name carrying an inline paren annotation — `大骨头(Big Bones / Marcus Vale)`,
|
|
183
|
-
// `银蕾丝(SilverLace)`. The schema asks for name/aliases split, but a few leak
|
|
184
|
-
// through, so we split mechanically here (100% reliable, model-independent): the
|
|
185
|
-
// text before the first paren is the clean name; the paren's inner content, split
|
|
186
|
-
// on / , 、; separators, is preserved as aliases (never discarded — an inline
|
|
187
|
-
// annotation is the source explicitly declaring the alias mapping). Tolerates an
|
|
188
|
-
// unclosed paren (`大骨(Big Bones`). A leading paren (no name before it) is left
|
|
189
|
-
// whole — it isn't a name annotation.
|
|
190
|
-
const PAREN_RE = /[((]([^))]*)[))]?/;
|
|
191
|
-
function splitParen(raw) {
|
|
192
|
-
const s = str(raw);
|
|
193
|
-
const m = PAREN_RE.exec(s);
|
|
194
|
-
if (!m)
|
|
195
|
-
return { name: s, aliases: [] };
|
|
196
|
-
const name = s.slice(0, m.index).trim();
|
|
197
|
-
if (!name)
|
|
198
|
-
return { name: s, aliases: [] };
|
|
199
|
-
const aliases = (m[1] ?? "").split(/[//,,、;;]/).map((x) => x.trim()).filter(Boolean);
|
|
200
|
-
return { name, aliases };
|
|
201
|
-
}
|
|
202
|
-
const cleanName = (raw) => splitParen(str(raw)).name;
|
|
203
|
-
function asDeltaObject(input) {
|
|
204
|
-
if (isObj(input))
|
|
205
|
-
return input;
|
|
206
|
-
if (typeof input === "string") {
|
|
207
|
-
const t = input.trim();
|
|
208
|
-
if (!t)
|
|
209
|
-
return null;
|
|
210
|
-
let parsed;
|
|
211
|
-
try {
|
|
212
|
-
parsed = JSON.parse(t);
|
|
213
|
-
}
|
|
214
|
-
catch (e) {
|
|
215
|
-
throw new SerialDeltaShapeError(`delta: top-level JSON string failed to parse: ${e instanceof Error ? e.message : String(e)}`);
|
|
216
|
-
}
|
|
217
|
-
if (!isObj(parsed)) {
|
|
218
|
-
throw new SerialDeltaShapeError(`delta: top-level JSON string must be an object, got ${typeof parsed}`);
|
|
219
|
-
}
|
|
220
|
-
return parsed;
|
|
221
|
-
}
|
|
222
|
-
return null;
|
|
223
|
-
}
|
|
224
|
-
export function toDelta(input) {
|
|
225
|
-
const d = emptyDelta();
|
|
226
|
-
const obj = asDeltaObject(input);
|
|
227
|
-
if (!obj)
|
|
228
|
-
return d;
|
|
229
|
-
for (const e of coerceJsonArray(obj.newEntities, "newEntities")) {
|
|
230
|
-
if (!isObj(e))
|
|
231
|
-
continue;
|
|
232
|
-
const kind = str(e.kind);
|
|
233
|
-
const { name, aliases: parenAliases } = splitParen(str(e.name));
|
|
234
|
-
if (!KIND.has(kind) || !name)
|
|
235
|
-
continue;
|
|
236
|
-
const description = requiredString(e.description, `newEntities.${name}.description`);
|
|
237
|
-
const defaultLook = parseDefaultLook(e.defaultLook, `newEntities.${name}.defaultLook`);
|
|
238
|
-
// Every 叫法 → clean alias. A declared alias may ITSELF carry a paren
|
|
239
|
-
// (`旧药箱(带三角划痕)`) — split it, else the polluted form registers as an
|
|
240
|
-
// alias and its extra length promotes it to canonical (fuller-name rule).
|
|
241
|
-
const aliasNames = [...parenAliases];
|
|
242
|
-
for (const a of coerceJsonArray(e.aliases, "newEntities.aliases")) {
|
|
243
|
-
const { name: base, aliases: inner } = splitParen(str(a));
|
|
244
|
-
if (base)
|
|
245
|
-
aliasNames.push(base);
|
|
246
|
-
aliasNames.push(...inner);
|
|
247
|
-
}
|
|
248
|
-
const aliases = [...new Set(aliasNames.filter((a) => a && a !== name))];
|
|
249
|
-
d.newEntities.push({ name, kind: kind, description, aliases, defaultLook });
|
|
250
|
-
}
|
|
251
|
-
for (const m of coerceJsonArray(obj.merges, "merges")) {
|
|
252
|
-
if (!isObj(m))
|
|
253
|
-
continue;
|
|
254
|
-
const from = cleanName(m.from);
|
|
255
|
-
const into = cleanName(m.into);
|
|
256
|
-
if (from && into && from !== into)
|
|
257
|
-
d.merges.push({ from, into });
|
|
258
|
-
}
|
|
259
|
-
for (const l of coerceJsonArray(obj.looks, "looks")) {
|
|
260
|
-
if (!isObj(l))
|
|
261
|
-
continue;
|
|
262
|
-
const entity = cleanName(l.entity);
|
|
263
|
-
const name = cleanName(l.name);
|
|
264
|
-
if (!entity || !name)
|
|
265
|
-
continue;
|
|
266
|
-
const names = [name, ...coerceJsonArray(l.aliases, "looks.aliases").map(cleanName).filter(Boolean)];
|
|
267
|
-
d.looks.push({ entity, names, description: requiredString(l.description, `looks.${entity}.${name}.description`) });
|
|
268
|
-
}
|
|
269
|
-
for (const c of coerceJsonArray(obj.lookChanges, "lookChanges")) {
|
|
270
|
-
if (!isObj(c))
|
|
271
|
-
continue;
|
|
272
|
-
const scene = str(c.scene);
|
|
273
|
-
const entity = cleanName(c.entity);
|
|
274
|
-
const look = cleanName(c.look);
|
|
275
|
-
if (scene && entity && look)
|
|
276
|
-
d.lookChanges.push({ scene, entity, look });
|
|
277
|
-
}
|
|
278
|
-
d.subEvents = coerceJsonArray(obj.subEvents, "subEvents").map(str).filter(Boolean);
|
|
279
|
-
d.summary = str(obj.summary);
|
|
280
|
-
return d;
|
|
281
|
-
}
|
|
282
|
-
//# sourceMappingURL=episode-assets.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"episode-assets.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/episode-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LlmTaskExecutor } from "../../types.js";
|
|
2
|
-
export declare const MENTION_RESOLVE_SYSTEM: string;
|
|
3
|
-
export type MentionLine = {
|
|
4
|
-
idx: number;
|
|
5
|
-
text: string;
|
|
6
|
-
};
|
|
7
|
-
export declare function buildMentionUser(cast: string[], lines: MentionLine[]): string;
|
|
8
|
-
export declare function parseMentionRewrites(raw: string, valid: Set<number>): Map<number, string>;
|
|
9
|
-
export declare function runMentionResolve(executor: LlmTaskExecutor, cast: string[], lines: MentionLine[], signal?: AbortSignal): Promise<Map<number, string>>;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
// ingest.mention-resolve task (§pass4). Plain-text pronoun resolution: given a
|
|
2
|
-
// scene's known cast and its numbered body lines, rewrite lines whose
|
|
3
|
-
// pronoun/vague reference (他/她/那人/一人/另一人…) can be pinned to a concrete
|
|
4
|
-
// cast member. Only pronoun substitution — the rest of the line stays verbatim.
|
|
5
|
-
// Empty output means nothing was resolvable.
|
|
6
|
-
import { generateOptional } from "./asset-govern.js";
|
|
7
|
-
export const MENTION_RESOLVE_SYSTEM = [
|
|
8
|
-
"你在把剧本正文里的代词/泛指(他、她、那人、一人、另一人、对方 等)替换成具体人名。",
|
|
9
|
-
"给你本场已知人物名单,和若干带编号的正文行。只有当你能从上下文确定某个代词具体指名单里的谁时,才改写该行。",
|
|
10
|
-
"铁律:只替换能确定的代词,其余文字**逐字不变**,不润色、不增删、不改标点。名字只能用名单里的。判不出就别动那行。",
|
|
11
|
-
"输出:每个被改写的行一行,格式 `编号<TAB>改写后的整行`。没改的行不要输出;没有任何可改的就输出空。",
|
|
12
|
-
].join("\n");
|
|
13
|
-
export function buildMentionUser(cast, lines) {
|
|
14
|
-
return [`【本场人物】${cast.join("、") || "(无)"}`, "", "【正文行】", ...lines.map((l) => `${l.idx}\t${l.text}`)].join("\n");
|
|
15
|
-
}
|
|
16
|
-
export function parseMentionRewrites(raw, valid) {
|
|
17
|
-
const out = new Map();
|
|
18
|
-
for (const line of raw.split("\n")) {
|
|
19
|
-
const tab = line.indexOf("\t");
|
|
20
|
-
if (tab <= 0)
|
|
21
|
-
continue;
|
|
22
|
-
const idx = Number(line.slice(0, tab).trim().replace(/^[[]|[\]]$/g, ""));
|
|
23
|
-
const text = line.slice(tab + 1);
|
|
24
|
-
if (Number.isInteger(idx) && valid.has(idx) && text.trim())
|
|
25
|
-
out.set(idx, text);
|
|
26
|
-
}
|
|
27
|
-
return out;
|
|
28
|
-
}
|
|
29
|
-
export async function runMentionResolve(executor, cast, lines, signal) {
|
|
30
|
-
if (lines.length === 0 || cast.length === 0)
|
|
31
|
-
return new Map();
|
|
32
|
-
const text = await generateOptional(executor, "ingest.mention-resolve", {
|
|
33
|
-
system: MENTION_RESOLVE_SYSTEM,
|
|
34
|
-
user: buildMentionUser(cast, lines),
|
|
35
|
-
...(signal ? { signal } : {}),
|
|
36
|
-
});
|
|
37
|
-
return parseMentionRewrites(text, new Set(lines.map((l) => l.idx)));
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=mention-resolve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mention-resolve.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/mention-resolve.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sEAAsE;AACtE,uEAAuE;AACvE,gFAAgF;AAChF,6CAA6C;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,4CAA4C;IAC5C,uDAAuD;IACvD,4DAA4D;IAC5D,uDAAuD;CACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIb,MAAM,UAAU,gBAAgB,CAAC,IAAc,EAAE,KAAoB;IACnE,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,KAAkB;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,CAAC;YAAE,SAAS;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAyB,EAAE,IAAc,EAAE,KAAoB,EAAE,MAAoB;IAC3H,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE;QACtE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Delta } from "../../../domain/ingest/serial-context.js";
|
|
2
|
-
import type { LlmTaskExecutor } from "../../types.js";
|
|
3
|
-
export declare const NAME_FIX_SYSTEM: string;
|
|
4
|
-
export declare function buildNameFixUser(contextMd: string, names: string[]): string;
|
|
5
|
-
export declare function runNameFix(executor: LlmTaskExecutor, contextMd: string, names: string[], signal?: AbortSignal): Promise<{
|
|
6
|
-
delta: Delta;
|
|
7
|
-
raw: string;
|
|
8
|
-
}>;
|
|
9
|
-
export declare function nameFixToDelta(input: unknown, names?: string[]): Delta;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// ingest.name-fix task (§ serial repair). After the serial pass, some names appear
|
|
2
|
-
// in the body but resolve to NO registry entity — the model missed a merge. Rather
|
|
3
|
-
// than mint ghost assets, we ask once: for each such name, is it another叫法 of an
|
|
4
|
-
// already-registered entity (→ merge), or a genuinely new entity (→ newEntity)?
|
|
5
|
-
// Output is a Delta with only newEntities + merges. New entities carry their
|
|
6
|
-
// required default look inline. Tool mode.
|
|
7
|
-
import { NAME_FIX_SCHEMA } from "../schemas.js";
|
|
8
|
-
import { SerialDeltaShapeError, toDelta } from "./episode-assets.js";
|
|
9
|
-
export const NAME_FIX_SYSTEM = [
|
|
10
|
-
"你是剧本实体归一修复器。【已知设定】是已建立的实体登记(register)。下面【待归一名字】是正文里出现、但还没能对应到 register 里任何实体的名字。",
|
|
11
|
-
"对**每一个**待归一名字,判断它是不是 register 里某个已登记实体的另一种叫法:",
|
|
12
|
-
" · **是**(字面变体如 大骨=大骨头、苏若雪=若雪;或剧情/身份能确定是同一个,如前世名/化名/全名短名)→ 放进 `merges`:{from: 这个名字, into: 已登记实体的 canonical}。",
|
|
13
|
-
" · **不是**(它确实是 register 里从没登记过的一个新实体)→ 放进 `newEntities`:{kind, name(纯 canonical), description(一句话身份), aliases, defaultLook:{name:'常态', description:可见外观}}。",
|
|
14
|
-
"新人物的 canonical name 直接使用【待归一名字】里的原文姓名拼写;外语姓名不翻译、不音译、不改成中文名。",
|
|
15
|
-
"人物 description 只写身份、角色和关系;defaultLook.description 写外貌、服饰等可直接复现的默认造型,两者不能互相代替。",
|
|
16
|
-
"**不同角色绝不互相当别名**。拿不准是哪一个已有实体时,宁可当新实体登记,也不要 merge 错人。",
|
|
17
|
-
"地点同理:同一个地方的不同写法(带不带平台/区域前缀、『车轮旁』=『矿车车轮旁』)merge 到已有那条;确实是新地方才 newEntity。",
|
|
18
|
-
"只输出 merges 和 newEntities 两项,覆盖**每一个**待归一名字。",
|
|
19
|
-
].join("\n");
|
|
20
|
-
export function buildNameFixUser(contextMd, names) {
|
|
21
|
-
return [
|
|
22
|
-
"【已知设定】(已登记的实体)",
|
|
23
|
-
contextMd.trim() || "(空)",
|
|
24
|
-
"",
|
|
25
|
-
"【待归一名字】(正文里出现但未对应到任何已登记实体,逐个处理)",
|
|
26
|
-
names.map((n) => `- ${n}`).join("\n"),
|
|
27
|
-
].join("\n");
|
|
28
|
-
}
|
|
29
|
-
// Runs the fix and returns a Delta carrying only its newEntities + merges.
|
|
30
|
-
export async function runNameFix(executor, contextMd, names, signal) {
|
|
31
|
-
const response = await executor.generateTool("ingest.name-fix", {
|
|
32
|
-
system: NAME_FIX_SYSTEM,
|
|
33
|
-
user: buildNameFixUser(contextMd, names),
|
|
34
|
-
tool: { name: "emit_fix", description: "把待归一名字 merge 到已有或登记为新实体", inputSchema: NAME_FIX_SCHEMA },
|
|
35
|
-
...(signal ? { signal } : {}),
|
|
36
|
-
});
|
|
37
|
-
return { delta: nameFixToDelta(response.input, names), raw: JSON.stringify(response.input) };
|
|
38
|
-
}
|
|
39
|
-
const nameKey = (value) => value.normalize("NFC").replace(/\s+/g, " ").trim();
|
|
40
|
-
export function nameFixToDelta(input, names = []) {
|
|
41
|
-
const delta = toDelta(input);
|
|
42
|
-
const covered = new Set();
|
|
43
|
-
for (const merge of delta.merges)
|
|
44
|
-
covered.add(nameKey(merge.from));
|
|
45
|
-
for (const entity of delta.newEntities) {
|
|
46
|
-
covered.add(nameKey(entity.name));
|
|
47
|
-
for (const alias of entity.aliases)
|
|
48
|
-
covered.add(nameKey(alias));
|
|
49
|
-
}
|
|
50
|
-
const missing = names.filter((name) => !covered.has(nameKey(name)));
|
|
51
|
-
if (missing.length) {
|
|
52
|
-
throw new SerialDeltaShapeError(`name-fix did not cover: ${missing.join("、")}`);
|
|
53
|
-
}
|
|
54
|
-
return delta;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=name-fix.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"name-fix.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/name-fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { StateGroup } from "../../../domain/ingest/state-reconcile.js";
|
|
2
|
-
import type { LlmTaskExecutor } from "../../types.js";
|
|
3
|
-
export declare const STATE_RECONCILE_SYSTEM: string;
|
|
4
|
-
export declare function parseStateGroups(raw: string, validIds: Set<string>): StateGroup[];
|
|
5
|
-
export declare function runStateReconcile(executor: LlmTaskExecutor, states: Array<{
|
|
6
|
-
id: string;
|
|
7
|
-
name: string;
|
|
8
|
-
}>, signal?: AbortSignal): Promise<StateGroup[]>;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// ingest.state-reconcile task (§9.8). Per canonical owner, merge state names
|
|
2
|
-
// that describe the same stable visual appearance. No roster recall — the whole
|
|
3
|
-
// owner's states go to the model at once. Emotion/pose/transient states should
|
|
4
|
-
// already be absent; the model only groups equivalent durable looks.
|
|
5
|
-
import { generateOptional } from "./asset-govern.js";
|
|
6
|
-
export const STATE_RECONCILE_SYSTEM = [
|
|
7
|
-
"你在给某个角色/地点/道具**筛选并归并稳定外观造型**。给你它名下全部候选状态(每行 <id> | <状态名>)。",
|
|
8
|
-
"目标是得到一小组**互不相同、值得单独出图的外观档位**。",
|
|
9
|
-
"只保留可视**外观造型**(穿什么、发型妆造、形态):",
|
|
10
|
-
"- 保留:整套着装造型(婚服/喜服/常服/黑衣/睡衣/粗布衣裳)、发型、持续性妆造、非人形态/兽化/神化、巨大化、**持续性伤势造型**(满身血污、胸口缠绷带这种跨镜头持续的受伤外观)。",
|
|
11
|
-
"- 删除(绝不列出):情绪与神态(悲痛/冰冷/狂喜/惨白/濒死/身姿挺拔)、姿势与动作(坐轮椅/站立/苏醒/昏迷/睡着/被绑/转身/跪地)、位置情境(门外/在牢内/台上)、镜头、瞬时或过程描述(眼眶发红/满嘴油光/嘴角沾米粒/从X变Y)、纯剧情态。",
|
|
12
|
-
"**大胆合并**:描述同一套外观的不同写法要并成一组(各种“受伤/血污/绷带/刀伤”并成一个受伤造型;同一套衣服的不同细节写法并一组)。只有**真正不同的造型**才分开。宁可少而清,别把近义拆成一堆。",
|
|
13
|
-
"canonical 名只能从输入的状态名里选,挑最能代表该造型的那个。",
|
|
14
|
-
"输出:每个保留的外观组一行 `<canonical名>: id1, id2, ...`(单个也要一行);**没列出的 id 一律删除**。",
|
|
15
|
-
"如果没有任何值得保留的稳定外观,就输出一行 `无`。不要输出别的文字。",
|
|
16
|
-
].join("\n");
|
|
17
|
-
// Each output line is a KEPT durable-state group (canonical + ≥1 member id).
|
|
18
|
-
// Ids not present in any group are dropped by the caller.
|
|
19
|
-
export function parseStateGroups(raw, validIds) {
|
|
20
|
-
const groups = [];
|
|
21
|
-
for (const line of raw.split("\n")) {
|
|
22
|
-
const t = line.trim();
|
|
23
|
-
if (t === "" || t === "无" || t.startsWith("#"))
|
|
24
|
-
continue;
|
|
25
|
-
const m = /^(.+?)\s*[::]\s*(.+)$/.exec(t);
|
|
26
|
-
if (!m)
|
|
27
|
-
continue;
|
|
28
|
-
const ids = [...new Set(m[2].split(/[,,、]/).map((s) => s.trim()).filter((s) => validIds.has(s)))];
|
|
29
|
-
if (ids.length >= 1)
|
|
30
|
-
groups.push({ canonical: m[1].trim(), state_ids: ids });
|
|
31
|
-
}
|
|
32
|
-
return groups;
|
|
33
|
-
}
|
|
34
|
-
export async function runStateReconcile(executor, states, signal) {
|
|
35
|
-
if (states.length < 1)
|
|
36
|
-
return [];
|
|
37
|
-
const text = await generateOptional(executor, "ingest.state-reconcile", {
|
|
38
|
-
system: STATE_RECONCILE_SYSTEM,
|
|
39
|
-
user: states.map((s) => `${s.id} | ${s.name}`).join("\n"),
|
|
40
|
-
...(signal ? { signal } : {}),
|
|
41
|
-
});
|
|
42
|
-
return parseStateGroups(text, new Set(states.map((s) => s.id)));
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=state-reconcile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-reconcile.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/state-reconcile.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,qEAAqE;AAIrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,4DAA4D;IAC5D,+BAA+B;IAC/B,6BAA6B;IAC7B,+FAA+F;IAC/F,8HAA8H;IAC9H,sGAAsG;IACtG,qCAAqC;IACrC,uEAAuE;IACvE,qCAAqC;CACtC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,6EAA6E;AAC7E,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,QAAqB;IACjE,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzD,MAAM,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAyB,EAAE,MAA2C,EAAE,MAAoB;IAClI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE;QACtE,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Chunk } from "../../../domain/ingest/chunker.js";
|
|
2
|
-
import type { IngestRecord } from "../../../domain/ingest/records.js";
|
|
3
|
-
import type { LlmTaskExecutor } from "../../types.js";
|
|
4
|
-
export declare const TEXT_NORMALIZE_SYSTEM: string;
|
|
5
|
-
export declare function buildNormalizeUser(chunk: Chunk): string;
|
|
6
|
-
export declare function parseNormalizeOutput(input: unknown, chunk: Chunk): IngestRecord[];
|
|
7
|
-
export declare function runTextNormalize(executor: LlmTaskExecutor, chunk: Chunk, signal?: AbortSignal): Promise<{
|
|
8
|
-
raw: string;
|
|
9
|
-
records: IngestRecord[];
|
|
10
|
-
}>;
|