@lingjingai/scriptctl 0.50.0 → 0.51.1
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.51.0.md +24 -0
- package/changes/0.51.1.md +15 -0
- package/changes/unreleased.md +1 -2
- 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 +226 -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 +93 -0
- package/dist/cli/register-query.js.map +1 -0
- package/dist/cli/register-tools.d.ts +3 -0
- package/dist/cli/register-tools.js +23 -0
- package/dist/cli/register-tools.js.map +1 -0
- package/dist/cli/register-workflows.d.ts +4 -0
- package/dist/cli/register-workflows.js +71 -0
- package/dist/cli/register-workflows.js.map +1 -0
- package/dist/cli/registry.d.ts +14 -0
- package/dist/cli/registry.js +65 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +146 -596
- package/dist/cli.js.map +1 -1
- package/dist/common.d.ts +12 -38
- package/dist/common.js +5 -11
- package/dist/common.js.map +1 -1
- package/dist/domain/authoring/shared/bracket.js +3 -3
- package/dist/domain/authoring/shared/bracket.js.map +1 -1
- package/dist/domain/authoring/v3/apply.js +3 -3
- package/dist/domain/authoring/v3/apply.js.map +1 -1
- package/dist/domain/authoring/v4/apply.js +6 -6
- package/dist/domain/authoring/v4/apply.js.map +1 -1
- package/dist/domain/authoring/v4/parser.js +2 -2
- package/dist/domain/authoring/v4/parser.js.map +1 -1
- package/dist/domain/authoring/v4/serializer.js +2 -2
- package/dist/domain/authoring/v4/serializer.js.map +1 -1
- package/dist/domain/ingest/assembler.d.ts +1 -0
- package/dist/domain/ingest/assembler.js +8 -2
- package/dist/domain/ingest/assembler.js.map +1 -1
- package/dist/domain/ingest/video-apply.js +6 -3
- package/dist/domain/ingest/video-apply.js.map +1 -1
- package/dist/domain/ingest/video-context.js +2 -2
- package/dist/domain/ingest/video-context.js.map +1 -1
- package/dist/domain/ingest/video-records.d.ts +6 -5
- package/dist/domain/ingest/video-serial-md.d.ts +6 -5
- package/dist/domain/ingest/video-serial-md.js +11 -4
- package/dist/domain/ingest/video-serial-md.js.map +1 -1
- package/dist/domain/script/dispatch.js +5 -7
- package/dist/domain/script/dispatch.js.map +1 -1
- package/dist/domain/script/shared.js +4 -6
- package/dist/domain/script/shared.js.map +1 -1
- package/dist/domain/script/v3/address.js +29 -38
- package/dist/domain/script/v3/address.js.map +1 -1
- package/dist/domain/script/v3/lookups.js +31 -32
- package/dist/domain/script/v3/lookups.js.map +1 -1
- package/dist/domain/script/v3/ordinal.js +4 -5
- package/dist/domain/script/v3/ordinal.js.map +1 -1
- package/dist/domain/script/v3/parse.js +3 -4
- package/dist/domain/script/v3/parse.js.map +1 -1
- package/dist/domain/script/v3/patch/helpers.js +6 -8
- package/dist/domain/script/v3/patch/helpers.js.map +1 -1
- package/dist/domain/script/v3/selector.js +6 -8
- package/dist/domain/script/v3/selector.js.map +1 -1
- package/dist/domain/script/v4/address.js +2 -3
- package/dist/domain/script/v4/address.js.map +1 -1
- package/dist/domain/script/v4/ids.js +6 -7
- package/dist/domain/script/v4/ids.js.map +1 -1
- package/dist/domain/script/v4/ordinal.js +4 -5
- package/dist/domain/script/v4/ordinal.js.map +1 -1
- package/dist/domain/script/v4/parse.js +3 -4
- package/dist/domain/script/v4/parse.js.map +1 -1
- package/dist/domain/script/v4/patch/apply.js +3 -3
- package/dist/domain/script/v4/patch/apply.js.map +1 -1
- package/dist/domain/script/v4/patch/helpers.js +3 -4
- package/dist/domain/script/v4/patch/helpers.js.map +1 -1
- package/dist/domain/script/v4/patch/ops-action.js +46 -49
- package/dist/domain/script/v4/patch/ops-action.js.map +1 -1
- package/dist/domain/script/v4/selector.js +2 -3
- package/dist/domain/script/v4/selector.js.map +1 -1
- package/dist/infra/ingest/video-discovery.js +7 -4
- package/dist/infra/ingest/video-discovery.js.map +1 -1
- package/dist/infra/script-output-store.js +6 -11
- package/dist/infra/script-output-store.js.map +1 -1
- package/dist/infra/script-working-copy.js +15 -16
- package/dist/infra/script-working-copy.js.map +1 -1
- package/dist/llm/config.js +3 -4
- package/dist/llm/config.js.map +1 -1
- package/dist/llm/router.js +6 -8
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/tasks/ingest/text-normalize.js +3 -3
- package/dist/llm/tasks/ingest/text-normalize.js.map +1 -1
- package/dist/llm/tasks/ingest/video-serial.js +29 -22
- package/dist/llm/tasks/ingest/video-serial.js.map +1 -1
- package/dist/llm/tasks/schemas.js +5 -5
- package/dist/llm/tasks/schemas.js.map +1 -1
- package/dist/output.d.ts +2 -3
- package/dist/output.js +72 -109
- package/dist/output.js.map +1 -1
- package/dist/usecases/changelog.d.ts +2 -2
- package/dist/usecases/changelog.js +28 -36
- package/dist/usecases/changelog.js.map +1 -1
- package/dist/usecases/doctor.d.ts +2 -2
- package/dist/usecases/doctor.js +3 -5
- package/dist/usecases/doctor.js.map +1 -1
- package/dist/usecases/ingest/command.d.ts +2 -2
- package/dist/usecases/ingest/command.js +22 -5
- package/dist/usecases/ingest/command.js.map +1 -1
- package/dist/usecases/ingest/pass5-extract.js +5 -4
- package/dist/usecases/ingest/pass5-extract.js.map +1 -1
- package/dist/usecases/ingest/pass5-govern.js +13 -11
- package/dist/usecases/ingest/pass5-govern.js.map +1 -1
- package/dist/usecases/ingest/pipeline.js +19 -16
- package/dist/usecases/ingest/pipeline.js.map +1 -1
- package/dist/usecases/ingest/serial-govern.js +5 -4
- package/dist/usecases/ingest/serial-govern.js.map +1 -1
- package/dist/usecases/ingest/status.d.ts +2 -2
- package/dist/usecases/ingest/status.js +1 -1
- package/dist/usecases/ingest/status.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.js +23 -17
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/dist/usecases/ingest/view-command.d.ts +2 -2
- package/dist/usecases/ingest/view-command.js +7 -6
- package/dist/usecases/ingest/view-command.js.map +1 -1
- package/dist/usecases/ingest/view-server.d.ts +2 -2
- package/dist/usecases/ingest/view-server.js +7 -5
- package/dist/usecases/ingest/view-server.js.map +1 -1
- package/dist/usecases/script/actions.d.ts +2 -2
- package/dist/usecases/script/actions.js +12 -13
- package/dist/usecases/script/actions.js.map +1 -1
- package/dist/usecases/script/actor.d.ts +2 -2
- package/dist/usecases/script/actor.js +3 -4
- package/dist/usecases/script/actor.js.map +1 -1
- package/dist/usecases/script/actors.d.ts +2 -2
- package/dist/usecases/script/actors.js +5 -5
- package/dist/usecases/script/actors.js.map +1 -1
- package/dist/usecases/script/add-actor.d.ts +2 -2
- package/dist/usecases/script/add-episode.d.ts +2 -2
- package/dist/usecases/script/add-location.d.ts +2 -2
- package/dist/usecases/script/add-prop.d.ts +2 -2
- package/dist/usecases/script/alias.d.ts +2 -2
- package/dist/usecases/script/alias.js +6 -8
- package/dist/usecases/script/alias.js.map +1 -1
- package/dist/usecases/script/assets.d.ts +2 -2
- package/dist/usecases/script/assets.js +15 -7
- package/dist/usecases/script/assets.js.map +1 -1
- package/dist/usecases/script/audit-assets.d.ts +2 -2
- package/dist/usecases/script/audit-assets.js +12 -15
- package/dist/usecases/script/audit-assets.js.map +1 -1
- package/dist/usecases/script/command-constraints.js +17 -18
- package/dist/usecases/script/command-constraints.js.map +1 -1
- package/dist/usecases/script/context.d.ts +2 -2
- package/dist/usecases/script/context.js +3 -4
- package/dist/usecases/script/context.js.map +1 -1
- package/dist/usecases/script/create.d.ts +2 -2
- package/dist/usecases/script/create.js +3 -4
- package/dist/usecases/script/create.js.map +1 -1
- package/dist/usecases/script/delete.d.ts +2 -2
- package/dist/usecases/script/delete.js +9 -12
- package/dist/usecases/script/delete.js.map +1 -1
- package/dist/usecases/script/describe.d.ts +2 -2
- package/dist/usecases/script/describe.js +6 -8
- package/dist/usecases/script/describe.js.map +1 -1
- package/dist/usecases/script/dialogue.d.ts +2 -2
- package/dist/usecases/script/dialogue.js +5 -6
- package/dist/usecases/script/dialogue.js.map +1 -1
- package/dist/usecases/script/do.d.ts +2 -2
- package/dist/usecases/script/do.js +63 -66
- package/dist/usecases/script/do.js.map +1 -1
- package/dist/usecases/script/emotion.d.ts +2 -2
- package/dist/usecases/script/emotion.js +3 -3
- package/dist/usecases/script/emotion.js.map +1 -1
- package/dist/usecases/script/episodes.d.ts +2 -2
- package/dist/usecases/script/episodes.js +5 -5
- package/dist/usecases/script/episodes.js.map +1 -1
- package/dist/usecases/script/export-authoring.d.ts +2 -2
- package/dist/usecases/script/export-authoring.js +26 -29
- package/dist/usecases/script/export-authoring.js.map +1 -1
- package/dist/usecases/script/extend.d.ts +2 -2
- package/dist/usecases/script/extend.js +22 -18
- package/dist/usecases/script/extend.js.map +1 -1
- package/dist/usecases/script/ids.d.ts +2 -2
- package/dist/usecases/script/ids.js +21 -17
- package/dist/usecases/script/ids.js.map +1 -1
- package/dist/usecases/script/importance.d.ts +2 -2
- package/dist/usecases/script/importance.js +3 -4
- package/dist/usecases/script/importance.js.map +1 -1
- package/dist/usecases/script/insert.d.ts +2 -2
- package/dist/usecases/script/insert.js +8 -10
- package/dist/usecases/script/insert.js.map +1 -1
- package/dist/usecases/script/issues.d.ts +2 -2
- package/dist/usecases/script/issues.js +10 -2
- package/dist/usecases/script/issues.js.map +1 -1
- package/dist/usecases/script/lib.d.ts +15 -9
- package/dist/usecases/script/lib.js +226 -166
- package/dist/usecases/script/lib.js.map +1 -1
- package/dist/usecases/script/locations.d.ts +2 -2
- package/dist/usecases/script/locations.js +5 -5
- package/dist/usecases/script/locations.js.map +1 -1
- package/dist/usecases/script/merge.d.ts +2 -2
- package/dist/usecases/script/merge.js +9 -12
- package/dist/usecases/script/merge.js.map +1 -1
- package/dist/usecases/script/move.d.ts +2 -2
- package/dist/usecases/script/move.js +6 -8
- package/dist/usecases/script/move.js.map +1 -1
- package/dist/usecases/script/parenthetical.d.ts +2 -2
- package/dist/usecases/script/parenthetical.js +9 -12
- package/dist/usecases/script/parenthetical.js.map +1 -1
- package/dist/usecases/script/props.d.ts +2 -2
- package/dist/usecases/script/props.js +5 -5
- package/dist/usecases/script/props.js.map +1 -1
- package/dist/usecases/script/refs.d.ts +2 -2
- package/dist/usecases/script/refs.js +23 -17
- package/dist/usecases/script/refs.js.map +1 -1
- package/dist/usecases/script/rename.d.ts +2 -2
- package/dist/usecases/script/rename.js +6 -8
- package/dist/usecases/script/rename.js.map +1 -1
- package/dist/usecases/script/replace.d.ts +2 -2
- package/dist/usecases/script/replace.js +6 -8
- package/dist/usecases/script/replace.js.map +1 -1
- package/dist/usecases/script/role.d.ts +2 -2
- package/dist/usecases/script/role.js +3 -4
- package/dist/usecases/script/role.js.map +1 -1
- package/dist/usecases/script/scenes.d.ts +2 -2
- package/dist/usecases/script/scenes.js +7 -5
- package/dist/usecases/script/scenes.js.map +1 -1
- package/dist/usecases/script/script-patch.d.ts +2 -2
- package/dist/usecases/script/script-patch.js +95 -112
- package/dist/usecases/script/script-patch.js.map +1 -1
- package/dist/usecases/script/script-validate.d.ts +2 -2
- package/dist/usecases/script/script-validate.js +11 -7
- package/dist/usecases/script/script-validate.js.map +1 -1
- package/dist/usecases/script/session.js +52 -63
- package/dist/usecases/script/session.js.map +1 -1
- package/dist/usecases/script/split.d.ts +2 -2
- package/dist/usecases/script/split.js +6 -8
- package/dist/usecases/script/split.js.map +1 -1
- package/dist/usecases/script/state-add.d.ts +2 -2
- package/dist/usecases/script/state-add.js +3 -4
- package/dist/usecases/script/state-add.js.map +1 -1
- package/dist/usecases/script/state-delete.d.ts +2 -2
- package/dist/usecases/script/state-delete.js +3 -4
- package/dist/usecases/script/state-delete.js.map +1 -1
- package/dist/usecases/script/state-rename.d.ts +2 -2
- package/dist/usecases/script/state-rename.js +3 -4
- package/dist/usecases/script/state-rename.js.map +1 -1
- package/dist/usecases/script/states.d.ts +2 -2
- package/dist/usecases/script/states.js +54 -27
- package/dist/usecases/script/states.js.map +1 -1
- package/dist/usecases/script/summary.d.ts +2 -2
- package/dist/usecases/script/summary.js +21 -2
- package/dist/usecases/script/summary.js.map +1 -1
- package/dist/usecases/script/synopsis-generate.d.ts +2 -2
- package/dist/usecases/script/synopsis-generate.js +38 -39
- package/dist/usecases/script/synopsis-generate.js.map +1 -1
- package/dist/usecases/script/synopsis.d.ts +2 -2
- package/dist/usecases/script/synopsis.js +9 -12
- package/dist/usecases/script/synopsis.js.map +1 -1
- package/dist/usecases/script/transition.d.ts +2 -2
- package/dist/usecases/script/transition.js +3 -4
- package/dist/usecases/script/transition.js.map +1 -1
- package/dist/usecases/script/type.d.ts +2 -2
- package/dist/usecases/script/type.js +3 -4
- package/dist/usecases/script/type.js.map +1 -1
- package/dist/usecases/script/v4/queries.d.ts +3 -2
- package/dist/usecases/script/v4/queries.js +43 -6
- package/dist/usecases/script/v4/queries.js.map +1 -1
- package/dist/usecases/script/working-copy.d.ts +4 -4
- package/dist/usecases/script/working-copy.js +96 -92
- package/dist/usecases/script/working-copy.js.map +1 -1
- package/dist/usecases/script/worldview.d.ts +2 -2
- package/dist/usecases/script/worldview.js +3 -4
- package/dist/usecases/script/worldview.js.map +1 -1
- package/dist/usecases/script/write-authoring.d.ts +2 -2
- package/dist/usecases/script/write-authoring.js +62 -81
- package/dist/usecases/script/write-authoring.js.map +1 -1
- package/dist/usecases/update.d.ts +2 -2
- package/dist/usecases/update.js +32 -47
- package/dist/usecases/update.js.map +1 -1
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +46 -37
- package/skills/scriptctl/references/atomic-edit-workflow.md +6 -6
- package/skills/scriptctl/references/ingest-workflow.md +20 -20
- package/skills/scriptctl/references/state-reference-repair.md +6 -6
- package/dist/help-text.d.ts +0 -2
- package/dist/help-text.js +0 -1144
- package/dist/help-text.js.map +0 -1
|
@@ -7,29 +7,28 @@ export function assertSceneRefCommandFlags(version, flags) {
|
|
|
7
7
|
flags.occurrence !== undefined ? "--occurrence" : "",
|
|
8
8
|
].filter(Boolean);
|
|
9
9
|
if (unsupported.length > 0) {
|
|
10
|
-
throw new CliError("
|
|
10
|
+
throw new CliError("Script v4 replaces an asset's complete state set.", {
|
|
11
11
|
exitCode: EXIT_USAGE,
|
|
12
12
|
errorCode: "SCENE_REF_V4_FLAGS_INVALID",
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
hint: "Use one or more `--state <state-id>` values, or use `--remove` for the whole asset reference.",
|
|
14
|
+
data: { actual: unsupported },
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
if ((flags.remove && flags.states.length > 0) || (!flags.remove && flags.states.length === 0)) {
|
|
18
|
-
throw new CliError("
|
|
18
|
+
throw new CliError("Choose a complete state set or remove the asset reference.", {
|
|
19
19
|
exitCode: EXIT_USAGE,
|
|
20
20
|
errorCode: "SCENE_REF_V4_MODE_INVALID",
|
|
21
|
-
|
|
22
|
-
received: flags.remove ? ["--remove", "--state"] : ["<missing>"],
|
|
21
|
+
data: { expected: ["one or more --state values, or --remove"], actual: flags.remove ? ["--remove", "--state"] : ["<missing>"] },
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
24
|
return;
|
|
26
25
|
}
|
|
27
26
|
if (flags.states.length > 1) {
|
|
28
|
-
throw new CliError("
|
|
27
|
+
throw new CliError("Script v3 scene references have one state_id.", {
|
|
29
28
|
exitCode: EXIT_USAGE,
|
|
30
29
|
errorCode: "SCENE_REF_V3_MULTIPLE_STATES",
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
hint: "Pass one `--state <state-id>` value for this v3 script.",
|
|
31
|
+
data: { actual: flags.states },
|
|
33
32
|
});
|
|
34
33
|
}
|
|
35
34
|
}
|
|
@@ -39,18 +38,18 @@ export function assertMoveCommandFlags(version, flags) {
|
|
|
39
38
|
...(flags.before !== undefined ? ["--before"] : []),
|
|
40
39
|
...(flags.after !== undefined ? ["--after"] : []),
|
|
41
40
|
];
|
|
42
|
-
throw new CliError("
|
|
41
|
+
throw new CliError("Sibling ID placement is only supported by Script v4.", {
|
|
43
42
|
exitCode: EXIT_USAGE,
|
|
44
43
|
errorCode: "MOVE_V4_PLACEMENT_UNSUPPORTED",
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
hint: "Use the V3 destination address and --at position syntax.",
|
|
45
|
+
data: { actual: received },
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
if (version === 4 && flags.at !== undefined) {
|
|
50
|
-
throw new CliError("
|
|
49
|
+
throw new CliError("Numeric move positions are not supported by Script v4.", {
|
|
51
50
|
exitCode: EXIT_USAGE,
|
|
52
51
|
errorCode: "V4_NUMERIC_POSITION_UNSUPPORTED",
|
|
53
|
-
|
|
52
|
+
hint: "Use --before <sibling-id>, --after <sibling-id>, or omit both to append.",
|
|
54
53
|
});
|
|
55
54
|
}
|
|
56
55
|
}
|
|
@@ -92,10 +91,10 @@ function insertFlagIsPresent(flags, name) {
|
|
|
92
91
|
}
|
|
93
92
|
export function assertInsertCommandFlags(version, insertedKind, flags) {
|
|
94
93
|
if (version === 4 && flags.at !== undefined) {
|
|
95
|
-
throw new CliError("
|
|
94
|
+
throw new CliError("Numeric insertion positions are not supported by Script v4.", {
|
|
96
95
|
exitCode: EXIT_USAGE,
|
|
97
96
|
errorCode: "V4_NUMERIC_POSITION_UNSUPPORTED",
|
|
98
|
-
|
|
97
|
+
hint: "Use --before <sibling-id>, --after <sibling-id>, or omit both to append.",
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
100
|
const allowed = version === 3
|
|
@@ -106,10 +105,10 @@ export function assertInsertCommandFlags(version, insertedKind, flags) {
|
|
|
106
105
|
.map((name) => `--${name}`);
|
|
107
106
|
if (invalid.length === 0)
|
|
108
107
|
return;
|
|
109
|
-
throw new CliError("
|
|
108
|
+
throw new CliError("Action and scene insertion flags cannot be mixed or used with the wrong Script version.", {
|
|
110
109
|
exitCode: EXIT_USAGE,
|
|
111
110
|
errorCode: "INSERT_FLAG_INVALID",
|
|
112
|
-
|
|
111
|
+
data: { actual: invalid },
|
|
113
112
|
});
|
|
114
113
|
}
|
|
115
114
|
//# sourceMappingURL=command-constraints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-constraints.js","sourceRoot":"","sources":["../../../src/usecases/script/command-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWvD,MAAM,UAAU,0BAA0B,CACxC,OAAsB,EACtB,KAA2B;IAE3B,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG;YAClB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC5B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC9B,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SACrD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"command-constraints.js","sourceRoot":"","sources":["../../../src/usecases/script/command-constraints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandContext(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandContext(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -14,12 +14,11 @@ function stateValues(raw) {
|
|
|
14
14
|
export async function commandContext(opts) {
|
|
15
15
|
const args = asList(opts["_args"]);
|
|
16
16
|
if (args.length < 2) {
|
|
17
|
-
throw new CliError("
|
|
17
|
+
throw new CliError("context args missing.", {
|
|
18
18
|
exitCode: EXIT_USAGE,
|
|
19
|
-
required: ["<scene-addr> <asset-addr>"],
|
|
20
|
-
received: args,
|
|
21
|
-
nextSteps: ["Example: scriptctl context ep_001/scn_001 actor:act_001 --state st_calm"],
|
|
22
19
|
errorCode: "ARGS_MISSING",
|
|
20
|
+
hint: "Example: scriptctl context ep_001/scn_001 actor:act_001 --state st_calm",
|
|
21
|
+
data: { expected: ["<scene-addr> <asset-addr>"], actual: args },
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
24
|
const session = await loadScriptForEdit(opts);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/usecases/script/context.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AA6BzB,OAAO,EACL,MAAM,EAIN,KAAK,GACN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAU;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/usecases/script/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandCreate(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandCreate(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -11,12 +11,11 @@ export async function commandCreate(opts) {
|
|
|
11
11
|
const script = blankScriptV4(title);
|
|
12
12
|
const localPath = scriptJsonPath(opts);
|
|
13
13
|
if (exists(localPath) && !force) {
|
|
14
|
-
throw new CliError("
|
|
14
|
+
throw new CliError("A script already exists at the target.", {
|
|
15
15
|
exitCode: EXIT_INPUT,
|
|
16
|
-
required: ["a non-existent target, or --force to overwrite"],
|
|
17
|
-
received: [localPath],
|
|
18
|
-
nextSteps: ["Edit the existing script with the atomic verbs, or pass --force to overwrite with a blank scaffold."],
|
|
19
16
|
errorCode: "SCRIPT_EXISTS",
|
|
17
|
+
hint: "Edit the existing script with the atomic verbs, or pass --force to overwrite with a blank scaffold.",
|
|
18
|
+
data: { expected: ["a non-existent target, or --force to overwrite"], actual: [localPath] },
|
|
20
19
|
});
|
|
21
20
|
}
|
|
22
21
|
atomicWriteJson(localPath, script);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/usecases/script/create.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,OAAO,EAIP,MAAM,EAGN,cAAc,GAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA2BlE,OAAO,EAKL,KAAK,GACN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACE,eAAe,GAEnC,MAAM,cAAc,CAAC;AACtB,OAAO,EACib,iBAAiB,GACxc,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/usecases/script/create.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,OAAO,EAIP,MAAM,EAGN,cAAc,GAGf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AA2BlE,OAAO,EAKL,KAAK,GACN,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACE,eAAe,GAEnC,MAAM,cAAc,CAAC;AACtB,OAAO,EACib,iBAAiB,GACxc,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE;YACrD,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,eAAe;YAC1B,IAAI,EAAE,qGAAqG;YAC3G,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,gDAAgD,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC5F,CAAC,CAAC;IACX,CAAC;IACD,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandDelete(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandDelete(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -7,12 +7,11 @@ import { applySingleScriptOpToSession, } from "./lib.js";
|
|
|
7
7
|
export async function commandDelete(opts) {
|
|
8
8
|
const args = asList(opts["_args"]);
|
|
9
9
|
if (args.length < 1) {
|
|
10
|
-
throw new CliError("
|
|
10
|
+
throw new CliError("Address missing.", {
|
|
11
11
|
exitCode: EXIT_USAGE,
|
|
12
|
-
required: ["address"],
|
|
13
|
-
received: ["<empty>"],
|
|
14
|
-
nextSteps: ["Pass an address (action / scene / asset / speaker)."],
|
|
15
12
|
errorCode: "ADDRESS_MISSING",
|
|
13
|
+
hint: "Pass an address (action / scene / asset / speaker).",
|
|
14
|
+
data: { expected: ["address"], actual: ["<empty>"] },
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
const session = await loadScriptForEdit(opts);
|
|
@@ -33,12 +32,11 @@ export async function commandDelete(opts) {
|
|
|
33
32
|
bad.push(`--${f}`);
|
|
34
33
|
}
|
|
35
34
|
if (bad.length > 0) {
|
|
36
|
-
throw new CliError(
|
|
35
|
+
throw new CliError(`${bad.join(", ")} cannot be used with ${kind} delete.`, {
|
|
37
36
|
exitCode: EXIT_USAGE,
|
|
38
|
-
required: [`for ${kind} delete: ${allowed.length === 0 ? "no extra flags" : allowed.map((f) => `--${f}`).join(" / ")}`],
|
|
39
|
-
received: bad,
|
|
40
|
-
nextSteps: ["Drop the unsupported flag(s) and retry."],
|
|
41
37
|
errorCode: "DELETE_FLAG_INVALID",
|
|
38
|
+
hint: "Drop the unsupported flag(s) and retry.",
|
|
39
|
+
data: { expected: [`for ${kind} delete: ${allowed.length === 0 ? "no extra flags" : allowed.map((f) => `--${f}`).join(" / ")}`], actual: bad },
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
42
|
}
|
|
@@ -78,12 +76,11 @@ export async function commandDelete(opts) {
|
|
|
78
76
|
replacement: opts["replacement"],
|
|
79
77
|
};
|
|
80
78
|
}
|
|
81
|
-
throw new CliError("
|
|
79
|
+
throw new CliError("delete cannot operate on this address.", {
|
|
82
80
|
exitCode: EXIT_USAGE,
|
|
83
|
-
required: ["action / scene / asset / speaker address"],
|
|
84
|
-
received: [args[0]],
|
|
85
|
-
nextSteps: ["Use a supported address."],
|
|
86
81
|
errorCode: "ADDRESS_UNSUPPORTED",
|
|
82
|
+
hint: "Use a supported address.",
|
|
83
|
+
data: { expected: ["action / scene / asset / speaker address"], actual: [args[0]] },
|
|
87
84
|
});
|
|
88
85
|
})();
|
|
89
86
|
return applySingleScriptOpToSession(session, opts, op);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/usecases/script/delete.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,eAAe,GAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAWnE,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/usecases/script/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandDescribe(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandDescribe(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -7,12 +7,11 @@ import { applySingleScriptOpToSession, } from "./lib.js";
|
|
|
7
7
|
export async function commandDescribe(opts) {
|
|
8
8
|
const args = asList(opts["_args"]);
|
|
9
9
|
if (args.length < 2) {
|
|
10
|
-
throw new CliError("
|
|
10
|
+
throw new CliError("Describe args missing.", {
|
|
11
11
|
exitCode: EXIT_USAGE,
|
|
12
|
-
required: ["<addr> <text>"],
|
|
13
|
-
received: args,
|
|
14
|
-
nextSteps: ["Example: scriptctl describe actor:act_001 \"男主\" or scriptctl describe actor:act_001/st_calm \"...\""],
|
|
15
12
|
errorCode: "ARGS_MISSING",
|
|
13
|
+
hint: "Example: scriptctl describe actor:act_001 \"男主\" or scriptctl describe actor:act_001/st_calm \"...\"",
|
|
14
|
+
data: { expected: ["<addr> <text>"], actual: args },
|
|
16
15
|
});
|
|
17
16
|
}
|
|
18
17
|
const session = await loadScriptForEdit(opts);
|
|
@@ -23,12 +22,11 @@ export async function commandDescribe(opts) {
|
|
|
23
22
|
if (addr.kind === "asset") {
|
|
24
23
|
return applySingleScriptOpToSession(session, opts, { op: "asset.describe", target: args[0], description: args[1] });
|
|
25
24
|
}
|
|
26
|
-
throw new CliError("
|
|
25
|
+
throw new CliError("describe address invalid.", {
|
|
27
26
|
exitCode: EXIT_USAGE,
|
|
28
|
-
required: ["asset address (e.g. actor:act_001) or state address (e.g. actor:act_001/st_calm)"],
|
|
29
|
-
received: [args[0]],
|
|
30
|
-
nextSteps: ["Use a supported address."],
|
|
31
27
|
errorCode: "ADDRESS_UNSUPPORTED",
|
|
28
|
+
hint: "Use a supported address.",
|
|
29
|
+
data: { expected: ["asset address (e.g. actor:act_001) or state address (e.g. actor:act_001/st_calm)"], actual: [args[0]] },
|
|
32
30
|
});
|
|
33
31
|
}
|
|
34
32
|
//# sourceMappingURL=describe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/usecases/script/describe.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,eAAe,GAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAWnE,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/usecases/script/describe.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EACL,eAAe,GAKhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAWnE,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE;YACrC,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,sGAAsG;YAC5G,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;SACpD,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE;QACxC,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,qBAAqB;QAChC,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,kFAAkF,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,EAAE;KAC7H,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandDialogue(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandDialogue(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -6,20 +6,19 @@ import { dialogueTemplate } from "./lib.js";
|
|
|
6
6
|
export async function commandDialogue(opts) {
|
|
7
7
|
const args = asList(opts["_args"]);
|
|
8
8
|
if (args.length < 1) {
|
|
9
|
-
throw new CliError("
|
|
9
|
+
throw new CliError("dialogue action ref missing.", {
|
|
10
10
|
exitCode: EXIT_USAGE,
|
|
11
|
-
required: ["<action-addr>"],
|
|
12
|
-
received: ["<empty>"],
|
|
13
|
-
nextSteps: ["Example: scriptctl dialogue ep_001/scn_001#3 --actor act_001"],
|
|
14
11
|
errorCode: "ARGS_MISSING",
|
|
12
|
+
hint: "Example: scriptctl dialogue ep_001/scn_001#3 --actor act_001",
|
|
13
|
+
data: { expected: ["<action-addr>"], actual: ["<empty>"] },
|
|
15
14
|
});
|
|
16
15
|
}
|
|
17
16
|
const session = await loadScriptForEdit(opts);
|
|
18
17
|
if (session.version === 3 && opts["state"] !== undefined) {
|
|
19
|
-
throw new CliError("
|
|
18
|
+
throw new CliError("Script v3 dialogue speakers do not use this flag.", {
|
|
20
19
|
exitCode: EXIT_USAGE,
|
|
21
20
|
errorCode: "DIALOGUE_STATE_VERSION_UNSUPPORTED",
|
|
22
|
-
|
|
21
|
+
data: { actual: ["--state"] },
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
24
|
return applySingleScriptOpToSession(session, opts, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../../src/usecases/script/dialogue.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AA6BzB,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../../src/usecases/script/dialogue.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EAKR,UAAU,GASX,MAAM,iBAAiB,CAAC;AA6BzB,OAAO,EACL,MAAM,GAKP,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,iBAAiB,GAElB,MAAM,cAAc,CAAC;AACtB,OAAO,EACoK,4BAA4B,GACtM,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,8BAA8B,EAAE;YAC3C,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,cAAc;YACzB,IAAI,EAAE,8DAA8D;YACpE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC3D,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,QAAQ,CAAC,mDAAmD,EAAE;YAChE,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,oCAAoC;YAC/C,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;SAC9B,CAAC,CAAC;IACX,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,EAAE,IAAI,EAAE;QACjD,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CommandOutput } from "../../common.js";
|
|
2
2
|
import { type Dict } from "../../domain/script/shared.js";
|
|
3
|
-
export declare function commandDo(opts: Dict): Promise<[
|
|
3
|
+
export declare function commandDo(opts: Dict): Promise<[CommandOutput, number]>;
|
|
@@ -11,35 +11,32 @@ export async function commandDo(opts) {
|
|
|
11
11
|
// No pipe on an interactive terminal: reading fd 0 would block forever
|
|
12
12
|
// waiting for keyboard input. Fail fast instead.
|
|
13
13
|
if (process.stdin.isTTY) {
|
|
14
|
-
throw new CliError("
|
|
14
|
+
throw new CliError("no verb script piped to stdin.", {
|
|
15
15
|
exitCode: EXIT_USAGE,
|
|
16
|
-
required: ["a file path or piped stdin"],
|
|
17
|
-
received: ["<tty, no pipe>"],
|
|
18
|
-
nextSteps: ["Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -)."],
|
|
19
16
|
errorCode: "DO_NO_INPUT",
|
|
17
|
+
hint: "Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -).",
|
|
18
|
+
data: { expected: ["a file path or piped stdin"], actual: ["<tty, no pipe>"] },
|
|
20
19
|
});
|
|
21
20
|
}
|
|
22
21
|
try {
|
|
23
22
|
text = fs.readFileSync(0, "utf-8");
|
|
24
23
|
}
|
|
25
24
|
catch {
|
|
26
|
-
throw new CliError("
|
|
25
|
+
throw new CliError("no verb script on stdin.", {
|
|
27
26
|
exitCode: EXIT_USAGE,
|
|
28
|
-
required: ["a file path or piped stdin"],
|
|
29
|
-
received: ["<no stdin>"],
|
|
30
|
-
nextSteps: ["Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -)."],
|
|
31
27
|
errorCode: "DO_NO_INPUT",
|
|
28
|
+
hint: "Pass a file (scriptctl do edits.txt) or pipe one (… | scriptctl do -).",
|
|
29
|
+
data: { expected: ["a file path or piped stdin"], actual: ["<no stdin>"] },
|
|
32
30
|
});
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
33
|
else {
|
|
36
34
|
if (!exists(file)) {
|
|
37
|
-
throw new CliError("
|
|
35
|
+
throw new CliError("verb-script file not found.", {
|
|
38
36
|
exitCode: EXIT_INPUT,
|
|
39
|
-
required: ["an existing file"],
|
|
40
|
-
received: [file],
|
|
41
|
-
nextSteps: ["Check the path, or pipe via stdin with `-`."],
|
|
42
37
|
errorCode: "DO_FILE_NOT_FOUND",
|
|
38
|
+
hint: "Check the path, or pipe via stdin with `-`.",
|
|
39
|
+
data: { expected: ["an existing file"], actual: [file] },
|
|
43
40
|
});
|
|
44
41
|
}
|
|
45
42
|
text = readText(file);
|
|
@@ -62,22 +59,20 @@ export async function commandDo(opts) {
|
|
|
62
59
|
}
|
|
63
60
|
catch (err) {
|
|
64
61
|
const detail = err instanceof CliError ? err.message : String(err);
|
|
65
|
-
throw new CliError(`
|
|
62
|
+
throw new CliError(`line ${ln + 1}: ${detail}`, {
|
|
66
63
|
exitCode: EXIT_USAGE,
|
|
67
|
-
required: ["a valid verb line"],
|
|
68
|
-
received: [rawLines[ln].trim()],
|
|
69
|
-
nextSteps: ["Fix this line; the whole script is one transaction (nothing is written until every line is valid)."],
|
|
70
64
|
errorCode: "DO_LINE_INVALID",
|
|
65
|
+
hint: "Fix this line; the whole script is one transaction (nothing is written until every line is valid).",
|
|
66
|
+
data: { expected: ["a valid verb line"], actual: [rawLines[ln].trim()] },
|
|
71
67
|
});
|
|
72
68
|
}
|
|
73
69
|
}
|
|
74
70
|
if (ops.length === 0) {
|
|
75
|
-
throw new CliError("
|
|
71
|
+
throw new CliError("no verb lines found.", {
|
|
76
72
|
exitCode: EXIT_USAGE,
|
|
77
|
-
required: ["at least one verb line"],
|
|
78
|
-
received: ["<empty>"],
|
|
79
|
-
nextSteps: ["Provide one CLI verb per line (without the leading `scriptctl`)."],
|
|
80
73
|
errorCode: "DO_EMPTY",
|
|
74
|
+
hint: "Provide one CLI verb per line (without the leading `scriptctl`).",
|
|
75
|
+
data: { expected: ["at least one verb line"], actual: ["<empty>"] },
|
|
81
76
|
});
|
|
82
77
|
}
|
|
83
78
|
const apply = Boolean(opts["apply"]);
|
|
@@ -88,27 +83,25 @@ export async function commandDo(opts) {
|
|
|
88
83
|
const planDigest = planned?.digest ?? null;
|
|
89
84
|
const suppliedPlan = strOf(opts["plan"]).trim();
|
|
90
85
|
if (session.version === 3 && suppliedPlan) {
|
|
91
|
-
throw new CliError("
|
|
86
|
+
throw new CliError("Script v3 do transactions do not use plan digests.", {
|
|
92
87
|
exitCode: EXIT_USAGE,
|
|
93
88
|
errorCode: "MULTI_PLAN_USAGE_INVALID",
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
hint: "Remove --plan; omit --apply to preview a Script v3 do transaction.",
|
|
90
|
+
data: { actual: [suppliedPlan] },
|
|
96
91
|
});
|
|
97
92
|
}
|
|
98
93
|
if (session.version === 4 && apply && !suppliedPlan) {
|
|
99
|
-
throw new CliError("
|
|
94
|
+
throw new CliError("A Script v4 do transaction requires its dry-run plan digest.", {
|
|
100
95
|
exitCode: EXIT_USAGE,
|
|
101
96
|
errorCode: "MULTI_PLAN_REQUIRED",
|
|
102
|
-
|
|
103
|
-
received: ["<missing>"],
|
|
97
|
+
data: { expected: [planDigest ?? ""], actual: ["<missing>"] },
|
|
104
98
|
});
|
|
105
99
|
}
|
|
106
100
|
if (session.version === 4 && apply && suppliedPlan !== planDigest) {
|
|
107
|
-
throw new CliError("
|
|
101
|
+
throw new CliError("The supplied digest does not match the current operations.", {
|
|
108
102
|
exitCode: EXIT_INPUT,
|
|
109
103
|
errorCode: "MULTI_PLAN_MISMATCH",
|
|
110
|
-
|
|
111
|
-
received: [suppliedPlan],
|
|
104
|
+
data: { expected: [planDigest ?? ""], actual: [suppliedPlan] },
|
|
112
105
|
});
|
|
113
106
|
}
|
|
114
107
|
if (session.version === 4 && !apply && suppliedPlan) {
|
|
@@ -134,28 +127,30 @@ export async function commandDo(opts) {
|
|
|
134
127
|
const legacyIssueLines = legacyValidation === null
|
|
135
128
|
? []
|
|
136
129
|
: summarizeIssues(asList(legacyValidation["issues"]));
|
|
130
|
+
const issues = plannedIssueLines ?? legacyIssueLines;
|
|
131
|
+
const hint = passed
|
|
132
|
+
? planDigest
|
|
133
|
+
? `Run \`scriptctl do --apply --plan ${planDigest}\` with the same input to commit.`
|
|
134
|
+
: "Run `scriptctl do --apply` with the same input to commit."
|
|
135
|
+
: "Resolve validation issues before committing.";
|
|
136
|
+
const lines = [...head, `validation: ${passed ? "would pass" : "would need repair"}; no write`, ...issues, hint];
|
|
137
137
|
const report = {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
next: [passed
|
|
155
|
-
? planDigest
|
|
156
|
-
? `Re-run with --apply --plan ${planDigest} to commit.`
|
|
157
|
-
: "Re-run with --apply to commit."
|
|
158
|
-
: "Resolve validation issues before committing."],
|
|
138
|
+
text: lines.join("\n"),
|
|
139
|
+
data: {
|
|
140
|
+
op: "script.do.dry-run",
|
|
141
|
+
changed: false,
|
|
142
|
+
matched: ops.length,
|
|
143
|
+
applied: applied.length,
|
|
144
|
+
issues,
|
|
145
|
+
script_path: session.artifactLabel,
|
|
146
|
+
...(planDigest ? {
|
|
147
|
+
baseline: session.baselineHash,
|
|
148
|
+
plan_digest: planDigest,
|
|
149
|
+
operations: ops,
|
|
150
|
+
targets: planned?.plan.targets,
|
|
151
|
+
plan: planned?.plan,
|
|
152
|
+
} : {}),
|
|
153
|
+
},
|
|
159
154
|
};
|
|
160
155
|
return [report, passed ? EXIT_OK : EXIT_NEEDS_AGENT];
|
|
161
156
|
}
|
|
@@ -164,23 +159,25 @@ export async function commandDo(opts) {
|
|
|
164
159
|
await syncValidationResult(session, validation, newRevision);
|
|
165
160
|
const passed = Boolean(validation["passed"]);
|
|
166
161
|
const rev = session.remote ? `; rev ${newRevision}` : "";
|
|
162
|
+
const issues = summarizeIssues(asList(validation["issues"]));
|
|
163
|
+
const lines = [...head, `validation: ${passed ? "passed" : "needs repair"}${rev}`, ...issues];
|
|
167
164
|
const report = {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
165
|
+
text: lines.join("\n"),
|
|
166
|
+
data: {
|
|
167
|
+
op: "script.do",
|
|
168
|
+
changed: applied.length > 0,
|
|
169
|
+
revision: session.remote ? newRevision : undefined,
|
|
170
|
+
idempotent: session.remote ? idempotent : undefined,
|
|
171
|
+
issues,
|
|
172
|
+
script_path: session.artifactLabel,
|
|
173
|
+
...(planDigest ? {
|
|
174
|
+
baseline: session.baselineHash,
|
|
175
|
+
plan_digest: planDigest,
|
|
176
|
+
operations: ops,
|
|
177
|
+
targets: planned?.plan.targets,
|
|
178
|
+
plan: planned?.plan,
|
|
179
|
+
} : {}),
|
|
180
|
+
},
|
|
184
181
|
};
|
|
185
182
|
return [report, passed ? EXIT_OK : EXIT_NEEDS_AGENT];
|
|
186
183
|
}
|