@lingjingai/scriptctl 0.8.3 → 0.9.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/dist/common.d.ts CHANGED
@@ -42,6 +42,10 @@ export declare const EFFECTIVE_FROM_VALUES: Set<string>;
42
42
  export declare const ACTOR_REUSE_SCENE_LIMIT = 1;
43
43
  export declare const PROP_REUSE_SCENE_LIMIT = 1;
44
44
  export declare const MARKDOWN_BATCH_PROMPT_SPEC: string;
45
+ export type JsonSchema = Record<string, unknown>;
46
+ export declare const METADATA_EXTRACTION_SCHEMA: JsonSchema;
47
+ export declare const ASSET_CURATION_SCHEMA: JsonSchema;
48
+ export declare const EPISODE_TITLE_EXTRACTION_SCHEMA: JsonSchema;
45
49
  export interface Report {
46
50
  title?: string;
47
51
  message?: string;
package/dist/common.js CHANGED
@@ -178,6 +178,93 @@ export const MARKDOWN_BATCH_PROMPT_SPEC = "Output format: a single markdown docu
178
178
  " An item without `:` carries no description.\n" +
179
179
  "- Lines marked [meta] in Batch Source are read-only metadata; do not promote\n" +
180
180
  " them to actions.\n";
181
+ export const METADATA_EXTRACTION_SCHEMA = {
182
+ type: "object",
183
+ required: ["confidence", "worldview", "worldview_raw", "actors", "locations", "props"],
184
+ additionalProperties: false,
185
+ properties: {
186
+ confidence: { type: "string", enum: ["high", "medium", "low"] },
187
+ worldview: { type: "string", enum: WORLDVIEW_VALUES },
188
+ worldview_raw: { type: "string" },
189
+ actors: {
190
+ type: "array",
191
+ items: {
192
+ type: "object",
193
+ required: ["actor_id", "role_type", "description"],
194
+ additionalProperties: false,
195
+ properties: {
196
+ actor_id: { type: "string" },
197
+ role_type: { type: "string", enum: ROLE_TYPE_VALUES },
198
+ description: { type: "string" },
199
+ },
200
+ },
201
+ },
202
+ locations: {
203
+ type: "array",
204
+ items: {
205
+ type: "object",
206
+ required: ["location_id", "description"],
207
+ additionalProperties: false,
208
+ properties: {
209
+ location_id: { type: "string" },
210
+ description: { type: "string" },
211
+ },
212
+ },
213
+ },
214
+ props: {
215
+ type: "array",
216
+ items: {
217
+ type: "object",
218
+ required: ["prop_id", "description"],
219
+ additionalProperties: false,
220
+ properties: {
221
+ prop_id: { type: "string" },
222
+ description: { type: "string" },
223
+ },
224
+ },
225
+ },
226
+ },
227
+ };
228
+ export const ASSET_CURATION_SCHEMA = {
229
+ type: "object",
230
+ required: ["locations"],
231
+ additionalProperties: false,
232
+ properties: {
233
+ locations: {
234
+ type: "array",
235
+ items: {
236
+ type: "object",
237
+ required: ["location_id", "decision", "target_location_id", "reason"],
238
+ additionalProperties: false,
239
+ properties: {
240
+ location_id: { type: "string" },
241
+ decision: { type: "string", enum: ["keep", "merge"] },
242
+ target_location_id: { type: ["string", "null"] },
243
+ reason: { type: "string" },
244
+ },
245
+ },
246
+ },
247
+ },
248
+ };
249
+ export const EPISODE_TITLE_EXTRACTION_SCHEMA = {
250
+ type: "object",
251
+ required: ["episode_titles"],
252
+ additionalProperties: false,
253
+ properties: {
254
+ episode_titles: {
255
+ type: "array",
256
+ items: {
257
+ type: "object",
258
+ required: ["episode", "title"],
259
+ additionalProperties: false,
260
+ properties: {
261
+ episode: { type: "integer" },
262
+ title: { type: "string" },
263
+ },
264
+ },
265
+ },
266
+ },
267
+ };
181
268
  export class CliError extends Error {
182
269
  title;
183
270
  exitCode;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -13,25 +13,53 @@ export declare class MockProvider implements ProviderLike {
13
13
  extractAssetCuration(_sourceText: string, _script: Dict): Dict;
14
14
  extractEpisodeTitles(sourceText: string, episodePlan: Dict): Dict;
15
15
  }
16
- export declare class LiteLLMProvider implements ProviderLike {
16
+ export declare class AnthropicProvider implements ProviderLike {
17
17
  readonly name = "anthropic";
18
+ private readonly client;
18
19
  private readonly model;
19
- private readonly modelId;
20
- private readonly configuredMaxTokens;
21
- constructor(modelId: string);
22
- private capTokens;
20
+ constructor(model: string);
21
+ private messageRequest;
22
+ private collectResponseText;
23
+ /**
24
+ * Run a request that forces a specific tool call via `tool_choice`, then return that
25
+ * tool's `input` dict (already parsed by the SDK — no JSON.parse needed). Returns
26
+ * `null` when the provider didn't emit the expected tool_use block (e.g. refusal,
27
+ * truncated before tool call, gateway dropped tools field), letting the caller
28
+ * raise a method-specific CliError.
29
+ */
30
+ private collectToolUseInput;
31
+ /**
32
+ * Generic completion entry point. Used by episode subcommand's gemini-writer to draft
33
+ * one episode's spec markdown from the assembled prompt. Throws CliError when the
34
+ * provider truncates output (so the caller can surface a deterministic error rather
35
+ * than committing a half-baked episode).
36
+ */
23
37
  complete(prompt: string, maxTokens?: number): Promise<string>;
24
38
  extractEpisode(sourceText: string, episodePlan: Dict): Promise<Dict>;
25
39
  extractBatch(sourceText: string, batchPlan: Dict): Promise<Dict>;
26
40
  extractEpisodeTitles(sourceText: string, episodePlan: Dict): Promise<Dict>;
27
41
  extractAssetCuration(_sourceText: string, script: Dict): Promise<Dict>;
28
42
  extractMetadata(_sourceText: string, script: Dict): Promise<Dict>;
29
- private extractStructured;
30
43
  }
44
+ /**
45
+ * Google Gemini provider via REST API. No SDK dependency (uses fetch).
46
+ *
47
+ * Used as the default writer for `scriptctl episode draft`. The Anthropic provider
48
+ * stays available for other internal extraction tasks (metadata / title generation /
49
+ * direct-init batch extraction) where Claude tends to outperform Gemini on JSON
50
+ * schema adherence.
51
+ *
52
+ * Env:
53
+ * - `SCRIPTCTL_GEMINI_API_KEY` (or fallback `GEMINI_API_KEY`) required
54
+ * - `SCRIPTCTL_GEMINI_BASE_URL` optional override
55
+ * - `SCRIPTCTL_GEMINI_MODEL` optional default-model override
56
+ */
31
57
  export declare class GeminiProvider implements ProviderLike {
32
58
  readonly name = "gemini";
59
+ private readonly apiKey;
60
+ private readonly baseUrl;
33
61
  private readonly model;
34
- constructor(modelId?: string);
62
+ constructor(model?: string);
35
63
  /**
36
64
  * Plain-text completion. Used by `episode draft` to write a spec-md episode body.
37
65
  */
@@ -1,8 +1,5 @@
1
- import { createGoogleGenerativeAI } from "@ai-sdk/google";
2
- import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
3
- import { APICallError, NoObjectGeneratedError, RetryError, extractJsonMiddleware, generateObject, generateText, wrapLanguageModel, } from "ai";
4
- import { z } from "zod";
5
- import { CliError, DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS, EXIT_RUNTIME, EXIT_USAGE, MARKDOWN_BATCH_PROMPT_SPEC, ROLE_TYPE_VALUES, WORLDVIEW_VALUES, } from "../common.js";
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";
6
3
  import { _md_push_asset, _normalize_speaker_list, buildAssetCurationContext, buildEpisodeTitleContext, buildMetadataContext, deterministicEpisodeShortTitle, deterministicExtractEpisode, deterministicExtractMetadata, episodesNeedingGeneratedTitles, formatBatchSource, parseMarkdownBatch, } from "../domain/direct-core.js";
7
4
  function strOf(v) {
8
5
  if (v === null || v === undefined)
@@ -16,43 +13,6 @@ function asList(v) {
16
13
  return Array.isArray(v) ? v : [];
17
14
  }
18
15
  // ---------------------------------------------------------------------------
19
- // Zod schemas for structured extraction (LLM JSON-mode output)
20
- // ---------------------------------------------------------------------------
21
- const ROLE_TYPE_TUPLE = ROLE_TYPE_VALUES;
22
- const WORLDVIEW_TUPLE = WORLDVIEW_VALUES;
23
- const METADATA_SCHEMA = z.object({
24
- confidence: z.enum(["high", "medium", "low"]),
25
- worldview: z.enum(WORLDVIEW_TUPLE),
26
- worldview_raw: z.string(),
27
- actors: z.array(z.object({
28
- actor_id: z.string(),
29
- role_type: z.enum(ROLE_TYPE_TUPLE),
30
- description: z.string(),
31
- })),
32
- locations: z.array(z.object({
33
- location_id: z.string(),
34
- description: z.string(),
35
- })),
36
- props: z.array(z.object({
37
- prop_id: z.string(),
38
- description: z.string(),
39
- })),
40
- });
41
- const ASSET_CURATION_SCHEMA = z.object({
42
- locations: z.array(z.object({
43
- location_id: z.string(),
44
- decision: z.enum(["keep", "merge"]),
45
- target_location_id: z.string().nullable(),
46
- reason: z.string(),
47
- })),
48
- });
49
- const EPISODE_TITLE_SCHEMA = z.object({
50
- episode_titles: z.array(z.object({
51
- episode: z.number().int(),
52
- title: z.string(),
53
- })),
54
- });
55
- // ---------------------------------------------------------------------------
56
16
  // Mock provider
57
17
  // ---------------------------------------------------------------------------
58
18
  export class MockProvider {
@@ -138,23 +98,13 @@ export class MockProvider {
138
98
  }
139
99
  }
140
100
  // ---------------------------------------------------------------------------
141
- // LiteLLM provider — talks to PROJECT_LITELLM_GATEWAY via OpenAI-compatible
142
- // /v1/chat/completions. Backs every Claude / DeepSeek / etc. model fronted by
143
- // the gateway. The protocol switch from /v1/messages (Anthropic) to
144
- // /v1/chat/completions is intentional: it lets gateway-routed models that lack
145
- // Anthropic tool_use support (e.g. deepseek-v4-pro-packy) reuse the same
146
- // structured-output path via JSON-mode schemas.
147
- //
148
- // `name = "anthropic"` is preserved (not renamed to "litellm") so previously
149
- // written checkpoint metadata (`{"provider": "anthropic"}`) keeps validating
150
- // after upgrade — no forced re-extraction.
101
+ // Anthropic provider
151
102
  // ---------------------------------------------------------------------------
152
- export class LiteLLMProvider {
103
+ export class AnthropicProvider {
153
104
  name = "anthropic";
105
+ client;
154
106
  model;
155
- modelId;
156
- configuredMaxTokens;
157
- constructor(modelId) {
107
+ constructor(model) {
158
108
  const apiKey = (process.env.PROJECT_LITELLM_GATEWAY_API_KEY ?? "").trim();
159
109
  if (!apiKey) {
160
110
  throw new CliError("INIT FAILED: provider not configured", "Provider credentials are not configured for this environment.", {
@@ -165,78 +115,83 @@ export class LiteLLMProvider {
165
115
  errorCode: "PROVIDER_AUTH_MISSING",
166
116
  });
167
117
  }
168
- const baseURL = (process.env.PROJECT_LITELLM_GATEWAY_BASE_URL ?? "").trim();
169
- if (!baseURL) {
170
- throw new CliError("INIT FAILED: provider not configured", "Provider gateway URL is not configured for this environment.", {
171
- exitCode: EXIT_RUNTIME,
172
- required: ["PROJECT_LITELLM_GATEWAY_BASE_URL"],
173
- received: ["no gateway base URL environment variable"],
174
- nextSteps: ["Run `scriptctl doctor` to identify missing configuration."],
175
- errorCode: "PROVIDER_AUTH_MISSING",
176
- });
177
- }
178
- // supportsStructuredOutputs: true makes ai-sdk send the full JSON schema
179
- // through `response_format: { type: "json_schema", json_schema: {...} }`
180
- // instead of dropping the schema and downgrading to `{type:"json_object"}`.
181
- // Without this flag, LiteLLM downstream has no schema to forward to Claude
182
- // and the model has to guess the top-level shape from the prompt — that's
183
- // why it returned a bare array instead of { episode_titles: [...] }.
184
- //
185
- // LiteLLM must accept OpenAI-style json_schema response_format and
186
- // translate it for the underlying provider. If a particular gateway model
187
- // can't translate (e.g. some packy models), requests will 400; in that
188
- // case fall back to overriding model id rather than disabling this flag.
189
- const provider = createOpenAICompatible({
190
- name: "litellm",
191
- apiKey,
192
- baseURL,
193
- supportsStructuredOutputs: true,
194
- });
195
- this.modelId = modelId;
196
- // Even with structured outputs forwarded, some Claude-family models
197
- // continue to wrap output in ```json ... ``` fences. extractJsonMiddleware
198
- // strips the fence before ai-sdk's JSON.parse runs.
199
- this.model = wrapLanguageModel({
200
- model: provider(modelId),
201
- middleware: extractJsonMiddleware(),
202
- });
203
- const raw = (process.env.SCRIPTCTL_MAX_TOKENS ?? "").trim();
204
- let mt = DEFAULT_MAX_TOKENS;
205
- if (raw) {
206
- const parsed = parseInt(raw, 10);
118
+ const baseUrl = (process.env.PROJECT_LITELLM_GATEWAY_BASE_URL ?? "").trim();
119
+ const opts = { apiKey };
120
+ if (baseUrl)
121
+ opts.baseURL = baseUrl;
122
+ this.client = new Anthropic(opts);
123
+ this.model = model;
124
+ }
125
+ messageRequest(prompt, maxTokens) {
126
+ const rawMaxTokens = (process.env.SCRIPTCTL_MAX_TOKENS ?? "").trim();
127
+ let configuredMaxTokens = DEFAULT_MAX_TOKENS;
128
+ if (rawMaxTokens) {
129
+ const parsed = parseInt(rawMaxTokens, 10);
207
130
  if (!Number.isNaN(parsed))
208
- mt = parsed;
131
+ configuredMaxTokens = parsed;
209
132
  }
210
- this.configuredMaxTokens = Math.max(1024, Math.min(mt, DEFAULT_MAX_TOKENS));
211
- }
212
- capTokens(maxTokens, fallback) {
213
- const requested = maxTokens !== undefined ? maxTokens : fallback;
214
- return Math.max(1024, Math.min(requested, this.configuredMaxTokens, DEFAULT_MAX_TOKENS));
133
+ let tokenBudget = maxTokens !== undefined ? maxTokens : configuredMaxTokens;
134
+ tokenBudget = Math.max(1024, Math.min(tokenBudget, configuredMaxTokens, DEFAULT_MAX_TOKENS));
135
+ const request = {
136
+ model: this.model,
137
+ max_tokens: tokenBudget,
138
+ messages: [{ role: "user", content: prompt }],
139
+ };
140
+ if (this.model.endsWith("-think")) {
141
+ const rawBudget = (process.env.SCRIPTCTL_THINKING_BUDGET_TOKENS ?? "").trim();
142
+ let budget = DEFAULT_THINKING_BUDGET_TOKENS;
143
+ if (rawBudget) {
144
+ const parsed = parseInt(rawBudget, 10);
145
+ if (!Number.isNaN(parsed))
146
+ budget = parsed;
147
+ }
148
+ request.thinking = { type: "enabled", budget_tokens: Math.max(1024, Math.min(budget, tokenBudget - 1000)) };
149
+ }
150
+ return request;
215
151
  }
216
- async complete(prompt, maxTokens) {
217
- const max = this.capTokens(maxTokens, DEFAULT_BATCH_MAX_TOKENS);
218
- let raw;
219
- let finishReason;
220
- try {
221
- const result = await generateText({
222
- model: this.model,
223
- prompt,
224
- maxOutputTokens: max,
225
- maxRetries: 0,
226
- });
227
- raw = result.text.trim();
228
- finishReason = strOf(result.finishReason);
152
+ 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)];
229
158
  }
230
- catch (exc) {
231
- throw translateLiteLLMError(exc, "DRAFT FAILED");
159
+ const response = await this.client.messages.create(request);
160
+ return [textFromResponse(response), strOf(response.stop_reason)];
161
+ }
162
+ /**
163
+ * Run a request that forces a specific tool call via `tool_choice`, then return that
164
+ * tool's `input` dict (already parsed by the SDK — no JSON.parse needed). Returns
165
+ * `null` when the provider didn't emit the expected tool_use block (e.g. refusal,
166
+ * truncated before tool call, gateway dropped tools field), letting the caller
167
+ * raise a method-specific CliError.
168
+ */
169
+ async collectToolUseInput(request, toolName) {
170
+ const maxTokens = Number(request["max_tokens"] ?? 0);
171
+ if (maxTokens > NONSTREAMING_MAX_TOKENS) {
172
+ const stream = await this.client.messages.stream(request);
173
+ const message = (await stream.finalMessage());
174
+ return [findToolUseInput(message.content ?? [], toolName), strOf(message.stop_reason)];
232
175
  }
233
- if (finishReason === "length") {
176
+ const response = (await this.client.messages.create(request));
177
+ return [findToolUseInput(response.content ?? [], toolName), strOf(response.stop_reason)];
178
+ }
179
+ /**
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).
184
+ */
185
+ async complete(prompt, maxTokens) {
186
+ const request = this.messageRequest(prompt, maxTokens ?? DEFAULT_BATCH_MAX_TOKENS);
187
+ const [raw, stopReason] = await this.collectResponseText(request);
188
+ if (stopReason === "max_tokens") {
234
189
  throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
235
190
  exitCode: EXIT_RUNTIME,
236
191
  required: ["complete markdown within provider max_tokens"],
237
192
  received: [
238
- `finishReason: ${finishReason}`,
239
- `max_tokens: ${max}`,
193
+ `stop_reason: ${stopReason}`,
194
+ `max_tokens: ${request.max_tokens}`,
240
195
  `raw chars: ${raw.length}`,
241
196
  `tail: ${raw.slice(-160) || "<empty response>"}`,
242
197
  ],
@@ -252,7 +207,7 @@ export class LiteLLMProvider {
252
207
  return this.extractBatch(sourceText, episodePlan);
253
208
  }
254
209
  async extractBatch(sourceText, batchPlan) {
255
- const context = isList(batchPlan["context"]) || (typeof batchPlan["context"] === "object" && batchPlan["context"] !== null)
210
+ const context = isList(batchPlan["context"]) || typeof batchPlan["context"] === "object" && batchPlan["context"] !== null
256
211
  ? batchPlan["context"]
257
212
  : {};
258
213
  const numberedSource = formatBatchSource(sourceText, batchPlan);
@@ -268,29 +223,15 @@ export class LiteLLMProvider {
268
223
  "\n" +
269
224
  "Batch Source:\n" +
270
225
  `${numberedSource}\n`;
271
- const max = this.capTokens(DEFAULT_BATCH_MAX_TOKENS, DEFAULT_BATCH_MAX_TOKENS);
272
- let raw;
273
- let finishReason;
274
- try {
275
- const result = await generateText({
276
- model: this.model,
277
- prompt,
278
- maxOutputTokens: max,
279
- maxRetries: 0,
280
- });
281
- raw = result.text.trim();
282
- finishReason = strOf(result.finishReason);
283
- }
284
- catch (exc) {
285
- throw translateLiteLLMError(exc, "INIT FAILED");
286
- }
287
- if (finishReason === "length") {
226
+ const request = this.messageRequest(prompt, DEFAULT_BATCH_MAX_TOKENS);
227
+ const [raw, stopReason] = await this.collectResponseText(request);
228
+ if (stopReason === "max_tokens") {
288
229
  throw new CliError("INIT FAILED: Provider output truncated", "Provider output truncated.", {
289
230
  exitCode: EXIT_RUNTIME,
290
231
  required: ["complete markdown within provider max_tokens"],
291
232
  received: [
292
- `finishReason: ${finishReason}`,
293
- `max_tokens: ${max}`,
233
+ `stop_reason: ${stopReason}`,
234
+ `max_tokens: ${request.max_tokens}`,
294
235
  `raw chars: ${raw.length}`,
295
236
  `tail: ${raw.slice(-160) || "<empty response>"}`,
296
237
  ],
@@ -318,19 +259,32 @@ export class LiteLLMProvider {
318
259
  "\n" +
319
260
  "Episodes needing titles:\n" +
320
261
  `${JSON.stringify(context)}\n`;
321
- return this.extractStructured({
322
- prompt,
323
- maxTokens: 4096,
324
- schema: EPISODE_TITLE_SCHEMA,
325
- title: "INIT FAILED: Episode title output truncated",
326
- truncationMessage: "Episode title output truncated.",
327
- required: ["complete episode title JSON within provider max_tokens"],
328
- invalidTitle: "INIT FAILED: Provider returned invalid episode title JSON",
329
- invalidMessage: "Provider returned invalid episode title JSON.",
330
- invalidRequired: ["valid JSON matching the configured schema"],
331
- truncationNext: ["Rerun init; if this repeats, split the source or provide explicit episode titles."],
332
- invalidNext: ["Rerun init; title generation will retry before batch extraction."],
333
- });
262
+ const toolName = "submit_episode_titles";
263
+ const request = { ...this.messageRequest(prompt, 4096) };
264
+ request["tools"] = [{
265
+ name: toolName,
266
+ description: "Return generated short Chinese titles for every input episode.",
267
+ input_schema: EPISODE_TITLE_EXTRACTION_SCHEMA,
268
+ }];
269
+ request["tool_choice"] = { type: "tool", name: toolName };
270
+ const [input, stopReason] = await this.collectToolUseInput(request, toolName);
271
+ if (stopReason === "max_tokens") {
272
+ throw new CliError("INIT FAILED: Episode title output truncated", "Episode title output truncated.", {
273
+ exitCode: EXIT_RUNTIME,
274
+ required: ["complete episode title JSON within provider max_tokens"],
275
+ received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
276
+ nextSteps: ["Rerun init; if this repeats, split the source or provide explicit episode titles."],
277
+ });
278
+ }
279
+ if (!input) {
280
+ throw new CliError("INIT FAILED: Provider returned invalid episode title JSON", "Provider returned invalid episode title JSON.", {
281
+ exitCode: EXIT_RUNTIME,
282
+ required: [`tool_use block with name "${toolName}"`],
283
+ received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
284
+ nextSteps: ["Rerun init; title generation will retry before batch extraction."],
285
+ });
286
+ }
287
+ return input;
334
288
  }
335
289
  async extractAssetCuration(_sourceText, script) {
336
290
  const context = buildAssetCurationContext(script);
@@ -348,19 +302,32 @@ export class LiteLLMProvider {
348
302
  "\n" +
349
303
  "Script asset curation context:\n" +
350
304
  `${JSON.stringify(context)}\n`;
351
- return this.extractStructured({
352
- prompt,
353
- maxTokens: DEFAULT_MAX_TOKENS,
354
- schema: ASSET_CURATION_SCHEMA,
355
- title: "INIT FAILED: Asset curation output truncated",
356
- truncationMessage: "Asset curation output truncated.",
357
- required: ["complete asset curation JSON within provider max_tokens"],
358
- invalidTitle: "INIT FAILED: Provider returned invalid asset curation JSON",
359
- invalidMessage: "Provider returned invalid asset curation JSON.",
360
- invalidRequired: ["valid JSON matching the configured schema"],
361
- truncationNext: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
362
- invalidNext: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
363
- });
305
+ const toolName = "submit_asset_curation";
306
+ const request = { ...this.messageRequest(prompt, DEFAULT_MAX_TOKENS) };
307
+ request["tools"] = [{
308
+ name: toolName,
309
+ description: "Return location merge decisions for the provided script.",
310
+ input_schema: ASSET_CURATION_SCHEMA,
311
+ }];
312
+ request["tool_choice"] = { type: "tool", name: toolName };
313
+ const [input, stopReason] = await this.collectToolUseInput(request, toolName);
314
+ if (stopReason === "max_tokens") {
315
+ throw new CliError("INIT FAILED: Asset curation output truncated", "Asset curation output truncated.", {
316
+ exitCode: EXIT_RUNTIME,
317
+ required: ["complete asset curation JSON within provider max_tokens"],
318
+ received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
319
+ nextSteps: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
320
+ });
321
+ }
322
+ if (!input) {
323
+ throw new CliError("INIT FAILED: Provider returned invalid asset curation JSON", "Provider returned invalid asset curation JSON.", {
324
+ exitCode: EXIT_RUNTIME,
325
+ required: [`tool_use block with name "${toolName}"`],
326
+ received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
327
+ nextSteps: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
328
+ });
329
+ }
330
+ return input;
364
331
  }
365
332
  async extractMetadata(_sourceText, script) {
366
333
  const context = buildMetadataContext(script);
@@ -378,68 +345,56 @@ export class LiteLLMProvider {
378
345
  "\n" +
379
346
  "Script metadata context:\n" +
380
347
  `${JSON.stringify(context)}\n`;
381
- return this.extractStructured({
382
- prompt,
383
- maxTokens: DEFAULT_MAX_TOKENS,
384
- schema: METADATA_SCHEMA,
385
- title: "INIT FAILED: Metadata output truncated",
386
- truncationMessage: "Metadata output truncated.",
387
- required: ["complete metadata JSON within provider max_tokens"],
388
- invalidTitle: "INIT FAILED: Provider returned invalid metadata JSON",
389
- invalidMessage: "Provider returned invalid metadata JSON.",
390
- invalidRequired: ["valid JSON matching the configured schema"],
391
- truncationNext: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
392
- invalidNext: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
393
- });
394
- }
395
- async extractStructured(args) {
396
- const max = this.capTokens(args.maxTokens, args.maxTokens);
397
- try {
398
- const result = await generateObject({
399
- model: this.model,
400
- prompt: args.prompt,
401
- schema: args.schema,
402
- maxOutputTokens: max,
403
- maxRetries: 0,
348
+ const toolName = "submit_script_metadata";
349
+ const request = { ...this.messageRequest(prompt, DEFAULT_MAX_TOKENS) };
350
+ request["tools"] = [{
351
+ name: toolName,
352
+ description: "Return global script metadata (worldview, actors, locations, props).",
353
+ input_schema: METADATA_EXTRACTION_SCHEMA,
354
+ }];
355
+ request["tool_choice"] = { type: "tool", name: toolName };
356
+ const [input, stopReason] = await this.collectToolUseInput(request, toolName);
357
+ if (stopReason === "max_tokens") {
358
+ throw new CliError("INIT FAILED: Metadata output truncated", "Metadata output truncated.", {
359
+ exitCode: EXIT_RUNTIME,
360
+ required: ["complete metadata JSON within provider max_tokens"],
361
+ received: [`stop_reason: ${stopReason}`, `max_tokens: ${request["max_tokens"]}`],
362
+ nextSteps: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
404
363
  });
405
- const finishReason = strOf(result.finishReason);
406
- if (finishReason === "length") {
407
- throw new CliError(args.title, args.truncationMessage, {
408
- exitCode: EXIT_RUNTIME,
409
- required: args.required,
410
- received: [`finishReason: ${finishReason}`, `max_tokens: ${max}`],
411
- nextSteps: args.truncationNext,
412
- });
413
- }
414
- return result.object;
415
364
  }
416
- catch (exc) {
417
- if (exc instanceof CliError)
418
- throw exc;
419
- if (NoObjectGeneratedError.isInstance(exc)) {
420
- const cause = exc.cause;
421
- throw new CliError(args.invalidTitle, args.invalidMessage, {
422
- exitCode: EXIT_RUNTIME,
423
- required: args.invalidRequired,
424
- received: [
425
- `error: ${exc.message?.slice(0, 160) || "no object generated"}`,
426
- ...(cause?.message ? [`cause: ${cause.message.slice(0, 160)}`] : []),
427
- ],
428
- nextSteps: args.invalidNext,
429
- });
430
- }
431
- throw translateLiteLLMError(exc, "INIT FAILED");
365
+ if (!input) {
366
+ throw new CliError("INIT FAILED: Provider returned invalid metadata JSON", "Provider returned invalid metadata JSON.", {
367
+ exitCode: EXIT_RUNTIME,
368
+ required: [`tool_use block with name "${toolName}"`],
369
+ received: [`stop_reason: ${stopReason || "unknown"}`, `missing tool_use block: ${toolName}`],
370
+ nextSteps: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
371
+ });
432
372
  }
373
+ return input;
433
374
  }
434
375
  }
435
376
  // ---------------------------------------------------------------------------
436
- // Gemini provider @ai-sdk/google direct to Google AI Studio.
437
- // Used by `scriptctl episode draft` when --provider gemini.
377
+ // Gemini provider (used by `scriptctl episode draft` by default)
438
378
  // ---------------------------------------------------------------------------
379
+ /**
380
+ * Google Gemini provider via REST API. No SDK dependency (uses fetch).
381
+ *
382
+ * Used as the default writer for `scriptctl episode draft`. The Anthropic provider
383
+ * stays available for other internal extraction tasks (metadata / title generation /
384
+ * direct-init batch extraction) where Claude tends to outperform Gemini on JSON
385
+ * schema adherence.
386
+ *
387
+ * Env:
388
+ * - `SCRIPTCTL_GEMINI_API_KEY` (or fallback `GEMINI_API_KEY`) required
389
+ * - `SCRIPTCTL_GEMINI_BASE_URL` optional override
390
+ * - `SCRIPTCTL_GEMINI_MODEL` optional default-model override
391
+ */
439
392
  export class GeminiProvider {
440
393
  name = "gemini";
394
+ apiKey;
395
+ baseUrl;
441
396
  model;
442
- constructor(modelId) {
397
+ constructor(model) {
443
398
  const apiKey = (process.env.SCRIPTCTL_GEMINI_API_KEY ?? process.env.GEMINI_API_KEY ?? "").trim();
444
399
  if (!apiKey) {
445
400
  throw new CliError("DRAFT FAILED: provider not configured", "Provider credentials are not configured for this environment.", {
@@ -450,169 +405,138 @@ export class GeminiProvider {
450
405
  errorCode: "PROVIDER_AUTH_MISSING",
451
406
  });
452
407
  }
453
- const baseURL = (process.env.SCRIPTCTL_GEMINI_BASE_URL ?? "").trim();
454
- const opts = { apiKey };
455
- if (baseURL)
456
- opts.baseURL = baseURL.replace(/\/+$/, "");
457
- const provider = createGoogleGenerativeAI(opts);
458
- const id = (modelId || process.env.SCRIPTCTL_GEMINI_MODEL || "gemini-2.5-pro").trim();
459
- this.model = provider(id);
408
+ this.apiKey = apiKey;
409
+ const baseUrl = (process.env.SCRIPTCTL_GEMINI_BASE_URL ?? "https://generativelanguage.googleapis.com").trim();
410
+ this.baseUrl = baseUrl.replace(/\/+$/, "");
411
+ this.model = (model || process.env.SCRIPTCTL_GEMINI_MODEL || "gemini-2.5-pro").trim();
460
412
  }
461
413
  /**
462
414
  * Plain-text completion. Used by `episode draft` to write a spec-md episode body.
463
415
  */
464
416
  async complete(prompt, maxTokens) {
465
417
  const tokens = Math.max(1024, Math.min(maxTokens ?? DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS));
466
- let raw;
467
- let finishReason;
468
- try {
469
- const result = await generateText({
470
- model: this.model,
471
- prompt,
418
+ const url = `${this.baseUrl}/v1beta/models/${encodeURIComponent(this.model)}:generateContent?key=${encodeURIComponent(this.apiKey)}`;
419
+ const body = {
420
+ contents: [{ role: "user", parts: [{ text: prompt }] }],
421
+ generationConfig: {
472
422
  maxOutputTokens: tokens,
473
423
  temperature: 0,
474
- maxRetries: 0,
424
+ },
425
+ };
426
+ let response;
427
+ try {
428
+ response = await fetch(url, {
429
+ method: "POST",
430
+ headers: { "Content-Type": "application/json" },
431
+ body: JSON.stringify(body),
432
+ });
433
+ }
434
+ catch (exc) {
435
+ throw new CliError("DRAFT FAILED: provider unreachable", "Provider endpoint is unreachable.", {
436
+ exitCode: EXIT_RUNTIME,
437
+ required: ["reachable Gemini endpoint"],
438
+ received: [String(exc.message ?? exc)],
439
+ nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
440
+ errorCode: "PROVIDER_NETWORK",
441
+ });
442
+ }
443
+ const text = await response.text();
444
+ if (!response.ok) {
445
+ const isAuth = response.status === 401 || response.status === 403;
446
+ const isRateLimit = response.status === 429;
447
+ const publicMessage = isAuth
448
+ ? "Provider rejected the request: authentication failed."
449
+ : isRateLimit
450
+ ? "Provider is rate-limited."
451
+ : "Provider returned an HTTP error.";
452
+ throw new CliError("DRAFT FAILED: provider returned error", publicMessage, {
453
+ exitCode: EXIT_RUNTIME,
454
+ required: ["HTTP 2xx from Gemini"],
455
+ received: [`status: ${response.status}`, `body: ${text.slice(0, 320) || "<empty>"}`],
456
+ nextSteps: isRateLimit
457
+ ? ["Back off and retry after a short wait."]
458
+ : isAuth
459
+ ? ["Run `scriptctl doctor` to verify provider configuration."]
460
+ : ["Retry once; if the issue persists, run `scriptctl doctor`."],
461
+ errorCode: isAuth
462
+ ? "PROVIDER_AUTH_REJECTED"
463
+ : isRateLimit
464
+ ? "PROVIDER_RATE_LIMITED"
465
+ : "PROVIDER_HTTP_ERROR",
475
466
  });
476
- raw = result.text.trim();
477
- finishReason = strOf(result.finishReason);
467
+ }
468
+ let payload;
469
+ try {
470
+ payload = JSON.parse(text);
478
471
  }
479
472
  catch (exc) {
480
- throw translateGeminiError(exc, tokens);
473
+ throw new CliError("DRAFT FAILED: provider returned invalid response", "Provider returned a response that could not be parsed.", {
474
+ exitCode: EXIT_RUNTIME,
475
+ required: ["valid JSON response"],
476
+ received: [`body head: ${text.slice(0, 160)}`, `parse error: ${exc.message}`],
477
+ nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
478
+ errorCode: "PROVIDER_INVALID_RESPONSE",
479
+ });
481
480
  }
482
- if (finishReason === "length") {
481
+ const candidate = payload.candidates?.[0];
482
+ const finishReason = strOf(candidate?.finishReason ?? "");
483
+ if (finishReason === "MAX_TOKENS") {
483
484
  throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
484
485
  exitCode: EXIT_RUNTIME,
485
486
  required: ["complete markdown within provider max_tokens"],
486
- received: [`finishReason: ${finishReason}`, `maxOutputTokens: ${tokens}`],
487
+ received: [`finishReason: MAX_TOKENS`, `maxOutputTokens: ${tokens}`],
487
488
  nextSteps: [
488
489
  "Re-run with --regen, or split the episode outline into smaller scopes.",
489
490
  ],
490
491
  errorCode: "PROVIDER_OUTPUT_TRUNCATED",
491
492
  });
492
493
  }
493
- if (finishReason && finishReason !== "stop" && finishReason !== "length") {
494
- // content-filter / error / other — surface to agent rather than silently treat as success.
494
+ if (finishReason && finishReason !== "STOP" && finishReason !== "MAX_TOKENS") {
495
+ // SAFETY / RECITATION / OTHER — surface to agent rather than silently treat as success.
495
496
  throw new CliError("DRAFT FAILED: provider stopped abnormally", "Provider stopped before completing the response.", {
496
497
  exitCode: EXIT_RUNTIME,
497
- required: ["finishReason: stop"],
498
+ required: ["finishReason: STOP"],
498
499
  received: [`finishReason: ${finishReason}`],
499
500
  nextSteps: ["Inspect prompt / outline for triggering content; retry with --regen if it looks transient."],
500
501
  errorCode: "PROVIDER_ABNORMAL_STOP",
501
502
  });
502
503
  }
503
- if (!raw) {
504
+ const parts = candidate?.content?.parts ?? [];
505
+ const out = parts.map((p) => (typeof p.text === "string" ? p.text : "")).join("").trim();
506
+ if (!out) {
504
507
  throw new CliError("DRAFT FAILED: provider returned empty content", "Provider returned an empty response.", {
505
508
  exitCode: EXIT_RUNTIME,
506
- required: ["non-empty model output"],
507
- received: [`finishReason: ${finishReason || "<unset>"}`, "text: <empty>"],
509
+ required: ["non-empty candidate content"],
510
+ received: [`finishReason: ${finishReason || "<unset>"}`, `parts: ${parts.length}`],
508
511
  nextSteps: ["Retry once; if it persists, run `scriptctl doctor`."],
509
512
  errorCode: "PROVIDER_EMPTY_RESPONSE",
510
513
  });
511
514
  }
512
- return raw;
515
+ return out;
513
516
  }
514
517
  }
515
- // ---------------------------------------------------------------------------
516
- // Error translation
517
- // ---------------------------------------------------------------------------
518
- function translateLiteLLMError(exc, titlePrefix) {
519
- // ai-sdk wraps transient errors in RetryError after retries exhaust.
520
- // Unwrap so 401/403/429 still resolve to their precise CliError variant
521
- // instead of falling through to generic PROVIDER_NETWORK.
522
- if (RetryError.isInstance(exc) && APICallError.isInstance(exc.lastError)) {
523
- exc = exc.lastError;
518
+ function textFromResponse(response) {
519
+ const parts = [];
520
+ for (const block of response.content ?? []) {
521
+ if (block.text)
522
+ parts.push(block.text);
524
523
  }
525
- if (APICallError.isInstance(exc)) {
526
- const status = exc.statusCode ?? 0;
527
- const isAuth = status === 401 || status === 403;
528
- const isRateLimit = status === 429;
529
- const publicMessage = isAuth
530
- ? "Provider rejected the request: authentication failed."
531
- : isRateLimit
532
- ? "Provider is rate-limited."
533
- : "Provider returned an HTTP error.";
534
- const body = strOf(exc.responseBody).slice(0, 320) || "<empty>";
535
- return new CliError(`${titlePrefix}: provider returned error`, publicMessage, {
536
- exitCode: EXIT_RUNTIME,
537
- required: ["HTTP 2xx from provider"],
538
- received: [`status: ${status || "unknown"}`, `body: ${body}`],
539
- nextSteps: isRateLimit
540
- ? ["Back off and retry after a short wait."]
541
- : isAuth
542
- ? ["Run `scriptctl doctor` to verify provider configuration."]
543
- : ["Retry once; if the issue persists, run `scriptctl doctor`."],
544
- errorCode: isAuth
545
- ? "PROVIDER_AUTH_REJECTED"
546
- : isRateLimit
547
- ? "PROVIDER_RATE_LIMITED"
548
- : "PROVIDER_HTTP_ERROR",
549
- });
550
- }
551
- if (RetryError.isInstance(exc)) {
552
- return new CliError(`${titlePrefix}: provider unreachable`, "Provider endpoint is unreachable.", {
553
- exitCode: EXIT_RUNTIME,
554
- required: ["reachable provider endpoint"],
555
- received: [strOf(exc.message).slice(0, 320) || "retries exhausted"],
556
- nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
557
- errorCode: "PROVIDER_NETWORK",
558
- });
559
- }
560
- const msg = strOf(exc?.message).slice(0, 320);
561
- return new CliError(`${titlePrefix}: provider returned error`, "Provider returned an unexpected error.", {
562
- exitCode: EXIT_RUNTIME,
563
- required: ["successful provider response"],
564
- received: [msg || String(exc)],
565
- nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
566
- errorCode: "PROVIDER_HTTP_ERROR",
567
- });
524
+ return parts.join("\n").trim();
568
525
  }
569
- function translateGeminiError(exc, tokens) {
570
- if (RetryError.isInstance(exc) && APICallError.isInstance(exc.lastError)) {
571
- exc = exc.lastError;
572
- }
573
- if (APICallError.isInstance(exc)) {
574
- const status = exc.statusCode ?? 0;
575
- const isAuth = status === 401 || status === 403;
576
- const isRateLimit = status === 429;
577
- const publicMessage = isAuth
578
- ? "Provider rejected the request: authentication failed."
579
- : isRateLimit
580
- ? "Provider is rate-limited."
581
- : "Provider returned an HTTP error.";
582
- const body = strOf(exc.responseBody).slice(0, 320) || "<empty>";
583
- return new CliError("DRAFT FAILED: provider returned error", publicMessage, {
584
- exitCode: EXIT_RUNTIME,
585
- required: ["HTTP 2xx from Gemini"],
586
- received: [`status: ${status || "unknown"}`, `body: ${body}`],
587
- nextSteps: isRateLimit
588
- ? ["Back off and retry after a short wait."]
589
- : isAuth
590
- ? ["Run `scriptctl doctor` to verify provider configuration."]
591
- : ["Retry once; if the issue persists, run `scriptctl doctor`."],
592
- errorCode: isAuth
593
- ? "PROVIDER_AUTH_REJECTED"
594
- : isRateLimit
595
- ? "PROVIDER_RATE_LIMITED"
596
- : "PROVIDER_HTTP_ERROR",
597
- });
598
- }
599
- if (RetryError.isInstance(exc)) {
600
- return new CliError("DRAFT FAILED: provider unreachable", "Provider endpoint is unreachable.", {
601
- exitCode: EXIT_RUNTIME,
602
- required: ["reachable Gemini endpoint"],
603
- received: [strOf(exc.message).slice(0, 320) || "retries exhausted"],
604
- nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
605
- errorCode: "PROVIDER_NETWORK",
606
- });
526
+ /**
527
+ * Find a forced tool_use block by name in a Message's content array.
528
+ * Returns its `input` (already parsed by the SDK) or `null` when missing/non-object.
529
+ */
530
+ function findToolUseInput(content, toolName) {
531
+ for (const block of content) {
532
+ if (block?.type === "tool_use" && block.name === toolName) {
533
+ const inp = block.input;
534
+ if (inp && typeof inp === "object" && !Array.isArray(inp))
535
+ return inp;
536
+ return null;
537
+ }
607
538
  }
608
- const msg = strOf(exc?.message).slice(0, 320);
609
- return new CliError("DRAFT FAILED: provider returned invalid response", "Provider returned a response that could not be parsed.", {
610
- exitCode: EXIT_RUNTIME,
611
- required: ["valid response from Gemini"],
612
- received: [msg || String(exc), `maxOutputTokens: ${tokens}`],
613
- nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
614
- errorCode: "PROVIDER_INVALID_RESPONSE",
615
- });
539
+ return null;
616
540
  }
617
541
  // ---------------------------------------------------------------------------
618
542
  // Factory
@@ -621,7 +545,7 @@ export function makeProvider(name, model) {
621
545
  if (name === "mock")
622
546
  return new MockProvider();
623
547
  if (name === "anthropic")
624
- return new LiteLLMProvider(model);
548
+ return new AnthropicProvider(model);
625
549
  if (name === "gemini")
626
550
  return new GeminiProvider(model);
627
551
  throw new CliError("INIT FAILED: Unsupported provider", "Unsupported provider.", {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/scriptctl",
3
- "version": "0.8.3",
3
+ "version": "0.9.1",
4
4
  "description": "剧本阶段统一 CLI:直转外部素材到 script.json,以及当前最终剧本的读取、校验、原子编辑与批量 patch 精修。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,15 +28,12 @@
28
28
  "typecheck": "tsc --noEmit"
29
29
  },
30
30
  "dependencies": {
31
- "@ai-sdk/google": "^3.0.80",
32
- "@ai-sdk/openai-compatible": "^2.0.48",
33
- "ai": "^6.0.193",
31
+ "@anthropic-ai/sdk": "^0.32.1",
34
32
  "commander": "^12.1.0",
35
33
  "exceljs": "^4.4.0",
36
34
  "fast-xml-parser": "^4.5.0",
37
35
  "jszip": "^3.10.1",
38
- "pdfjs-dist": "^4.10.38",
39
- "zod": "^4.4.3"
36
+ "pdfjs-dist": "^4.10.38"
40
37
  },
41
38
  "devDependencies": {
42
39
  "@types/node": "^20.14.0",