@lingjingai/scriptctl 0.60.13 → 0.61.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.
Files changed (72) hide show
  1. package/changes/0.61.0.md +19 -0
  2. package/changes/0.61.1.md +15 -0
  3. package/dist/bin.js +16127 -11
  4. package/dist/bin.js.map +7 -1
  5. package/dist/cli/{register-batch.d.ts → register-review.d.ts} +1 -1
  6. package/dist/cli/register-review.js +19 -0
  7. package/dist/cli/register-review.js.map +1 -0
  8. package/dist/cli/register-script.d.ts +3 -0
  9. package/dist/cli/register-script.js +256 -0
  10. package/dist/cli/register-script.js.map +1 -0
  11. package/dist/cli/register-workflows.js +37 -42
  12. package/dist/cli/register-workflows.js.map +1 -1
  13. package/dist/cli.js +6 -16
  14. package/dist/cli.js.map +1 -1
  15. package/dist/domain/ingest/environment.d.ts +2 -3
  16. package/dist/domain/ingest/environment.js +1 -4
  17. package/dist/domain/ingest/environment.js.map +1 -1
  18. package/dist/domain/script/names.d.ts +1 -1
  19. package/dist/domain/script/names.js +1 -3
  20. package/dist/domain/script/names.js.map +1 -1
  21. package/dist/domain/script/shared/types.d.ts +1 -18
  22. package/dist/domain/script/shared/types.js +4 -8
  23. package/dist/domain/script/shared/types.js.map +1 -1
  24. package/dist/domain/script/shared/validation.d.ts +1 -12
  25. package/dist/domain/script/shared/validation.js +2 -22
  26. package/dist/domain/script/shared/validation.js.map +1 -1
  27. package/dist/domain/script/timestamp.d.ts +1 -23
  28. package/dist/domain/script/timestamp.js +2 -126
  29. package/dist/domain/script/timestamp.js.map +1 -1
  30. package/dist/domain/script/v3/validation.d.ts +2 -3
  31. package/dist/domain/script/v3/validation.js +1 -232
  32. package/dist/domain/script/v3/validation.js.map +1 -1
  33. package/dist/domain/script/v4/ids.d.ts +2 -24
  34. package/dist/domain/script/v4/ids.js +19 -40
  35. package/dist/domain/script/v4/ids.js.map +1 -1
  36. package/dist/domain/script/v4/validation.d.ts +2 -2
  37. package/dist/domain/script/v4/validation.js +1 -410
  38. package/dist/domain/script/v4/validation.js.map +1 -1
  39. package/dist/llm/config.js +4 -0
  40. package/dist/llm/config.js.map +1 -1
  41. package/dist/output.js +5 -0
  42. package/dist/output.js.map +1 -1
  43. package/dist/package-root.d.ts +2 -0
  44. package/dist/package-root.js +38 -0
  45. package/dist/package-root.js.map +1 -0
  46. package/dist/review-agent.js +2956 -0
  47. package/dist/review-agent.js.map +7 -0
  48. package/dist/usecases/changelog.js +3 -8
  49. package/dist/usecases/changelog.js.map +1 -1
  50. package/dist/usecases/script/action-span.d.ts +3 -19
  51. package/dist/usecases/script/action-span.js +19 -146
  52. package/dist/usecases/script/action-span.js.map +1 -1
  53. package/dist/usecases/script/review.d.ts +3 -0
  54. package/dist/usecases/script/review.js +185 -0
  55. package/dist/usecases/script/review.js.map +1 -0
  56. package/dist/usecases/update.js +2 -14
  57. package/dist/usecases/update.js.map +1 -1
  58. package/package.json +11 -3
  59. package/skills/scriptctl/SKILL.md +157 -214
  60. package/skills/scriptctl/references/ingest-workflow.md +1 -1
  61. package/skills/scriptctl/references/state-reference-repair.md +23 -19
  62. package/skills/scriptctl/references/video-transcript-repair.md +27 -29
  63. package/dist/cli/register-batch.js +0 -28
  64. package/dist/cli/register-batch.js.map +0 -1
  65. package/dist/cli/register-edits.d.ts +0 -4
  66. package/dist/cli/register-edits.js +0 -234
  67. package/dist/cli/register-edits.js.map +0 -1
  68. package/dist/cli/register-query.d.ts +0 -4
  69. package/dist/cli/register-query.js +0 -95
  70. package/dist/cli/register-query.js.map +0 -1
  71. package/skills/scriptctl/references/atomic-edit-workflow.md +0 -47
  72. package/skills/scriptctl/references/bulk-authoring.md +0 -50
@@ -1,19 +1,14 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
3
  import { CliError, EXIT_INPUT, EXIT_OK, EXIT_USAGE } from "../common.js";
4
+ import { packageRoot, packageVersion } from "../package-root.js";
5
5
  const VERSION_RE = /^\d+\.\d+\.\d+$/;
6
6
  const UNRELEASED = "unreleased";
7
- function repoRoot() {
8
- return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
9
- }
10
7
  function changesDir() {
11
- return path.join(repoRoot(), "changes");
8
+ return path.join(packageRoot(), "changes");
12
9
  }
13
10
  function readPackageVersion() {
14
- const pkgPath = path.join(repoRoot(), "package.json");
15
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
16
- return pkg.version ?? "0.0.0";
11
+ return packageVersion();
17
12
  }
18
13
  function versionParts(version) {
19
14
  if (!VERSION_RE.test(version)) {
@@ -1 +1 @@
1
- {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/usecases/changelog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/usecases/changelog.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,9 @@
1
1
  import { type CommandOutput } from "../../common.js";
2
+ import { type SpanPoint, type SpanRow } from "@lingjingai/screenplay";
2
3
  import type { ScriptV3 } from "../../domain/script/v3/types.js";
3
4
  import type { ScriptV4 } from "../../domain/script/v4/types.js";
4
- export interface ActionSpanPoint {
5
- address: string;
6
- episodeId: string;
7
- episodeNo: number;
8
- timestamp?: string;
9
- }
10
- export interface ActionSpanRow extends Record<string, unknown> {
11
- episode_id: string;
12
- ep_no: number;
13
- start_timestamp: string;
14
- last_selected_timestamp: string;
15
- end_timestamp: string;
16
- end_open: boolean;
17
- end_exclusive: true;
18
- start_action: string;
19
- last_action: string;
20
- end_boundary_action: string;
21
- matched_actions: number;
22
- }
5
+ export type ActionSpanPoint = SpanPoint;
6
+ export type ActionSpanRow = SpanRow;
23
7
  export declare function actionSpanPointsV3(script: ScriptV3): ActionSpanPoint[];
24
8
  export declare function actionSpanPointsV4(script: ScriptV4): ActionSpanPoint[];
25
9
  export declare function resolveActionSpan(timeline: readonly ActionSpanPoint[], selectedAddresses: readonly string[]): ActionSpanRow;
@@ -1,162 +1,35 @@
1
+ // The span logic lives in `@lingjingai/screenplay` so the SDK's `span` tool and
2
+ // this command compute it from one definition. Only the error mapping onto
3
+ // scriptctl's CliError stays here.
1
4
  import { CliError, EXIT_INPUT, EXIT_RUNTIME, } from "../../common.js";
2
- import { parseTimestamp, TimestampParseError, } from "../../domain/script/timestamp.js";
3
- function actionTimestamp(extend) {
4
- const timestamp = extend?.timestamp;
5
- if (typeof timestamp !== "string")
6
- return undefined;
7
- const trimmed = timestamp.trim();
8
- return trimmed || undefined;
9
- }
5
+ import { SPAN_COLUMNS, parse, resolveSpan, spanPoints, } from "@lingjingai/screenplay";
10
6
  export function actionSpanPointsV3(script) {
11
- return script.episodes.flatMap((episode, episodeIndex) => episode.scenes.flatMap((scene) => scene.actions.map((action, actionIndex) => ({
12
- address: `${episode.episode_id}/${scene.scene_id}#${actionIndex}`,
13
- episodeId: episode.episode_id,
14
- episodeNo: episodeIndex + 1,
15
- timestamp: actionTimestamp(action.extend),
16
- }))));
7
+ return spanPoints(parse(script));
17
8
  }
18
9
  export function actionSpanPointsV4(script) {
19
- return script.episodes.flatMap((episode, episodeIndex) => episode.scenes.flatMap((scene) => scene.actions.map((action) => ({
20
- address: action.action_id,
21
- episodeId: episode.episode_id,
22
- episodeNo: episodeIndex + 1,
23
- timestamp: actionTimestamp(action.extend),
24
- }))));
10
+ return spanPoints(parse(script));
25
11
  }
26
- function parsePointTimestamp(point) {
12
+ // Only an inconsistent selection is our own bug; every other span failure is
13
+ // something the caller can fix in the script or the selector.
14
+ const RUNTIME_CODES = new Set(["ACTION_SPAN_SELECTION_INCONSISTENT"]);
15
+ export function resolveActionSpan(timeline, selectedAddresses) {
27
16
  try {
28
- return parseTimestamp(point.timestamp ?? "");
17
+ return resolveSpan(timeline, selectedAddresses);
29
18
  }
30
19
  catch (error) {
31
- if (!(error instanceof TimestampParseError))
20
+ const detail = error;
21
+ if (!detail?.code?.startsWith("ACTION_SPAN_"))
32
22
  throw error;
33
- throw new CliError(`Action ${point.address} has an invalid stored timestamp.`, {
34
- exitCode: EXIT_INPUT,
35
- errorCode: "ACTION_SPAN_TIMESTAMP_INVALID",
36
- hint: `Fix it with \`scriptctl timestamp ${point.address} --set <time>\` or remove it.`,
37
- data: {
38
- expected: ["valid action.extend.timestamp"],
39
- actual: [`${point.address}: ${JSON.stringify(point.timestamp ?? "")}`],
40
- },
41
- });
42
- }
43
- }
44
- function nonMonotonic(previous, current) {
45
- throw new CliError("Action timestamps run backward within the selected episode.", {
46
- exitCode: EXIT_INPUT,
47
- errorCode: "ACTION_SPAN_TIMESTAMP_NON_MONOTONIC",
48
- hint: "Fix the stored timestamps so they do not move backward in document order, then rerun `actions --span`.",
49
- data: {
50
- actual: [
51
- `${previous.address}: ${previous.timestamp}`,
52
- `${current.address}: ${current.timestamp}`,
53
- ],
54
- },
55
- });
56
- }
57
- export function resolveActionSpan(timeline, selectedAddresses) {
58
- if (selectedAddresses.length === 0) {
59
- throw new CliError("The action selection matched nothing.", {
60
- exitCode: EXIT_INPUT,
61
- errorCode: "ACTION_SPAN_NO_MATCH",
62
- hint: "Check the selector with `scriptctl actions` and rerun with `--span`.",
63
- data: { actual: ["0 matched actions"] },
23
+ throw new CliError(detail.message ?? "Action span failed.", {
24
+ exitCode: RUNTIME_CODES.has(detail.code) ? EXIT_RUNTIME : EXIT_INPUT,
25
+ errorCode: detail.code,
26
+ ...(detail.hint ? { hint: detail.hint } : {}),
27
+ ...(detail.data ? { data: detail.data } : {}),
64
28
  });
65
29
  }
66
- const selectedSet = new Set(selectedAddresses);
67
- const selected = timeline.filter((point) => selectedSet.has(point.address));
68
- if (selected.length !== selectedSet.size) {
69
- throw new CliError("The resolved action selection is inconsistent with the script timeline.", {
70
- exitCode: EXIT_RUNTIME,
71
- errorCode: "ACTION_SPAN_SELECTION_INCONSISTENT",
72
- data: {
73
- expected: [`${selectedSet.size} timeline actions`],
74
- actual: [`${selected.length} timeline actions`],
75
- },
76
- });
77
- }
78
- const episodeIds = new Set(selected.map((point) => point.episodeId));
79
- if (episodeIds.size !== 1) {
80
- throw new CliError("An action timestamp span must stay within one episode.", {
81
- exitCode: EXIT_INPUT,
82
- errorCode: "ACTION_SPAN_CROSSES_EPISODES",
83
- hint: "Split the selector into one `actions --span` call per episode.",
84
- data: { actual: [...episodeIds] },
85
- });
86
- }
87
- const first = selected[0];
88
- const last = selected[selected.length - 1];
89
- if (!first.timestamp) {
90
- throw new CliError(`The first selected Action ${first.address} has no timestamp.`, {
91
- exitCode: EXIT_INPUT,
92
- errorCode: "ACTION_SPAN_START_TIMESTAMP_MISSING",
93
- hint: `Set it with \`scriptctl timestamp ${first.address} --set <time>\`, then rerun.`,
94
- data: { actual: [first.address] },
95
- });
96
- }
97
- const start = parsePointTimestamp(first);
98
- let previousStampedPoint = first;
99
- let previousTimestamp = start;
100
- let lastSelectedTimestamp = "";
101
- for (const point of selected) {
102
- if (!point.timestamp)
103
- continue;
104
- const timestamp = parsePointTimestamp(point);
105
- if (timestamp.milliseconds < previousTimestamp.milliseconds) {
106
- nonMonotonic(previousStampedPoint, point);
107
- }
108
- previousStampedPoint = point;
109
- previousTimestamp = timestamp;
110
- if (point.address === last.address)
111
- lastSelectedTimestamp = timestamp.canonical;
112
- }
113
- const lastTimelineIndex = timeline.findIndex((point) => point.address === last.address);
114
- let boundary;
115
- let boundaryTimestamp;
116
- for (let index = lastTimelineIndex + 1; index < timeline.length; index += 1) {
117
- const candidate = timeline[index];
118
- if (candidate.episodeId !== first.episodeId)
119
- break;
120
- if (!candidate.timestamp)
121
- continue;
122
- const timestamp = parsePointTimestamp(candidate);
123
- if (timestamp.milliseconds < previousTimestamp.milliseconds) {
124
- nonMonotonic(previousStampedPoint, candidate);
125
- }
126
- if (timestamp.milliseconds === previousTimestamp.milliseconds)
127
- continue;
128
- boundary = candidate;
129
- boundaryTimestamp = timestamp;
130
- break;
131
- }
132
- return {
133
- episode_id: first.episodeId,
134
- ep_no: first.episodeNo,
135
- start_timestamp: start.canonical,
136
- last_selected_timestamp: lastSelectedTimestamp,
137
- end_timestamp: boundaryTimestamp?.canonical ?? "",
138
- end_open: boundaryTimestamp === undefined,
139
- end_exclusive: true,
140
- start_action: first.address,
141
- last_action: last.address,
142
- end_boundary_action: boundary?.address ?? "",
143
- matched_actions: selected.length,
144
- };
145
30
  }
146
31
  export function actionSpanOutput(row) {
147
- const rowColumns = [
148
- "episode_id",
149
- "ep_no",
150
- "start_timestamp",
151
- "last_selected_timestamp",
152
- "end_timestamp",
153
- "end_open",
154
- "end_exclusive",
155
- "start_action",
156
- "last_action",
157
- "end_boundary_action",
158
- "matched_actions",
159
- ];
32
+ const rowColumns = [...SPAN_COLUMNS];
160
33
  return {
161
34
  text: rowColumns.map((column) => String(row[column])).join("\t"),
162
35
  data: {
@@ -1 +1 @@
1
- {"version":3,"file":"action-span.js","sourceRoot":"","sources":["../../../src/usecases/script/action-span.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-span.js","sourceRoot":"","sources":["../../../src/usecases/script/action-span.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,mCAAmC;AACnC,OAAO,EACL,QAAQ,EACR,UAAU,EACV,YAAY,GAEb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,GAGX,MAAM,wBAAwB,CAAC;AAOhC,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IACjD,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IACjD,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,8DAA8D;AAC9D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAEtE,MAAM,UAAU,iBAAiB,CAC/B,QAAoC,EACpC,iBAAoC;IAEpC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAA2E,CAAC;QAC3F,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC;YAAE,MAAM,KAAK,CAAC;QAC3D,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,EAAE;YAC1D,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;YACpE,SAAS,EAAE,MAAM,CAAC,IAAI;YACtB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAkB;IACjD,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IACrC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChE,IAAI,EAAE;YACJ,EAAE,EAAE,mBAAmB;YACvB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,CAAC,GAAG,CAAC;SACZ;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type CommandOutput } from "../../common.js";
2
+ import { type Dict } from "../../domain/script/shared.js";
3
+ export declare function commandReview(opts: Dict): Promise<[CommandOutput, number]>;
@@ -0,0 +1,185 @@
1
+ // `scriptctl review`: one process reviews a whole script against its original
2
+ // video. The agent itself lives in @lingjingai/review-agent and is loaded by a
3
+ // dynamic import so that every other command keeps its ~0.09s start-up.
4
+ //
5
+ // Progress is NDJSON on stdout, one line per episode as it finishes, because
6
+ // the caller persists per-episode results and must not lose them if the run
7
+ // is interrupted.
8
+ import * as fs from "node:fs";
9
+ import * as path from "node:path";
10
+ import { fileURLToPath } from "node:url";
11
+ import { CliError, EXIT_INPUT, EXIT_OK, EXIT_RUNTIME } from "../../common.js";
12
+ import { scriptJsonPath } from "../../common.js";
13
+ import { loadLlmConfig } from "../../llm/config.js";
14
+ import { strOf } from "../../domain/script/shared.js";
15
+ const DEFAULT_PROFILE = "review-agent";
16
+ function resolveProfile(llm, override) {
17
+ const name = override || DEFAULT_PROFILE;
18
+ const model = llm.models[name];
19
+ if (!model) {
20
+ throw new CliError(`LLM profile "${name}" is not defined.`, {
21
+ exitCode: EXIT_INPUT,
22
+ errorCode: "REVIEW_PROFILE_UNKNOWN",
23
+ hint: `Define it under models, or pick one of: ${Object.keys(llm.models).join(", ")}.`,
24
+ data: { expected: ["a defined models entry"], actual: [name] },
25
+ });
26
+ }
27
+ const provider = llm.providers[model.provider];
28
+ if (!provider) {
29
+ throw new CliError(`Provider "${model.provider}" is not defined.`, {
30
+ exitCode: EXIT_INPUT,
31
+ errorCode: "REVIEW_PROVIDER_UNKNOWN",
32
+ hint: `Available providers: ${Object.keys(llm.providers).join(", ")}.`,
33
+ data: { expected: ["a defined providers entry"], actual: [model.provider] },
34
+ });
35
+ }
36
+ const apiKey = (process.env[provider.apiKeyEnv] ?? "").trim();
37
+ if (!apiKey) {
38
+ throw new CliError(`${provider.apiKeyEnv} is not set.`, {
39
+ exitCode: EXIT_INPUT,
40
+ errorCode: "REVIEW_API_KEY_MISSING",
41
+ hint: `Export ${provider.apiKeyEnv} for provider ${model.provider}.`,
42
+ data: { expected: [provider.apiKeyEnv], actual: ["<empty>"] },
43
+ });
44
+ }
45
+ return { provider: model.provider, model: model.model, baseUrl: provider.baseUrl, apiKey };
46
+ }
47
+ /**
48
+ * The agent bundle sits next to this file in dist. It is loaded by path rather
49
+ * than by package name so that a published scriptctl needs no resolvable
50
+ * `@lingjingai/review-agent` — the bundle IS the package.
51
+ */
52
+ async function loadAgent() {
53
+ const here = path.dirname(fileURLToPath(import.meta.url));
54
+ // In the shipped bundle this module is dist/bin.js, so the sibling is
55
+ // dist/review-agent.js; under tsc output it is dist/usecases/script/, so the
56
+ // package name resolves through node_modules instead.
57
+ const bundled = path.join(here, "review-agent.js");
58
+ const specifier = fs.existsSync(bundled) ? bundled : "@lingjingai/review-agent";
59
+ try {
60
+ return await import(specifier);
61
+ }
62
+ catch (error) {
63
+ throw new CliError("The review agent is not installed.", {
64
+ exitCode: EXIT_RUNTIME,
65
+ errorCode: "REVIEW_AGENT_MISSING",
66
+ hint: "Reinstall scriptctl without --omit=optional, or install @mastra/core and @ai-sdk/google.",
67
+ data: { expected: ["@lingjingai/review-agent"], actual: [String(error.message).slice(0, 200)] },
68
+ });
69
+ }
70
+ }
71
+ function episodeList(raw) {
72
+ const trimmed = raw.trim();
73
+ if (!trimmed)
74
+ return undefined;
75
+ const numbers = trimmed.split(",").map((part) => Number(part.trim()));
76
+ if (numbers.some((value) => !Number.isInteger(value) || value < 1)) {
77
+ throw new CliError("--episodes takes a comma-separated list of 1-based episode numbers.", {
78
+ exitCode: EXIT_INPUT,
79
+ errorCode: "REVIEW_EPISODES_INVALID",
80
+ hint: "For example: --episodes 1,2,5",
81
+ data: { expected: ["1-based episode numbers"], actual: [trimmed] },
82
+ });
83
+ }
84
+ return numbers;
85
+ }
86
+ function positive(opts, key, fallback) {
87
+ const raw = opts[key];
88
+ if (raw === undefined)
89
+ return fallback;
90
+ const value = Number(raw);
91
+ if (!Number.isFinite(value) || value <= 0) {
92
+ throw new CliError(`--${key.replace(/_/g, "-")} must be a positive number.`, {
93
+ exitCode: EXIT_INPUT,
94
+ errorCode: "REVIEW_OPTION_INVALID",
95
+ hint: `Pass a positive number for --${key.replace(/_/g, "-")}.`,
96
+ data: { expected: ["a positive number"], actual: [String(raw)] },
97
+ });
98
+ }
99
+ return value;
100
+ }
101
+ export async function commandReview(opts) {
102
+ const llm = loadLlmConfig(strOf(opts["llm_config"]).trim() || undefined);
103
+ const override = strOf(opts["model"]).trim();
104
+ const profile = resolveProfile(llm, override);
105
+ // --check answers "can this run at all" without spending a token: it is what
106
+ // replaces `codex login status` in the caller's preflight.
107
+ if (opts["check"]) {
108
+ const agent = await loadAgent();
109
+ const ok = typeof agent.reviewScript === "function";
110
+ return [{
111
+ text: ok
112
+ ? `ready: ${profile.provider}/${profile.model}`
113
+ : "the review agent bundle is present but exports no reviewScript",
114
+ data: {
115
+ ready: ok,
116
+ provider: profile.provider,
117
+ model: profile.model,
118
+ llm_config: llm.sourcePath ?? "builtin",
119
+ },
120
+ }, ok ? EXIT_OK : EXIT_RUNTIME];
121
+ }
122
+ const scriptPath = scriptJsonPath(opts);
123
+ if (!fs.existsSync(scriptPath)) {
124
+ throw new CliError("Local script file not found.", {
125
+ exitCode: EXIT_INPUT,
126
+ errorCode: "SCRIPT_NOT_FOUND",
127
+ hint: "Run `scriptctl checkout`, `scriptctl create`, or pass --script-path to an existing script.",
128
+ data: { expected: ["existing local script JSON"], actual: [scriptPath] },
129
+ });
130
+ }
131
+ const videos = (Array.isArray(opts["video"]) ? opts["video"] : [])
132
+ .map((value) => value.trim())
133
+ .filter((value) => value.length > 0);
134
+ const missing = videos.filter((value) => !fs.existsSync(value));
135
+ if (missing.length > 0) {
136
+ throw new CliError("A --video path does not exist.", {
137
+ exitCode: EXIT_INPUT,
138
+ errorCode: "REVIEW_SOURCE_NOT_FOUND",
139
+ hint: "Pass --video once per episode, in episode order.",
140
+ data: { expected: ["existing video files"], actual: missing.slice(0, 5) },
141
+ });
142
+ }
143
+ const source = strOf(opts["source_path"]).trim();
144
+ if (source && !fs.existsSync(source)) {
145
+ throw new CliError("Video source not found.", {
146
+ exitCode: EXIT_INPUT,
147
+ errorCode: "REVIEW_SOURCE_NOT_FOUND",
148
+ hint: "Pass -s to a video file or a directory of per-episode videos, or omit it for a script-only review.",
149
+ data: { expected: ["existing video file or directory"], actual: [source] },
150
+ });
151
+ }
152
+ const { reviewScript } = await loadAgent();
153
+ const write = (event) => process.stdout.write(JSON.stringify(event) + "\n");
154
+ try {
155
+ await reviewScript({
156
+ scriptPath,
157
+ ...(source ? { source } : {}),
158
+ ...(videos.length > 0 ? { videos } : {}),
159
+ ...(episodeList(strOf(opts["episodes"])) ? { episodes: episodeList(strOf(opts["episodes"])) } : {}),
160
+ concurrency: positive(opts, "concurrency", 5),
161
+ converge: opts["converge"] !== false,
162
+ apiKey: profile.apiKey,
163
+ model: profile.model,
164
+ mediaModel: profile.model,
165
+ ...(profile.baseUrl ? { baseUrl: profile.baseUrl } : {}),
166
+ maxSteps: positive(opts, "max_steps", 60),
167
+ mediaBudget: positive(opts, "media_budget", 1),
168
+ episodeTimeoutMs: positive(opts, "episode_timeout_ms", 8 * 60_000),
169
+ onEvent: write,
170
+ });
171
+ }
172
+ catch (error) {
173
+ if (error instanceof CliError)
174
+ throw error;
175
+ throw new CliError("Review failed.", {
176
+ exitCode: EXIT_RUNTIME,
177
+ errorCode: "REVIEW_FAILED",
178
+ hint: "Read the last NDJSON lines on stdout for the episode that failed.",
179
+ data: { expected: ["a completed review run"], actual: [String(error.message).slice(0, 300)] },
180
+ });
181
+ }
182
+ // Every result already left as NDJSON; the envelope would only repeat it.
183
+ return [{ text: "", data: {} }, EXIT_OK];
184
+ }
185
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/usecases/script/review.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,11 @@
1
1
  import { spawn } from "node:child_process";
2
- import * as fs from "node:fs";
3
- import * as path from "node:path";
4
- import { fileURLToPath } from "node:url";
5
2
  import { CliError, EXIT_OK, EXIT_RUNTIME } from "../common.js";
3
+ import { packageVersion } from "../package-root.js";
6
4
  const UPDATE_PACKAGE = "@lingjingai/scriptctl";
7
5
  const UPDATE_LATEST_SPEC = `${UPDATE_PACKAGE}@latest`;
8
6
  const UPDATE_COMMAND = "npm";
9
- function packageRoot() {
10
- return path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
11
- }
12
7
  function readInstalledVersion() {
13
- const pkg = JSON.parse(fs.readFileSync(path.join(packageRoot(), "package.json"), "utf-8"));
14
- if (typeof pkg !== "object"
15
- || pkg === null
16
- || !("version" in pkg)
17
- || typeof pkg.version !== "string") {
18
- throw new Error("scriptctl package.json does not contain a string version");
19
- }
20
- return pkg.version;
8
+ return packageVersion();
21
9
  }
22
10
  export function patchPackageSpec(version) {
23
11
  const match = /^(\d+)\.(\d+)\.\d+/.exec(version);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/usecases/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/usecases/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/scriptctl",
3
- "version": "0.60.13",
3
+ "version": "0.61.1",
4
4
  "description": "剧本阶段统一 CLI:素材转 Script v4,并兼容 Script v3 的本地写作、精修、校验和发布。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,8 +19,8 @@
19
19
  "node": ">=20"
20
20
  },
21
21
  "scripts": {
22
- "build": "tsc",
23
- "clean": "rm -rf dist",
22
+ "build": "pnpm --filter @lingjingai/screenplay build && pnpm --filter @lingjingai/review-agent build && tsc && node scripts/bundle.mjs",
23
+ "clean": "rm -rf dist packages/screenplay/dist",
24
24
  "postinstall": "node scripts/install-skill.mjs",
25
25
  "install-skill": "node scripts/install-skill.mjs",
26
26
  "prepublishOnly": "pnpm run clean && pnpm run build",
@@ -46,9 +46,12 @@
46
46
  "yaml": "^2.8.1"
47
47
  },
48
48
  "devDependencies": {
49
+ "@lingjingai/review-agent": "workspace:*",
50
+ "@lingjingai/screenplay": "workspace:*",
49
51
  "@types/node": "^20.14.0",
50
52
  "@types/proper-lockfile": "^4.1.4",
51
53
  "c8": "^11.0.0",
54
+ "esbuild": "^0.28.2",
52
55
  "typescript": "^5.5.0",
53
56
  "vitest": "^2.0.0"
54
57
  },
@@ -61,5 +64,10 @@
61
64
  "license": "MIT",
62
65
  "publishConfig": {
63
66
  "access": "public"
67
+ },
68
+ "optionalDependencies": {
69
+ "@ai-sdk/google": "^4.0.63",
70
+ "@mastra/core": "^1.64.0",
71
+ "zod": "^4.5.4"
64
72
  }
65
73
  }