@lingjingai/scriptctl 0.62.3 → 0.62.5
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/changes/0.62.4.md +5 -0
- package/changes/0.62.5.md +5 -0
- package/dist/bin.js +8607 -4174
- package/dist/bin.js.map +4 -4
- package/dist/cli/register-authoring.d.ts +4 -0
- package/dist/cli/register-authoring.js +35 -0
- package/dist/cli/register-authoring.js.map +1 -0
- package/dist/cli/register-batch.d.ts +3 -0
- package/dist/cli/register-batch.js +28 -0
- package/dist/cli/register-batch.js.map +1 -0
- package/dist/cli/register-edits.d.ts +4 -0
- package/dist/cli/register-edits.js +234 -0
- package/dist/cli/register-edits.js.map +1 -0
- package/dist/cli/register-query.d.ts +4 -0
- package/dist/cli/register-query.js +95 -0
- package/dist/cli/register-query.js.map +1 -0
- package/dist/cli/register-review.js +1 -0
- package/dist/cli/register-review.js.map +1 -1
- package/dist/cli/register-script.js +39 -22
- package/dist/cli/register-script.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/infra/llm/doubao-video-model.js +2 -2
- package/dist/infra/llm/doubao-video-model.js.map +1 -1
- package/dist/output.js +3 -5
- package/dist/output.js.map +1 -1
- package/dist/review-agent.js +11 -90
- package/dist/review-agent.js.map +4 -4
- package/dist/usecases/script/compose-creative-draft.js +1 -1
- package/dist/usecases/script/compose-creative-draft.js.map +1 -1
- package/dist/usecases/script/review.js +1 -0
- package/dist/usecases/script/review.js.map +1 -1
- package/dist/usecases/script/write-authoring.js +1 -1
- package/dist/usecases/script/write-authoring.js.map +1 -1
- package/package.json +15 -15
- package/skills/scriptctl/SKILL.md +17 -12
- package/skills/scriptctl/references/ingest-workflow.md +2 -2
- package/changes/0.62.1.md +0 -15
- package/changes/0.62.2.md +0 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { commandComposeCreativeDraft } from "../usecases/script/compose-creative-draft.js";
|
|
2
|
+
import { commandExportAuthoring } from "../usecases/script/export-authoring.js";
|
|
3
|
+
import { commandWriteAuthoring } from "../usecases/script/write-authoring.js";
|
|
4
|
+
import { describeArguments, dispatch, withScriptOpts } from "./registry.js";
|
|
5
|
+
/** Structured transactions for application compilers; prose editing uses read/write. */
|
|
6
|
+
export function registerAuthoringCommands(program, state) {
|
|
7
|
+
const authoring = program.command("authoring")
|
|
8
|
+
.description("Structured screenplay compilation and atomic application transactions");
|
|
9
|
+
const write = withScriptOpts(authoring.command("write <file>"))
|
|
10
|
+
.description("Plan or apply a complete structured authoring document")
|
|
11
|
+
.option("--create", "Create the selected target")
|
|
12
|
+
.option("--replace", "Replace the selected target")
|
|
13
|
+
.option("--apply", "Apply the exact plan")
|
|
14
|
+
.option("--plan <digest>", "Exact plan digest to apply")
|
|
15
|
+
.action(dispatch(commandWriteAuthoring, state));
|
|
16
|
+
describeArguments(write, ["Structured .scriptctl file"]);
|
|
17
|
+
const compose = withScriptOpts(authoring.command("compose <file>"))
|
|
18
|
+
.description("Compile a readable scene JSON draft with generated identities and timing")
|
|
19
|
+
.option("--apply", "Apply the exact plan")
|
|
20
|
+
.option("--plan <digest>", "Exact plan digest to apply")
|
|
21
|
+
.action(dispatch(commandComposeCreativeDraft, state));
|
|
22
|
+
describeArguments(compose, ["Readable scene JSON file"]);
|
|
23
|
+
const exportCommand = authoring.command("export")
|
|
24
|
+
.description("Export complete structured content, including identities and extensions");
|
|
25
|
+
const kinds = ["script", "episodes", "episode-spans", "scenes", "scene-spans", "action-spans"];
|
|
26
|
+
for (const kind of kinds) {
|
|
27
|
+
const command = withScriptOpts(exportCommand.command(kind), "read")
|
|
28
|
+
.description(`Export structured ${kind}`)
|
|
29
|
+
.requiredOption("-o, --output <file>", "Destination .scriptctl file");
|
|
30
|
+
if (kind !== "script")
|
|
31
|
+
command.requiredOption("-i, --in <selector>", "Formal ID or @ep:N selector / inclusive range");
|
|
32
|
+
command.action(dispatch((opts) => commandExportAuthoring(kind, opts), state));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=register-authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-authoring.js","sourceRoot":"","sources":["../../src/cli/register-authoring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAA4B,MAAM,wCAAwC,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,wFAAwF;AACxF,MAAM,UAAU,yBAAyB,CAAC,OAAgB,EAAE,KAAe;IACzE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;SAC3C,WAAW,CAAC,uEAAuE,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC5D,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;SAChD,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,iBAAiB,CAAC,KAAK,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAChE,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC,CAAC;IACxD,iBAAiB,CAAC,OAAO,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC9C,WAAW,CAAC,yEAAyE,CAAC,CAAC;IAC1F,MAAM,KAAK,GAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IACtH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;aAChE,WAAW,CAAC,qBAAqB,IAAI,EAAE,CAAC;aACxC,cAAc,CAAC,qBAAqB,EAAE,6BAA6B,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,+CAA+C,CAAC,CAAC;QACtH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { commandDo } from "../usecases/script/do.js";
|
|
2
|
+
import { commandScriptPatch } from "../usecases/script/script-patch.js";
|
|
3
|
+
import { describeArguments, dispatch, withScriptOpts } from "./registry.js";
|
|
4
|
+
export function registerBatchCommands(program, state) {
|
|
5
|
+
const doCommand = withScriptOpts(program.command("do [file]"))
|
|
6
|
+
.description("Run one CLI edit per line as one transaction")
|
|
7
|
+
.option("--apply", "Apply the planned transaction")
|
|
8
|
+
.option("--plan <digest>", "Exact plan digest to apply")
|
|
9
|
+
.option("-n, --dry-run", "Preview the transaction without writing")
|
|
10
|
+
.addHelpText("after", "\nExample:\n scriptctl do edits.txt\n scriptctl do edits.txt --apply --plan <digest>\n")
|
|
11
|
+
.action(dispatch(commandDo, state));
|
|
12
|
+
describeArguments(doCommand, ["Command file, or stdin when omitted"]);
|
|
13
|
+
const patch = withScriptOpts(program.command("patch [file]"))
|
|
14
|
+
.description("Apply structured JSON patch operations")
|
|
15
|
+
.option("--schema [op]", "Show every operation schema or one named operation")
|
|
16
|
+
.option("-n, --dry-run", "Preview patch operations without writing")
|
|
17
|
+
.option("--apply", "Apply the exact planned patch")
|
|
18
|
+
.option("--plan <digest>", "Exact plan digest to apply")
|
|
19
|
+
.addHelpText("after", "\nExample:\n scriptctl patch --schema\n scriptctl patch changes.json --dry-run\n")
|
|
20
|
+
.action(dispatch((opts) => {
|
|
21
|
+
const args = opts["_args"] || [];
|
|
22
|
+
if (args[0])
|
|
23
|
+
opts["patch"] = args[0];
|
|
24
|
+
return commandScriptPatch(opts);
|
|
25
|
+
}, state));
|
|
26
|
+
describeArguments(patch, ["Patch JSON file"]);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=register-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-batch.js","sourceRoot":"","sources":["../../src/cli/register-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAE3F,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,KAAe;IACrE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAC3D,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC;SAClE,WAAW,CAAC,OAAO,EAAE,0FAA0F,CAAC;SAChH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,iBAAiB,CAAC,SAAS,EAAE,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAEtE,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAC1D,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;SAC7E,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,WAAW,CAAC,OAAO,EAAE,oFAAoF,CAAC;SAC1G,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,IAAI,GAAI,IAAI,CAAC,OAAO,CAAc,IAAI,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACb,iBAAiB,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { commandAddActor } from "../usecases/script/add-actor.js";
|
|
2
|
+
import { commandAddEpisode } from "../usecases/script/add-episode.js";
|
|
3
|
+
import { commandAddLocation } from "../usecases/script/add-location.js";
|
|
4
|
+
import { commandAddProp } from "../usecases/script/add-prop.js";
|
|
5
|
+
import { commandActor } from "../usecases/script/actor.js";
|
|
6
|
+
import { commandAlias } from "../usecases/script/alias.js";
|
|
7
|
+
import { commandContext } from "../usecases/script/context.js";
|
|
8
|
+
import { commandCreate } from "../usecases/script/create.js";
|
|
9
|
+
import { commandDelete } from "../usecases/script/delete.js";
|
|
10
|
+
import { commandDescribe } from "../usecases/script/describe.js";
|
|
11
|
+
import { commandDialogue } from "../usecases/script/dialogue.js";
|
|
12
|
+
import { commandEmotion } from "../usecases/script/emotion.js";
|
|
13
|
+
import { commandExtend } from "../usecases/script/extend.js";
|
|
14
|
+
import { commandImportance } from "../usecases/script/importance.js";
|
|
15
|
+
import { commandInsert } from "../usecases/script/insert.js";
|
|
16
|
+
import { commandMerge } from "../usecases/script/merge.js";
|
|
17
|
+
import { commandMove } from "../usecases/script/move.js";
|
|
18
|
+
import { commandParenthetical } from "../usecases/script/parenthetical.js";
|
|
19
|
+
import { commandRename } from "../usecases/script/rename.js";
|
|
20
|
+
import { commandReplace } from "../usecases/script/replace.js";
|
|
21
|
+
import { commandRole } from "../usecases/script/role.js";
|
|
22
|
+
import { commandSplit } from "../usecases/script/split.js";
|
|
23
|
+
import { commandStateAdd } from "../usecases/script/state-add.js";
|
|
24
|
+
import { commandStateDelete } from "../usecases/script/state-delete.js";
|
|
25
|
+
import { commandStateRename } from "../usecases/script/state-rename.js";
|
|
26
|
+
import { commandSynopsis } from "../usecases/script/synopsis.js";
|
|
27
|
+
import { commandSynopsisGenerate } from "../usecases/script/synopsis-generate.js";
|
|
28
|
+
import { commandTimestamp } from "../usecases/script/timestamp.js";
|
|
29
|
+
import { commandTransition } from "../usecases/script/transition.js";
|
|
30
|
+
import { commandType } from "../usecases/script/type.js";
|
|
31
|
+
import { commandWorldview } from "../usecases/script/worldview.js";
|
|
32
|
+
import { appendString, describeArguments, dispatch, withScriptOpts, withSelection, } from "./registry.js";
|
|
33
|
+
export function registerEditCommands(program, state, llm) {
|
|
34
|
+
withScriptOpts(program.command("create"))
|
|
35
|
+
.description("Create an empty script")
|
|
36
|
+
.option("--title <title>", "Script title")
|
|
37
|
+
.option("--force", "Replace an existing script file")
|
|
38
|
+
.action(dispatch(commandCreate, state));
|
|
39
|
+
const addActor = withScriptOpts(program.command("add-actor <name>"))
|
|
40
|
+
.description("Add an actor")
|
|
41
|
+
.option("--id <id>", "Actor ID")
|
|
42
|
+
.option("--role <role>", "Actor role")
|
|
43
|
+
.option("--description <text>", "Actor description")
|
|
44
|
+
.option("--alias <alias>", "Actor alias; repeatable", appendString, [])
|
|
45
|
+
.action(dispatch(commandAddActor, state));
|
|
46
|
+
describeArguments(addActor, ["Actor name"]);
|
|
47
|
+
const addLocation = withScriptOpts(program.command("add-location <name>"))
|
|
48
|
+
.description("Add a location")
|
|
49
|
+
.option("--id <id>", "Location ID")
|
|
50
|
+
.option("--description <text>", "Location description")
|
|
51
|
+
.action(dispatch(commandAddLocation, state));
|
|
52
|
+
describeArguments(addLocation, ["Location name"]);
|
|
53
|
+
const addProp = withScriptOpts(program.command("add-prop <name>"))
|
|
54
|
+
.description("Add a prop")
|
|
55
|
+
.option("--id <id>", "Prop ID")
|
|
56
|
+
.option("--description <text>", "Prop description")
|
|
57
|
+
.action(dispatch(commandAddProp, state));
|
|
58
|
+
describeArguments(addProp, ["Prop name"]);
|
|
59
|
+
withScriptOpts(program.command("add-episode"))
|
|
60
|
+
.description("Append an episode")
|
|
61
|
+
.option("--id <id>", "Episode ID")
|
|
62
|
+
.option("--title <title>", "Episode title")
|
|
63
|
+
.action(dispatch(commandAddEpisode, state));
|
|
64
|
+
const replace = withSelection(withScriptOpts(program.command("replace [at]")))
|
|
65
|
+
.description("Replace action text at one address or across a selection")
|
|
66
|
+
.requiredOption("--from <text>", "Text or pattern to replace")
|
|
67
|
+
.option("--to <text>", "Replacement text", "")
|
|
68
|
+
.option("--all", "Replace every occurrence")
|
|
69
|
+
.option("--regex", "Treat --from as a regular expression")
|
|
70
|
+
.addHelpText("after", "\nExample:\n scriptctl replace --in ep_001 -g \"old\" --from old --to new\n")
|
|
71
|
+
.action(dispatch(commandReplace, state));
|
|
72
|
+
describeArguments(replace, ["Single action address"]);
|
|
73
|
+
const type = withSelection(withScriptOpts(program.command("type [at] [type]")))
|
|
74
|
+
.description("Set action type at one address or across a selection")
|
|
75
|
+
.action(dispatch(commandType, state));
|
|
76
|
+
describeArguments(type, ["Single action address", "New action type"]);
|
|
77
|
+
const actor = withSelection(withScriptOpts(program.command("actor [at] [actor-id]")))
|
|
78
|
+
.description("Set an action actor at one address or across a selection")
|
|
79
|
+
.action(dispatch(commandActor, state));
|
|
80
|
+
describeArguments(actor, ["Single action address", "Actor ID"]);
|
|
81
|
+
const emotion = withSelection(withScriptOpts(program.command("emotion [at] [emotion]")))
|
|
82
|
+
.description("Set or clear action emotion")
|
|
83
|
+
.option("--clear", "Clear the emotion")
|
|
84
|
+
.action(dispatch(commandEmotion, state));
|
|
85
|
+
describeArguments(emotion, ["Single action address", "Emotion value"]);
|
|
86
|
+
const parenthetical = withSelection(withScriptOpts(program.command("parenthetical [at]")))
|
|
87
|
+
.description("Set or remove a dialogue parenthetical")
|
|
88
|
+
.option("--set <text>", "Parenthetical text")
|
|
89
|
+
.option("--remove", "Remove the parenthetical")
|
|
90
|
+
.action(dispatch(commandParenthetical, state));
|
|
91
|
+
describeArguments(parenthetical, ["Single action address"]);
|
|
92
|
+
const timestamp = withScriptOpts(program.command("timestamp <at>"))
|
|
93
|
+
.description("Set or remove an action timestamp")
|
|
94
|
+
.option("--set <time>", "Episode-local action start time")
|
|
95
|
+
.option("--remove", "Remove the timestamp")
|
|
96
|
+
.addHelpText("after", "\nExample:\n scriptctl timestamp acR8cV4n --set 00:42.533\n")
|
|
97
|
+
.action(dispatch(commandTimestamp, state));
|
|
98
|
+
describeArguments(timestamp, ["V3 action address or V4 Action ID"]);
|
|
99
|
+
const insert = withScriptOpts(program.command("insert <addr>"))
|
|
100
|
+
.description("Insert an action into a scene or a scene into an episode")
|
|
101
|
+
.option("-t, --type <type>", "Action type")
|
|
102
|
+
.option("--content <text>", "Action content")
|
|
103
|
+
.option("--emotion <emotion>", "Dialogue emotion")
|
|
104
|
+
.option("--parenthetical <text>", "Dialogue parenthetical")
|
|
105
|
+
.option("--action-id <id>", "Action ID")
|
|
106
|
+
.option("--at <idx>", "Numeric insertion position")
|
|
107
|
+
.option("--before <addr>", "Insert before this sibling")
|
|
108
|
+
.option("--after <addr>", "Insert after this sibling")
|
|
109
|
+
.option("-a, --actor <id>", "Actor ID")
|
|
110
|
+
.option("--speaker-state <id>", "Actor state ID")
|
|
111
|
+
.option("-k, --kind <kind>", "Non-actor speaker kind")
|
|
112
|
+
.option("--label <text>", "Non-actor speaker label")
|
|
113
|
+
.option("--location <id>", "Scene location ID")
|
|
114
|
+
.option("--time <time>", "Scene time")
|
|
115
|
+
.option("--space <space>", "Scene space")
|
|
116
|
+
.option("--scene-id <id>", "Scene ID")
|
|
117
|
+
.option("--state <id>", "Asset state ID; repeatable", appendString, [])
|
|
118
|
+
.action(dispatch(commandInsert, state));
|
|
119
|
+
describeArguments(insert, ["Episode or scene address"]);
|
|
120
|
+
const deleteCommand = withScriptOpts(program.command("delete <addr>"))
|
|
121
|
+
.description("Delete an action, scene, asset, state, or speaker")
|
|
122
|
+
.option("--strategy <strategy>", "Reference handling strategy")
|
|
123
|
+
.option("--replacement <addr>", "Replacement address for references")
|
|
124
|
+
.option("--force", "Allow guarded destructive deletion")
|
|
125
|
+
.action(dispatch(commandDelete, state));
|
|
126
|
+
describeArguments(deleteCommand, ["Address to delete"]);
|
|
127
|
+
const move = withScriptOpts(program.command("move <addr> <to>"))
|
|
128
|
+
.description("Move an action across scenes or a scene across episodes")
|
|
129
|
+
.option("--at <idx>", "Numeric destination position")
|
|
130
|
+
.option("--before <id>", "Place before this sibling ID")
|
|
131
|
+
.option("--after <id>", "Place after this sibling ID")
|
|
132
|
+
.action(dispatch(commandMove, state));
|
|
133
|
+
describeArguments(move, ["Action or scene address", "Destination scene or episode address"]);
|
|
134
|
+
const split = withScriptOpts(program.command("split <ep/scn>"))
|
|
135
|
+
.description("Split a scene")
|
|
136
|
+
.requiredOption("--at <index-or-action-id>", "Split position")
|
|
137
|
+
.option("--new-scene-id <id>", "ID for the new scene")
|
|
138
|
+
.action(dispatch(commandSplit, state));
|
|
139
|
+
describeArguments(split, ["Scene address"]);
|
|
140
|
+
const merge = withScriptOpts(program.command("merge <src>"))
|
|
141
|
+
.description("Merge one asset or scene into another")
|
|
142
|
+
.requiredOption("--into <dst>", "Destination asset or scene address")
|
|
143
|
+
.action(dispatch(commandMerge, state));
|
|
144
|
+
describeArguments(merge, ["Source asset or scene address"]);
|
|
145
|
+
const transition = withSelection(withScriptOpts(program.command("transition [at] [target]")))
|
|
146
|
+
.description("Set or clear an action transition")
|
|
147
|
+
.option("--process <text>", "Transition process")
|
|
148
|
+
.option("--contrast <text>", "Transition contrast")
|
|
149
|
+
.option("--clear", "Clear the transition")
|
|
150
|
+
.action(dispatch(commandTransition, state));
|
|
151
|
+
describeArguments(transition, ["Single action address", "Transition target"]);
|
|
152
|
+
const sceneRef = withScriptOpts(program.command("scene-ref <at> <target>"))
|
|
153
|
+
.description("Set or remove an asset reference in a scene")
|
|
154
|
+
.option("--state <id>", "Target state ID; repeatable", appendString, [])
|
|
155
|
+
.option("--clear", "Clear the matching v3 reference state")
|
|
156
|
+
.option("--remove", "Remove the matching reference")
|
|
157
|
+
.option("--append", "Append instead of replacing")
|
|
158
|
+
.option("--occurrence <n>", "Target occurrence number")
|
|
159
|
+
.addHelpText("after", "\nExample:\n scriptctl scene-ref ep_001/scn_001 actor:act_001 --state st_calm\n")
|
|
160
|
+
.action(dispatch(commandContext, state));
|
|
161
|
+
describeArguments(sceneRef, ["Scene address", "Referenced asset address"]);
|
|
162
|
+
const rename = withScriptOpts(program.command("rename <target> <name>"))
|
|
163
|
+
.description("Rename an asset or state")
|
|
164
|
+
.action(dispatch(commandRename, state));
|
|
165
|
+
describeArguments(rename, ["Asset or state address", "New name"]);
|
|
166
|
+
const describe = withScriptOpts(program.command("describe <target> <text>"))
|
|
167
|
+
.description("Set an asset or state description")
|
|
168
|
+
.action(dispatch(commandDescribe, state));
|
|
169
|
+
describeArguments(describe, ["Asset or state address", "Description"]);
|
|
170
|
+
const alias = withScriptOpts(program.command("alias <target>"))
|
|
171
|
+
.description("Add or remove asset aliases")
|
|
172
|
+
.option("--add <alias>", "Alias to add; repeatable", appendString, [])
|
|
173
|
+
.option("--remove <alias>", "Alias to remove; repeatable", appendString, [])
|
|
174
|
+
.action(dispatch(commandAlias, state));
|
|
175
|
+
describeArguments(alias, ["Asset address"]);
|
|
176
|
+
for (const [name, description, handler, second] of [
|
|
177
|
+
["role", "Set an actor role", commandRole, "Role"],
|
|
178
|
+
["importance", "Set asset importance", commandImportance, "Importance"],
|
|
179
|
+
]) {
|
|
180
|
+
const command = withScriptOpts(program.command(`${name} <target> <value>`))
|
|
181
|
+
.description(description)
|
|
182
|
+
.action(dispatch(handler, state));
|
|
183
|
+
describeArguments(command, ["Asset address", second]);
|
|
184
|
+
}
|
|
185
|
+
const worldview = withScriptOpts(program.command("worldview <value>"))
|
|
186
|
+
.description("Set the script worldview")
|
|
187
|
+
.action(dispatch(commandWorldview, state));
|
|
188
|
+
describeArguments(worldview, ["Worldview value"]);
|
|
189
|
+
const synopsis = withScriptOpts(program.command("synopsis [target-or-text] [text]"))
|
|
190
|
+
.description("Set script or episode synopsis text")
|
|
191
|
+
.action(dispatch(commandSynopsis, state));
|
|
192
|
+
describeArguments(synopsis, ["Episode address or script synopsis", "Episode synopsis text"]);
|
|
193
|
+
withScriptOpts(synopsis.command("generate"))
|
|
194
|
+
.description("Generate synopsis fields with an LLM")
|
|
195
|
+
.option("--llm-config <path>", "LLM configuration file")
|
|
196
|
+
.option("--concurrency <n>", "Maximum concurrent model calls", "30")
|
|
197
|
+
.option("--checkpoint <dir>", "Checkpoint directory")
|
|
198
|
+
.option("--overwrite", "Regenerate existing synopsis fields")
|
|
199
|
+
.option("--apply", "Write generated fields")
|
|
200
|
+
.option("-n, --dry-run", "Generate a preview without writing")
|
|
201
|
+
.action(dispatch((options) => commandSynopsisGenerate(options, llm), state));
|
|
202
|
+
const extend = withScriptOpts(program.command("extend <addr> [key] [value]"))
|
|
203
|
+
.description("Read, set, or clear extension data")
|
|
204
|
+
.option("--json-value", "Parse the value as JSON")
|
|
205
|
+
.option("--clear", "Delete the key or extension container")
|
|
206
|
+
.action(dispatch(commandExtend, state));
|
|
207
|
+
describeArguments(extend, ["Target address", "Extension key", "Extension value"]);
|
|
208
|
+
const stateAdd = withScriptOpts(program.command("state-add <target> <name>"))
|
|
209
|
+
.description("Add an asset state")
|
|
210
|
+
.option("--description <text>", "State description", "")
|
|
211
|
+
.option("--state-id <id>", "State ID")
|
|
212
|
+
.action(dispatch(commandStateAdd, state));
|
|
213
|
+
describeArguments(stateAdd, ["Asset address", "State name"]);
|
|
214
|
+
const stateRename = withScriptOpts(program.command("state-rename <target> <name>"))
|
|
215
|
+
.description("Rename an asset state")
|
|
216
|
+
.action(dispatch(commandStateRename, state));
|
|
217
|
+
describeArguments(stateRename, ["State address", "New name"]);
|
|
218
|
+
const stateDelete = withScriptOpts(program.command("state-delete <target>"))
|
|
219
|
+
.description("Delete an asset state")
|
|
220
|
+
.requiredOption("--strategy <strategy>", "Reference handling strategy")
|
|
221
|
+
.option("--replacement <id>", "Replacement state ID")
|
|
222
|
+
.action(dispatch(commandStateDelete, state));
|
|
223
|
+
describeArguments(stateDelete, ["State address"]);
|
|
224
|
+
const dialogue = withScriptOpts(program.command("dialogue <at>"))
|
|
225
|
+
.description("Set the speaker for dialogue or inner thought")
|
|
226
|
+
.option("-a, --actor <id>", "Actor speaker ID")
|
|
227
|
+
.option("--state <id>", "Actor state ID")
|
|
228
|
+
.option("-k, --kind <kind>", "Non-actor speaker kind")
|
|
229
|
+
.option("--label <text>", "Non-actor speaker label")
|
|
230
|
+
.addHelpText("after", "\nExample:\n scriptctl dialogue ep_001/scn_001#3 --actor act_001\n")
|
|
231
|
+
.action(dispatch(commandDialogue, state));
|
|
232
|
+
describeArguments(dialogue, ["Dialogue action address"]);
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=register-edits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-edits.js","sourceRoot":"","sources":["../../src/cli/register-edits.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { commandActions } from "../usecases/script/actions.js";
|
|
2
|
+
import { commandActors } from "../usecases/script/actors.js";
|
|
3
|
+
import { commandAssets } from "../usecases/script/assets.js";
|
|
4
|
+
import { commandAuditAssets } from "../usecases/script/audit-assets.js";
|
|
5
|
+
import { commandEpisodes } from "../usecases/script/episodes.js";
|
|
6
|
+
import { commandIds } from "../usecases/script/ids.js";
|
|
7
|
+
import { commandIssues } from "../usecases/script/issues.js";
|
|
8
|
+
import { commandLocations } from "../usecases/script/locations.js";
|
|
9
|
+
import { commandProps } from "../usecases/script/props.js";
|
|
10
|
+
import { commandRefs } from "../usecases/script/refs.js";
|
|
11
|
+
import { commandScenes } from "../usecases/script/scenes.js";
|
|
12
|
+
import { commandScriptValidate } from "../usecases/script/script-validate.js";
|
|
13
|
+
import { commandStates } from "../usecases/script/states.js";
|
|
14
|
+
import { commandSummary } from "../usecases/script/summary.js";
|
|
15
|
+
import { describeArguments, dispatch, withScriptOpts } from "./registry.js";
|
|
16
|
+
export function registerQueryCommands(program, state, llm) {
|
|
17
|
+
withScriptOpts(program.command("summary"), "read")
|
|
18
|
+
.description("Show a compact script summary")
|
|
19
|
+
.action(dispatch(commandSummary, state));
|
|
20
|
+
withScriptOpts(program.command("episodes"), "read")
|
|
21
|
+
.description("List episodes")
|
|
22
|
+
.option("--id <id>", "Filter by episode ID")
|
|
23
|
+
.option("-i, --in <addr>", "Limit results to an address")
|
|
24
|
+
.option("--min-chars <n>", "Minimum episode character count")
|
|
25
|
+
.option("--max-chars <n>", "Maximum episode character count")
|
|
26
|
+
.action(dispatch(commandEpisodes, state));
|
|
27
|
+
withScriptOpts(program.command("scenes"), "read")
|
|
28
|
+
.description("List scenes")
|
|
29
|
+
.option("-i, --in <addr>", "Limit results to an address")
|
|
30
|
+
.option("--has-actor <id>", "Require an actor reference")
|
|
31
|
+
.option("--has-location <id>", "Require a location reference")
|
|
32
|
+
.option("--has-prop <id>", "Require a prop reference")
|
|
33
|
+
.action(dispatch(commandScenes, state));
|
|
34
|
+
withScriptOpts(program.command("actions"), "read")
|
|
35
|
+
.description("List actions")
|
|
36
|
+
.option("-i, --in <addr>", "Limit results to an address or range")
|
|
37
|
+
.option("-g, --grep <text>", "Match action text")
|
|
38
|
+
.option("-t, --type <type>", "Filter by action type")
|
|
39
|
+
.option("-a, --actor <id>", "Filter by actor ID")
|
|
40
|
+
.option("--has <kind>", "Require a populated action facet")
|
|
41
|
+
.option("--time <time-or-range>", "Match an episode-local timestamp or closed range")
|
|
42
|
+
.option("--context <n>", "Include surrounding actions")
|
|
43
|
+
.option("--span", "Collapse selected Actions to one episode-local timestamp span")
|
|
44
|
+
.addHelpText("after", "\nExamples:\n scriptctl actions --in ep_001/scn_001 --grep \"door\"\n scriptctl actions --in @ep:1 --time 00:30..00:45\n scriptctl actions --in 'acStart..acEnd' --span\n")
|
|
45
|
+
.action(dispatch(commandActions, state));
|
|
46
|
+
for (const [name, description, handler] of [
|
|
47
|
+
["actors", "List actors", commandActors],
|
|
48
|
+
["locations", "List locations", commandLocations],
|
|
49
|
+
["props", "List props", commandProps],
|
|
50
|
+
]) {
|
|
51
|
+
withScriptOpts(program.command(name), "read")
|
|
52
|
+
.description(description)
|
|
53
|
+
.option("--id <id>", `Filter ${name} by ID`)
|
|
54
|
+
.option("--name <text>", `Filter ${name} by name`)
|
|
55
|
+
.option("-i, --in <addr>", "Limit results to an address")
|
|
56
|
+
.option("--counts", "Include reference counts")
|
|
57
|
+
.action(dispatch(handler, state));
|
|
58
|
+
}
|
|
59
|
+
withScriptOpts(program.command("assets"), "read")
|
|
60
|
+
.description("List actors, locations, and props")
|
|
61
|
+
.option("-k, --kind <kind>", "Filter by asset kind")
|
|
62
|
+
.option("--id <id>", "Filter by asset ID")
|
|
63
|
+
.option("--name <text>", "Filter by asset name")
|
|
64
|
+
.option("-i, --in <addr>", "Limit results to an address")
|
|
65
|
+
.option("--counts", "Include reference counts")
|
|
66
|
+
.action(dispatch(commandAssets, state));
|
|
67
|
+
const states = withScriptOpts(program.command("states <asset-addr>"), "read")
|
|
68
|
+
.description("List states for an asset")
|
|
69
|
+
.action(dispatch(commandStates, state));
|
|
70
|
+
describeArguments(states, ["Actor, location, or prop address"]);
|
|
71
|
+
withScriptOpts(program.command("issues"), "read")
|
|
72
|
+
.description("List validation issues")
|
|
73
|
+
.option("--severity <severity>", "Filter by severity")
|
|
74
|
+
.option("--code <code>", "Filter by issue code")
|
|
75
|
+
.action(dispatch(commandIssues, state));
|
|
76
|
+
const refs = withScriptOpts(program.command("refs <addr>"), "read")
|
|
77
|
+
.description("List references to an address")
|
|
78
|
+
.option("--level <level>", "Reference detail level")
|
|
79
|
+
.action(dispatch(commandRefs, state));
|
|
80
|
+
describeArguments(refs, ["Address to inspect"]);
|
|
81
|
+
withScriptOpts(program.command("validate"), "read")
|
|
82
|
+
.description("Validate the script")
|
|
83
|
+
.action(dispatch(commandScriptValidate, state));
|
|
84
|
+
withScriptOpts(program.command("audit-assets"), "read")
|
|
85
|
+
.description("Audit asset consistency with an LLM")
|
|
86
|
+
.option("--llm-config <path>", "LLM configuration file")
|
|
87
|
+
.option("-o, --output <path>", "Audit JSON output file")
|
|
88
|
+
.action(dispatch((options) => commandAuditAssets(options, llm), state));
|
|
89
|
+
withScriptOpts(program.command("ids"), "read")
|
|
90
|
+
.description("Generate unreserved candidate IDs")
|
|
91
|
+
.requiredOption("-k, --kind <kind>", "ID kind")
|
|
92
|
+
.requiredOption("--count <n>", "Number of IDs")
|
|
93
|
+
.action(dispatch(commandIds, state));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=register-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-query.js","sourceRoot":"","sources":["../../src/cli/register-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export function registerReviewCommand(program, state) {
|
|
|
10
10
|
.option("--episode-timeout-ms <ms>", "单集超时;到点收尾并保留已记录的结论", Number)
|
|
11
11
|
.option("--max-steps <n>", "单集最多几步工具调用", Number)
|
|
12
12
|
.option("--media-budget <n>", "单集最多几次视频核对", Number)
|
|
13
|
+
.option("--converge-only", "只执行全剧收敛,不重新审核各集")
|
|
13
14
|
.option("--no-converge", "跳过全剧收敛阶段")
|
|
14
15
|
.option("--model <profile>", "覆盖 LLM profile(默认 review-agent)")
|
|
15
16
|
.option("--llm-config <path>", "LLM configuration file")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-review.js","sourceRoot":"","sources":["../../src/cli/register-review.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,KAAe;IACrE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;SAC/C,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;SACrD,MAAM,CACL,gBAAgB,EAChB,8BAA8B,EAC9B,CAAC,KAAa,EAAE,QAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,EAC3D,EAAc,CACf;SACA,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,YAAY,EAAE,MAAM,CAAC;SAClD,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC;SAC1C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"register-review.js","sourceRoot":"","sources":["../../src/cli/register-review.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAiB,cAAc,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,KAAe;IACrE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;SAC/C,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;SACrD,MAAM,CACL,gBAAgB,EAChB,8BAA8B,EAC9B,CAAC,KAAa,EAAE,QAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,EAC3D,EAAc,CACf;SACA,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,mBAAmB,EAAE,SAAS,EAAE,MAAM,CAAC;SAC9C,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC;SAC/C,MAAM,CAAC,oBAAoB,EAAE,YAAY,EAAE,MAAM,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC5C,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC;SAC1C,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// TSV parsing for every read.
|
|
10
10
|
import * as fs from "node:fs";
|
|
11
11
|
import * as sp from "@lingjingai/screenplay";
|
|
12
|
-
import { CliError, EXIT_INPUT, EXIT_OK } from "../common.js";
|
|
12
|
+
import { CliError, EXIT_INPUT, EXIT_NEEDS_AGENT, EXIT_OK } from "../common.js";
|
|
13
13
|
import { scriptJsonPath } from "../common.js";
|
|
14
14
|
import { dispatch, describeArguments, withScriptOpts } from "./registry.js";
|
|
15
15
|
const ADDR = "地址:集 `3`、场 `3-2`、单条 `3-2-5`、正式 ID、资产名、或 `<资产>/<状态>`";
|
|
@@ -56,9 +56,10 @@ function list(value) {
|
|
|
56
56
|
return [];
|
|
57
57
|
}
|
|
58
58
|
/** SDK errors carry a plain message; map them onto scriptctl's error model. */
|
|
59
|
-
function text(run, op) {
|
|
59
|
+
function text(run, op, data = () => ({})) {
|
|
60
60
|
try {
|
|
61
|
-
|
|
61
|
+
const content = run();
|
|
62
|
+
return [{ text: content, data: { op, changed: false, text: content, ...data() } }, EXIT_OK];
|
|
62
63
|
}
|
|
63
64
|
catch (error) {
|
|
64
65
|
if (error instanceof CliError)
|
|
@@ -76,11 +77,14 @@ export function registerScriptCommands(program, state) {
|
|
|
76
77
|
.option("--outline", "只要场结构,不要正文")
|
|
77
78
|
.option("--context <n>", "单条 action 前后各带几条(默认 3)")
|
|
78
79
|
.option("--plain", "去掉锚点与时间戳(只读,不可回写)")
|
|
79
|
-
.action(dispatch((opts) =>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
.action(dispatch((opts) => {
|
|
81
|
+
const document = doc(opts);
|
|
82
|
+
return text(() => sp.read(document, arg(opts), {
|
|
83
|
+
...(opts["outline"] ? { depth: "outline" } : {}),
|
|
84
|
+
...(opts["plain"] ? { plain: true } : {}),
|
|
85
|
+
...(num(opts, "context") !== undefined ? { context: num(opts, "context") } : {}),
|
|
86
|
+
}), "read", () => arg(opts) ? {} : { document: document.raw });
|
|
87
|
+
}, state));
|
|
84
88
|
describeArguments(read, [ADDR]);
|
|
85
89
|
const scan = withScriptOpts(program.command("scan <episode>"), "read")
|
|
86
90
|
.description("一次返回某集的完整上下文:场结构 + 全部正文 + 当前校验问题")
|
|
@@ -109,25 +113,38 @@ export function registerScriptCommands(program, state) {
|
|
|
109
113
|
...(opts["full"] ? { full: true } : {}),
|
|
110
114
|
}), "find"), state));
|
|
111
115
|
describeArguments(find, ["正则;只按 speaker/type 过滤时可省略"]);
|
|
112
|
-
const refs = withScriptOpts(program.command("refs <addr>"), "read")
|
|
113
|
-
.description("只读定位资产/造型的场景绑定、说话引用和正文提及,返回可 read 的地址及上下文")
|
|
114
|
-
.option("--offset <n>", "从第几条引用继续(从 0 开始)")
|
|
115
|
-
.option("--limit <n>", "本批引用数(默认 20)")
|
|
116
|
-
.option("--context <n>", "正文命中前后各几条 action(默认 3)")
|
|
117
|
-
.action(dispatch((opts) => {
|
|
118
|
-
const result = sp.references(doc(opts), arg(opts), {
|
|
119
|
-
offset: num(opts, "offset"), limit: num(opts, "limit"), context: num(opts, "context"),
|
|
120
|
-
});
|
|
121
|
-
return [{ text: sp.formatReferences(result), data: { op: "refs", changed: false, ...result } }, EXIT_OK];
|
|
122
|
-
}, state));
|
|
123
|
-
describeArguments(refs, ["人物/场景/道具 ID 或名称,或 <资产>/<造型>;正文提及不等于实际出场"]);
|
|
124
116
|
const span = withScriptOpts(program.command("span <range>"), "read")
|
|
125
117
|
.description("把一段 action 换算成集内视频时间窗口(半开区间)")
|
|
126
|
-
.action(dispatch((opts) =>
|
|
118
|
+
.action(dispatch((opts) => {
|
|
119
|
+
const document = doc(opts);
|
|
120
|
+
return text(() => sp.span(document, arg(opts)), "span", () => ({ rows: [sp.spanResult(document, arg(opts))] }));
|
|
121
|
+
}, state));
|
|
127
122
|
describeArguments(span, [`${ADDR},或 \`起ID..止ID\``]);
|
|
128
123
|
withScriptOpts(program.command("validate"), "read")
|
|
129
124
|
.description("跑整本校验")
|
|
130
|
-
.action(dispatch((opts) =>
|
|
125
|
+
.action(dispatch((opts) => {
|
|
126
|
+
const document = doc(opts);
|
|
127
|
+
const report = sp.validateDoc(document);
|
|
128
|
+
return [{
|
|
129
|
+
text: sp.validate(document),
|
|
130
|
+
data: {
|
|
131
|
+
op: "script.validate", changed: false, passed: report.ok,
|
|
132
|
+
script_path: document.path,
|
|
133
|
+
stats: {
|
|
134
|
+
actors: document.assets.filter((asset) => asset.kind === "actor").length,
|
|
135
|
+
locations: document.assets.filter((asset) => asset.kind === "location").length,
|
|
136
|
+
props: document.assets.filter((asset) => asset.kind === "prop").length,
|
|
137
|
+
episodes: document.episodes.length,
|
|
138
|
+
scenes: document.episodes.reduce((count, episode) => count + episode.scenes.length, 0),
|
|
139
|
+
actions: sp.allActions(document).length,
|
|
140
|
+
},
|
|
141
|
+
issues: [
|
|
142
|
+
...report.errors.map((issue) => ({ ...issue, severity: "error" })),
|
|
143
|
+
...report.warnings.map((issue) => ({ ...issue, severity: "warning" })),
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
}, report.ok ? EXIT_OK : EXIT_NEEDS_AGENT];
|
|
147
|
+
}, state));
|
|
131
148
|
withScriptOpts(program.command("issues"), "read")
|
|
132
149
|
.description("列当前校验问题")
|
|
133
150
|
.option("--severity <severity>", "error | warning")
|