@lingjingai/scriptctl 0.13.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +33 -49
  3. package/dist/cli.js.map +1 -1
  4. package/dist/common.d.ts +11 -4
  5. package/dist/common.js +83 -61
  6. package/dist/common.js.map +1 -1
  7. package/dist/domain/direct-core.d.ts +27 -4
  8. package/dist/domain/direct-core.js +281 -55
  9. package/dist/domain/direct-core.js.map +1 -1
  10. package/dist/domain/script-core.d.ts +15 -0
  11. package/dist/domain/script-core.js +207 -40
  12. package/dist/domain/script-core.js.map +1 -1
  13. package/dist/help-text.js +45 -315
  14. package/dist/help-text.js.map +1 -1
  15. package/dist/infra/providers.d.ts +10 -36
  16. package/dist/infra/providers.js +144 -300
  17. package/dist/infra/providers.js.map +1 -1
  18. package/dist/usecases/direct.js +342 -60
  19. package/dist/usecases/direct.js.map +1 -1
  20. package/dist/usecases/doctor.js +2 -5
  21. package/dist/usecases/doctor.js.map +1 -1
  22. package/dist/usecases/parse.js +104 -14
  23. package/dist/usecases/parse.js.map +1 -1
  24. package/dist/usecases/script.d.ts +7 -2
  25. package/dist/usecases/script.js +180 -12
  26. package/dist/usecases/script.js.map +1 -1
  27. package/package.json +2 -3
  28. package/dist/domain/asset-registry.d.ts +0 -141
  29. package/dist/domain/asset-registry.js +0 -318
  30. package/dist/domain/asset-registry.js.map +0 -1
  31. package/dist/domain/collision-detector.d.ts +0 -83
  32. package/dist/domain/collision-detector.js +0 -248
  33. package/dist/domain/collision-detector.js.map +0 -1
  34. package/dist/infra/default-writing-prompt.d.ts +0 -31
  35. package/dist/infra/default-writing-prompt.js +0 -50
  36. package/dist/infra/default-writing-prompt.js.map +0 -1
  37. package/dist/infra/default-writing-prompt.md +0 -115
  38. package/dist/infra/gemini-writer.d.ts +0 -107
  39. package/dist/infra/gemini-writer.js +0 -207
  40. package/dist/infra/gemini-writer.js.map +0 -1
  41. package/dist/usecases/episode.d.ts +0 -48
  42. package/dist/usecases/episode.js +0 -1242
  43. package/dist/usecases/episode.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
- import { ASSET_CURATION_SCHEMA, CliError, DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS, DEFAULT_THINKING_BUDGET_TOKENS, EPISODE_TITLE_EXTRACTION_SCHEMA, EXIT_RUNTIME, EXIT_USAGE, MARKDOWN_BATCH_PROMPT_SPEC, METADATA_EXTRACTION_SCHEMA, NONSTREAMING_MAX_TOKENS, WORLDVIEW_VALUES, } from "../common.js";
3
- import { _md_push_asset, _normalize_speaker_list, buildAssetCurationContext, buildEpisodeTitleContext, buildMetadataContext, deterministicEpisodeShortTitle, deterministicExtractEpisode, deterministicExtractMetadata, episodesNeedingGeneratedTitles, formatBatchSource, parseMarkdownBatch, } from "../domain/direct-core.js";
2
+ import { CliError, DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS, DEFAULT_THINKING_BUDGET_TOKENS, EPISODE_SYNOPSIS_SCHEMA, EPISODE_TITLE_EXTRACTION_SCHEMA, EXIT_RUNTIME, EXIT_USAGE, MARKDOWN_BATCH_PROMPT_SPEC, METADATA_MD_SPEC, NONSTREAMING_MAX_TOKENS, SCRIPT_SYNOPSIS_SCHEMA, } from "../common.js";
3
+ import { _md_push_asset, _normalize_speaker_list, cleanSynopsisList, buildEpisodeTitleContext, buildMetadataContext, deterministicEpisodeShortTitle, deterministicExtractEpisode, deterministicExtractMetadata, episodesNeedingGeneratedTitles, formatBatchSource, parseMarkdownBatch, parseMarkdownMetadata, } from "../domain/direct-core.js";
4
4
  function strOf(v) {
5
5
  if (v === null || v === undefined)
6
6
  return "";
@@ -17,38 +17,6 @@ function asList(v) {
17
17
  // ---------------------------------------------------------------------------
18
18
  export class MockProvider {
19
19
  name = "mock";
20
- /**
21
- * Mock completion for episode draft tests. Returns a small valid spec-md fragment.
22
- * Real callers must never use mock provider for delivery.
23
- */
24
- async complete(_prompt, _maxTokens) {
25
- return [
26
- "# 剧本",
27
- "",
28
- "## 场景 1",
29
- "- 时空: 内 日",
30
- "- 地点: mock-location",
31
- "- 角色: mock-actor-A, mock-actor-B",
32
- "- 道具: mock-prop",
33
- "",
34
- "> [act] mock action body for testing.",
35
- "> [dlg|mock-actor-A] mock dialogue line.",
36
- "> [dlg|mock-actor-B|微笑] another mock line.",
37
- "",
38
- "# 资产",
39
- "",
40
- "## 人物",
41
- "- mock-actor-A: mock provider actor A",
42
- "- mock-actor-B: mock provider actor B",
43
- "",
44
- "## 场景",
45
- "- mock-location: mock provider location",
46
- "",
47
- "## 道具",
48
- "- mock-prop: mock provider prop",
49
- "",
50
- ].join("\n");
51
- }
52
20
  extractEpisode(sourceText, episodePlan) {
53
21
  return this.extractBatch(sourceText, episodePlan);
54
22
  }
@@ -80,13 +48,34 @@ export class MockProvider {
80
48
  result["locations"] = locations;
81
49
  result["props"] = props;
82
50
  result["speakers"] = _normalize_speaker_list(speakers);
51
+ // Deterministic fragment synopsis so the mock-flow e2e can verify the whole
52
+ // synopsis chain end-to-end: take the first non-empty action content.
53
+ const firstContent = asList(result["scenes"])
54
+ .flatMap((scene) => asList(scene["actions"]))
55
+ .map((action) => strOf(action["content"]).trim())
56
+ .find((c) => c.length > 0);
57
+ if (firstContent)
58
+ result["synopsis"] = firstContent.slice(0, 40);
83
59
  return result;
84
60
  }
85
61
  extractMetadata(_sourceText, script) {
86
62
  return deterministicExtractMetadata(script);
87
63
  }
88
- extractAssetCuration(_sourceText, _script) {
89
- return { locations: [] };
64
+ extractEpisodeSynopsis(synopses, _ctx) {
65
+ // Prefix marks that this deterministic STITCH ran — lets e2e tests tell a
66
+ // real reduce-step call apart from the plain-join fallback (which has no
67
+ // prefix) and prove the multi-group reduce path actually executed.
68
+ return { synopsis: `stitch:${cleanSynopsisList(synopses).join(" ")}` };
69
+ }
70
+ extractScriptSynopsis(synopses, _ctx) {
71
+ const joined = cleanSynopsisList(synopses).join(" ");
72
+ return {
73
+ synopsis: joined,
74
+ theme: "mock-theme",
75
+ logline: "mock-logline",
76
+ style: "mock-style",
77
+ main_characters: [],
78
+ };
90
79
  }
91
80
  extractEpisodeTitles(sourceText, episodePlan) {
92
81
  return {
@@ -150,12 +139,10 @@ export class AnthropicProvider {
150
139
  return request;
151
140
  }
152
141
  async collectResponseText(request) {
153
- if (request.max_tokens > NONSTREAMING_MAX_TOKENS) {
154
- const stream = await this.client.messages.stream(request);
155
- const text = await stream.finalText();
156
- const message = await stream.finalMessage();
157
- return [text.trim(), strOf(message.stop_reason)];
158
- }
142
+ // Only caller is extractBatch (max_tokens = DEFAULT_BATCH_MAX_TOKENS, always
143
+ // below NONSTREAMING_MAX_TOKENS), so the non-streaming create path is the
144
+ // only reachable one. The streaming branch lives on in collectToolUseInput
145
+ // for the large-token tool-use methods.
159
146
  const response = await this.client.messages.create(request);
160
147
  return [textFromResponse(response), strOf(response.stop_reason)];
161
148
  }
@@ -177,31 +164,34 @@ export class AnthropicProvider {
177
164
  return [findToolUseInput(response.content ?? [], toolName), strOf(response.stop_reason)];
178
165
  }
179
166
  /**
180
- * Generic completion entry point. Used by episode subcommand's gemini-writer to draft
181
- * one episode's spec markdown from the assembled prompt. Throws CliError when the
182
- * provider truncates output (so the caller can surface a deterministic error rather
183
- * than committing a half-baked episode).
167
+ * Shared forced-tool-use round-trip: build the request with a single forced
168
+ * tool, run it, and map the two failure modes (max_tokens truncation, missing
169
+ * tool_use block) to method-specific CliErrors. Every tool_use extraction
170
+ * (titles / curation / metadata / episode-synopsis / script-synopsis) routes
171
+ * through here so the protocol and error contract live in one place.
184
172
  */
185
- async complete(prompt, maxTokens) {
186
- const request = this.messageRequest(prompt, maxTokens ?? DEFAULT_BATCH_MAX_TOKENS);
187
- const [raw, stopReason] = await this.collectResponseText(request);
173
+ async runToolUse(spec) {
174
+ const request = { ...this.messageRequest(spec.prompt, spec.maxTokens) };
175
+ request["tools"] = [{ name: spec.toolName, description: spec.description, input_schema: spec.schema }];
176
+ request["tool_choice"] = { type: "tool", name: spec.toolName };
177
+ const [input, stopReason] = await this.collectToolUseInput(request, spec.toolName);
188
178
  if (stopReason === "max_tokens") {
189
- throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
179
+ throw new CliError(spec.truncatedTitle, `${spec.truncatedTitle}.`, {
190
180
  exitCode: EXIT_RUNTIME,
191
- required: ["complete markdown within provider max_tokens"],
192
- received: [
193
- `stop_reason: ${stopReason}`,
194
- `max_tokens: ${request.max_tokens}`,
195
- `raw chars: ${raw.length}`,
196
- `tail: ${raw.slice(-160) || "<empty response>"}`,
197
- ],
198
- nextSteps: [
199
- "Re-run with --regen, or split the episode outline into smaller scopes.",
200
- ],
201
- errorCode: "PROVIDER_OUTPUT_TRUNCATED",
181
+ required: ["complete JSON within provider max_tokens"],
182
+ received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
183
+ nextSteps: spec.nextSteps,
202
184
  });
203
185
  }
204
- return raw;
186
+ if (!input) {
187
+ throw new CliError(spec.invalidTitle, `${spec.invalidTitle}.`, {
188
+ exitCode: EXIT_RUNTIME,
189
+ required: [`tool_use block with name "${spec.toolName}"`],
190
+ received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${spec.toolName}`],
191
+ nextSteps: spec.nextSteps,
192
+ });
193
+ }
194
+ return input;
205
195
  }
206
196
  extractEpisode(sourceText, episodePlan) {
207
197
  return this.extractBatch(sourceText, episodePlan);
@@ -275,260 +265,116 @@ export class AnthropicProvider {
275
265
  "\n" +
276
266
  "Episodes needing titles:\n" +
277
267
  `${JSON.stringify(context)}\n`;
278
- const toolName = "submit_episode_titles";
279
- const request = { ...this.messageRequest(prompt, 4096) };
280
- request["tools"] = [{
281
- name: toolName,
282
- description: "Return generated short Chinese titles for every input episode.",
283
- input_schema: EPISODE_TITLE_EXTRACTION_SCHEMA,
284
- }];
285
- request["tool_choice"] = { type: "tool", name: toolName };
286
- const [input, stopReason] = await this.collectToolUseInput(request, toolName);
287
- if (stopReason === "max_tokens") {
288
- throw new CliError("INIT FAILED: Episode title output truncated", "Episode title output truncated.", {
289
- exitCode: EXIT_RUNTIME,
290
- required: ["complete episode title JSON within provider max_tokens"],
291
- received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
292
- nextSteps: ["Rerun init; if this repeats, split the source or provide explicit episode titles."],
293
- });
294
- }
295
- if (!input) {
296
- throw new CliError("INIT FAILED: Provider returned invalid episode title JSON", "Provider returned invalid episode title JSON.", {
297
- exitCode: EXIT_RUNTIME,
298
- required: [`tool_use block with name "${toolName}"`],
299
- received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
300
- nextSteps: ["Rerun init; title generation will retry before batch extraction."],
301
- });
302
- }
303
- return input;
304
- }
305
- async extractAssetCuration(_sourceText, script) {
306
- const context = buildAssetCurationContext(script);
307
- const prompt = "You decide which extracted locations should be merged into stable parent locations.\n" +
308
- "Use only the structured script context below. Do not decide from names alone.\n" +
309
- "Return JSON matching the configured schema.\n" +
310
- "\n" +
311
- "Requirements:\n" +
312
- "- This task only handles location merge decisions. Actors and props are pruned by deterministic scene-count rules outside this provider step.\n" +
313
- "- For locations, choose merge only when the location is clearly the same stable space as another existing location_id.\n" +
314
- "- Keep a location whenever its parent location is uncertain, it may need distinct visual continuity, or no stable parent exists.\n" +
315
- "- target_location_id must be an existing location_id when decision is merge; use null for keep.\n" +
316
- "- Reasons must cite evidence from the provided examples/usage, not a keyword rule.\n" +
317
- "- Do not rewrite actions or metadata; this task only decides asset curation.\n" +
318
- "\n" +
319
- "Script asset curation context:\n" +
320
- `${JSON.stringify(context)}\n`;
321
- const toolName = "submit_asset_curation";
322
- const request = { ...this.messageRequest(prompt, DEFAULT_MAX_TOKENS) };
323
- request["tools"] = [{
324
- name: toolName,
325
- description: "Return location merge decisions for the provided script.",
326
- input_schema: ASSET_CURATION_SCHEMA,
327
- }];
328
- request["tool_choice"] = { type: "tool", name: toolName };
329
- const [input, stopReason] = await this.collectToolUseInput(request, toolName);
330
- if (stopReason === "max_tokens") {
331
- throw new CliError("INIT FAILED: Asset curation output truncated", "Asset curation output truncated.", {
332
- exitCode: EXIT_RUNTIME,
333
- required: ["complete asset curation JSON within provider max_tokens"],
334
- received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
335
- nextSteps: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
336
- });
337
- }
338
- if (!input) {
339
- throw new CliError("INIT FAILED: Provider returned invalid asset curation JSON", "Provider returned invalid asset curation JSON.", {
340
- exitCode: EXIT_RUNTIME,
341
- required: [`tool_use block with name "${toolName}"`],
342
- received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
343
- nextSteps: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
344
- });
345
- }
346
- return input;
268
+ return this.runToolUse({
269
+ prompt,
270
+ maxTokens: 4096,
271
+ toolName: "submit_episode_titles",
272
+ description: "Return generated short Chinese titles for every input episode.",
273
+ schema: EPISODE_TITLE_EXTRACTION_SCHEMA,
274
+ truncatedTitle: "INIT FAILED: Episode title output truncated",
275
+ invalidTitle: "INIT FAILED: Provider returned invalid episode title JSON",
276
+ nextSteps: ["Rerun init; title generation will retry before batch extraction."],
277
+ });
347
278
  }
279
+ // Metadata uses the markdown + non-streaming `messages.create` path (like
280
+ // extractBatch), NOT a large-token tool_use call. The output (worldview + one
281
+ // short line per asset) is small, so DEFAULT_BATCH_MAX_TOKENS keeps it under
282
+ // NONSTREAMING_MAX_TOKENS and avoids the streaming long-connection the LiteLLM
283
+ // gateway kept dropping. parseMarkdownMetadata backfills from the deterministic
284
+ // baseline, so a partial response still yields a complete, schema-valid result.
348
285
  async extractMetadata(_sourceText, script) {
349
286
  const context = buildMetadataContext(script);
350
- const prompt = "You produce global metadata for a direct script conversion.\n" +
287
+ const prompt = "You produce global metadata (worldview + per-asset role/description) for a direct script conversion.\n" +
351
288
  "Use only the structured script context below. Do not invent plot events outside it.\n" +
352
- "Return JSON matching the configured schema.\n" +
353
289
  "\n" +
354
- "Requirements:\n" +
355
- `- worldview must be exactly one of: ${WORLDVIEW_VALUES.join(", ")}\n` +
356
- "- confidence is high/medium/low; use low only when the script context is insufficient.\n" +
357
- "- Every actor_id listed in the input must appear once with role_type 主角 or 配角 and a non-empty description.\n" +
358
- "- Every location_id and prop_id listed in the input must appear once with a non-empty description.\n" +
359
- "- Descriptions should be concise, useful for downstream asset generation, and grounded in names/states/examples.\n" +
360
- "- Do not rewrite action/dialogue source content; this task only writes metadata fields.\n" +
290
+ `${METADATA_MD_SPEC}\n` +
361
291
  "\n" +
362
292
  "Script metadata context:\n" +
363
293
  `${JSON.stringify(context)}\n`;
364
- const toolName = "submit_script_metadata";
365
- const request = { ...this.messageRequest(prompt, DEFAULT_MAX_TOKENS) };
366
- request["tools"] = [{
367
- name: toolName,
368
- description: "Return global script metadata (worldview, actors, locations, props).",
369
- input_schema: METADATA_EXTRACTION_SCHEMA,
370
- }];
371
- request["tool_choice"] = { type: "tool", name: toolName };
372
- const [input, stopReason] = await this.collectToolUseInput(request, toolName);
294
+ const request = this.messageRequest(prompt, DEFAULT_BATCH_MAX_TOKENS);
295
+ const [raw, stopReason] = await this.collectResponseText(request);
373
296
  if (stopReason === "max_tokens") {
374
297
  throw new CliError("INIT FAILED: Metadata output truncated", "Metadata output truncated.", {
375
298
  exitCode: EXIT_RUNTIME,
376
- required: ["complete metadata JSON within provider max_tokens"],
377
- received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
299
+ required: ["complete metadata markdown within provider max_tokens"],
300
+ received: [
301
+ `stop_reason: ${stopReason}`,
302
+ `max_tokens: ${request.max_tokens}`,
303
+ `raw chars: ${raw.length}`,
304
+ `tail: ${raw.slice(-160) || "<empty response>"}`,
305
+ ],
378
306
  nextSteps: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
307
+ errorCode: "PROVIDER_OUTPUT_TRUNCATED",
379
308
  });
380
309
  }
381
- if (!input) {
382
- throw new CliError("INIT FAILED: Provider returned invalid metadata JSON", "Provider returned invalid metadata JSON.", {
310
+ if (!raw.trim()) {
311
+ // Empty body with a non-max_tokens stop reason is how a content filter /
312
+ // refusal surfaces. Mark it distinctly instead of silently degrading to a
313
+ // name-only deterministic baseline.
314
+ throw new CliError("INIT FAILED: Provider returned invalid metadata", "Provider returned an empty metadata response (content filter / refusal).", {
383
315
  exitCode: EXIT_RUNTIME,
384
- required: [`tool_use block with name "${toolName}"`],
385
- received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
316
+ required: ["non-empty metadata markdown"],
317
+ received: [`stop_reason: ${stopReason || "unknown"}`, "raw chars: 0"],
386
318
  nextSteps: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
319
+ errorCode: "PROVIDER_CONTENT_FILTERED",
387
320
  });
388
321
  }
389
- return input;
322
+ return parseMarkdownMetadata(raw, script);
390
323
  }
391
- }
392
- // ---------------------------------------------------------------------------
393
- // Gemini provider (used by `scriptctl episode draft` by default)
394
- // ---------------------------------------------------------------------------
395
- /**
396
- * Google Gemini provider via REST API. No SDK dependency (uses fetch).
397
- *
398
- * Used as the default writer for `scriptctl episode draft`. The Anthropic provider
399
- * stays available for other internal extraction tasks (metadata / title generation /
400
- * direct-init batch extraction) where Claude tends to outperform Gemini on JSON
401
- * schema adherence.
402
- *
403
- * Env:
404
- * - `SCRIPTCTL_GEMINI_API_KEY` (or fallback `GEMINI_API_KEY`) required
405
- * - `SCRIPTCTL_GEMINI_BASE_URL` optional override
406
- * - `SCRIPTCTL_GEMINI_MODEL` optional default-model override
407
- */
408
- export class GeminiProvider {
409
- name = "gemini";
410
- apiKey;
411
- baseUrl;
412
- model;
413
- constructor(model) {
414
- const apiKey = (process.env.SCRIPTCTL_GEMINI_API_KEY ?? process.env.GEMINI_API_KEY ?? "").trim();
415
- if (!apiKey) {
416
- throw new CliError("DRAFT FAILED: provider not configured", "Provider credentials are not configured for this environment.", {
417
- exitCode: EXIT_RUNTIME,
418
- required: ["SCRIPTCTL_GEMINI_API_KEY (or GEMINI_API_KEY)"],
419
- received: ["no API key environment variable"],
420
- nextSteps: ["Run `scriptctl doctor` to identify missing configuration."],
421
- errorCode: "PROVIDER_AUTH_MISSING",
422
- });
423
- }
424
- this.apiKey = apiKey;
425
- const baseUrl = (process.env.SCRIPTCTL_GEMINI_BASE_URL ?? "https://generativelanguage.googleapis.com").trim();
426
- this.baseUrl = baseUrl.replace(/\/+$/, "");
427
- this.model = (model || process.env.SCRIPTCTL_GEMINI_MODEL || "gemini-2.5-pro").trim();
324
+ async extractEpisodeSynopsis(synopses, ctx) {
325
+ const beats = cleanSynopsisList(synopses);
326
+ const label = strOf(ctx["title"]).trim() || strOf(ctx["episode"]).trim() || "this group";
327
+ const prompt = "You stitch ordered plot beats into ONE coherent synopsis.\n" +
328
+ "The beats below are in chronological order and all belong to the same unit\n" +
329
+ `(${label}). Produce a single connected synopsis, not a list.\n` +
330
+ "\n" +
331
+ "Requirements:\n" +
332
+ "- 3-6 sentences, Chinese, plain text.\n" +
333
+ "- Summarize ONLY the given beats. Do not invent events or add anything not present.\n" +
334
+ "- Do not spoil beyond the beats; do not list assets.\n" +
335
+ "- Keep the chronological order of the beats.\n" +
336
+ "\n" +
337
+ "Plot beats (ordered):\n" +
338
+ `${JSON.stringify(beats)}\n`;
339
+ return this.runToolUse({
340
+ prompt,
341
+ maxTokens: 2048,
342
+ toolName: "submit_episode_synopsis",
343
+ description: "Return one coherent synopsis stitched from the ordered plot beats.",
344
+ schema: EPISODE_SYNOPSIS_SCHEMA,
345
+ truncatedTitle: "SUMMARY FAILED: Synopsis output truncated",
346
+ invalidTitle: "SUMMARY FAILED: Provider returned invalid synopsis JSON",
347
+ nextSteps: ["Rerun init; the summary stage degrades to joined beats if this repeats."],
348
+ });
428
349
  }
429
- /**
430
- * Plain-text completion. Used by `episode draft` to write a spec-md episode body.
431
- */
432
- async complete(prompt, maxTokens) {
433
- const tokens = Math.max(1024, Math.min(maxTokens ?? DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS));
434
- const url = `${this.baseUrl}/v1beta/models/${encodeURIComponent(this.model)}:generateContent?key=${encodeURIComponent(this.apiKey)}`;
435
- const body = {
436
- contents: [{ role: "user", parts: [{ text: prompt }] }],
437
- generationConfig: {
438
- maxOutputTokens: tokens,
439
- temperature: 0,
440
- },
441
- };
442
- let response;
443
- try {
444
- response = await fetch(url, {
445
- method: "POST",
446
- headers: { "Content-Type": "application/json" },
447
- body: JSON.stringify(body),
448
- });
449
- }
450
- catch (exc) {
451
- throw new CliError("DRAFT FAILED: provider unreachable", "Provider endpoint is unreachable.", {
452
- exitCode: EXIT_RUNTIME,
453
- required: ["reachable Gemini endpoint"],
454
- received: [String(exc.message ?? exc)],
455
- nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
456
- errorCode: "PROVIDER_NETWORK",
457
- });
458
- }
459
- const text = await response.text();
460
- if (!response.ok) {
461
- const isAuth = response.status === 401 || response.status === 403;
462
- const isRateLimit = response.status === 429;
463
- const publicMessage = isAuth
464
- ? "Provider rejected the request: authentication failed."
465
- : isRateLimit
466
- ? "Provider is rate-limited."
467
- : "Provider returned an HTTP error.";
468
- throw new CliError("DRAFT FAILED: provider returned error", publicMessage, {
469
- exitCode: EXIT_RUNTIME,
470
- required: ["HTTP 2xx from Gemini"],
471
- received: [`status: ${response.status}`, `body: ${text.slice(0, 320) || "<empty>"}`],
472
- nextSteps: isRateLimit
473
- ? ["Back off and retry after a short wait."]
474
- : isAuth
475
- ? ["Run `scriptctl doctor` to verify provider configuration."]
476
- : ["Retry once; if the issue persists, run `scriptctl doctor`."],
477
- errorCode: isAuth
478
- ? "PROVIDER_AUTH_REJECTED"
479
- : isRateLimit
480
- ? "PROVIDER_RATE_LIMITED"
481
- : "PROVIDER_HTTP_ERROR",
482
- });
483
- }
484
- let payload;
485
- try {
486
- payload = JSON.parse(text);
487
- }
488
- catch (exc) {
489
- throw new CliError("DRAFT FAILED: provider returned invalid response", "Provider returned a response that could not be parsed.", {
490
- exitCode: EXIT_RUNTIME,
491
- required: ["valid JSON response"],
492
- received: [`body head: ${text.slice(0, 160)}`, `parse error: ${exc.message}`],
493
- nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
494
- errorCode: "PROVIDER_INVALID_RESPONSE",
495
- });
496
- }
497
- const candidate = payload.candidates?.[0];
498
- const finishReason = strOf(candidate?.finishReason ?? "");
499
- if (finishReason === "MAX_TOKENS") {
500
- throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
501
- exitCode: EXIT_RUNTIME,
502
- required: ["complete markdown within provider max_tokens"],
503
- received: [`finishReason: MAX_TOKENS`, `maxOutputTokens: ${tokens}`],
504
- nextSteps: [
505
- "Re-run with --regen, or split the episode outline into smaller scopes.",
506
- ],
507
- errorCode: "PROVIDER_OUTPUT_TRUNCATED",
508
- });
509
- }
510
- if (finishReason && finishReason !== "STOP" && finishReason !== "MAX_TOKENS") {
511
- // SAFETY / RECITATION / OTHER — surface to agent rather than silently treat as success.
512
- throw new CliError("DRAFT FAILED: provider stopped abnormally", "Provider stopped before completing the response.", {
513
- exitCode: EXIT_RUNTIME,
514
- required: ["finishReason: STOP"],
515
- received: [`finishReason: ${finishReason}`],
516
- nextSteps: ["Inspect prompt / outline for triggering content; retry with --regen if it looks transient."],
517
- errorCode: "PROVIDER_ABNORMAL_STOP",
518
- });
519
- }
520
- const parts = candidate?.content?.parts ?? [];
521
- const out = parts.map((p) => (typeof p.text === "string" ? p.text : "")).join("").trim();
522
- if (!out) {
523
- throw new CliError("DRAFT FAILED: provider returned empty content", "Provider returned an empty response.", {
524
- exitCode: EXIT_RUNTIME,
525
- required: ["non-empty candidate content"],
526
- received: [`finishReason: ${finishReason || "<unset>"}`, `parts: ${parts.length}`],
527
- nextSteps: ["Retry once; if it persists, run `scriptctl doctor`."],
528
- errorCode: "PROVIDER_EMPTY_RESPONSE",
529
- });
530
- }
531
- return out;
350
+ async extractScriptSynopsis(synopses, ctx) {
351
+ const episodeSynopses = cleanSynopsisList(synopses);
352
+ const title = strOf(ctx["title"]).trim();
353
+ const prompt = "You produce a whole-script overview from per-episode synopses.\n" +
354
+ `Script title: ${title || "(untitled)"}.\n` +
355
+ "Use ONLY the episode synopses below; do not invent plot, characters, or facts.\n" +
356
+ "Return JSON matching the configured schema.\n" +
357
+ "\n" +
358
+ "Requirements:\n" +
359
+ "- synopsis: a connected whole-plot overview of the entire script, Chinese, plain text.\n" +
360
+ "- theme: the central theme / 主旨, one short Chinese phrase or sentence.\n" +
361
+ "- logline: a single Chinese sentence capturing the whole story.\n" +
362
+ "- style: genre / tone as free Chinese text (e.g. 都市甜宠 / 悬疑复仇).\n" +
363
+ "- main_characters: the main people only, each with name and a short role (主角/配角/身份).\n" +
364
+ "- Ground everything in the episode synopses; if information is missing, keep it brief rather than inventing.\n" +
365
+ "\n" +
366
+ "Episode synopses (ordered):\n" +
367
+ `${JSON.stringify(episodeSynopses)}\n`;
368
+ return this.runToolUse({
369
+ prompt,
370
+ maxTokens: 4096,
371
+ toolName: "submit_script_synopsis",
372
+ description: "Return the whole-script overview (synopsis, theme, logline, style, main_characters).",
373
+ schema: SCRIPT_SYNOPSIS_SCHEMA,
374
+ truncatedTitle: "SUMMARY FAILED: Script synopsis output truncated",
375
+ invalidTitle: "SUMMARY FAILED: Provider returned invalid script synopsis JSON",
376
+ nextSteps: ["Rerun init; the summary stage leaves overview fields empty if this repeats."],
377
+ });
532
378
  }
533
379
  }
534
380
  function textFromResponse(response) {
@@ -562,13 +408,11 @@ export function makeProvider(name, model) {
562
408
  return new MockProvider();
563
409
  if (name === "anthropic")
564
410
  return new AnthropicProvider(model);
565
- if (name === "gemini")
566
- return new GeminiProvider(model);
567
411
  throw new CliError("INIT FAILED: Unsupported provider", "Unsupported provider.", {
568
412
  exitCode: EXIT_USAGE,
569
- required: ["--provider: anthropic | gemini | mock"],
413
+ required: ["--provider: anthropic | mock"],
570
414
  received: [`--provider: ${name}`],
571
- nextSteps: ["Use --provider anthropic, --provider gemini, or --provider mock."],
415
+ nextSteps: ["Use --provider anthropic or --provider mock."],
572
416
  });
573
417
  }
574
418
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/infra/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/infra/providers.ts"],"names":[],"mappings":"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"}