@lingjingai/scriptctl 0.7.5 → 0.8.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,10 +42,6 @@ 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;
49
45
  export interface Report {
50
46
  title?: string;
51
47
  message?: string;
package/dist/common.js CHANGED
@@ -178,93 +178,6 @@ 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
- };
268
181
  export class CliError extends Error {
269
182
  title;
270
183
  exitCode;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,aAAa,EACb,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,uBAAuB,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAC;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,OAAO;IACP,UAAU;IACV,MAAM;IACN,QAAQ;IACR,WAAW;IACX,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,0BAA0B,GACrC,0EAA0E;IAC1E,2EAA2E;IAC3E,+CAA+C;IAC/C,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,WAAW;IACX,qBAAqB;IACrB,4BAA4B;IAC5B,2CAA2C;IAC3C,sCAAsC;IACtC,IAAI;IACJ,oBAAoB;IACpB,wBAAwB;IACxB,kCAAkC;IAClC,mCAAmC;IACnC,8BAA8B;IAC9B,wCAAwC;IACxC,wDAAwD;IACxD,2DAA2D;IAC3D,6BAA6B;IAC7B,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,SAAS;IACT,qBAAqB;IACrB,aAAa;IACb,IAAI;IACJ,SAAS;IACT,kBAAkB;IAClB,SAAS;IACT,IAAI;IACJ,SAAS;IACT,eAAe;IACf,SAAS;IACT,IAAI;IACJ,UAAU;IACV,0BAA0B;IAC1B,sBAAsB;IACtB,IAAI;IACJ,WAAW;IACX,qCAAqC;IACrC,IAAI;IACJ,WAAW;IACX,qCAAqC;IACrC,IAAI;IACJ,WAAW;IACX,qCAAqC;IACrC,IAAI;IACJ,UAAU;IACV,kFAAkF;IAClF,mFAAmF;IACnF,kFAAkF;IAClF,8FAA8F;IAC9F,kFAAkF;IAClF,sCAAsC;IACtC,8EAA8E;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,kCAAkC;IAClC,gFAAgF;IAChF,4EAA4E;IAC5E,+EAA+E;IAC/E,6CAA6C;IAC7C,0EAA0E;IAC1E,+EAA+E;IAC/E,iFAAiF;IACjF,8EAA8E;IAC9E,gFAAgF;IAChF,+DAA+D;IAC/D,8EAA8E;IAC9E,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,+DAA+D;IAC/D,mFAAmF;IACnF,sEAAsE;IACtE,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,iFAAiF;IACjF,mFAAmF;IACnF,4EAA4E;IAC5E,qDAAqD;IACrD,6EAA6E;IAC7E,8EAA8E;IAC9E,gCAAgC;IAChC,oFAAoF;IACpF,2EAA2E;IAC3E,+DAA+D;IAC/D,mFAAmF;IACnF,8CAA8C;IAC9C,mFAAmF;IACnF,oFAAoF;IACpF,kFAAkF;IAClF,2EAA2E;IAC3E,oCAAoC;IACpC,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,mFAAmF;IACnF,oDAAoD;IACpD,qFAAqF;IACrF,sDAAsD;IACtD,iFAAiF;IACjF,6EAA6E;IAC7E,gEAAgE;IAChE,iDAAiD;IACjD,gFAAgF;IAChF,sBAAsB,CAAC;AAIzB,MAAM,CAAC,MAAM,0BAA0B,GAAe;IACpD,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC;IACtF,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;QACrD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC;gBAClD,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE;oBACrD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACF;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;gBACxC,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACF;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;gBACpC,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChC;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAe;IAC/C,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,WAAW,CAAC;IACvB,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,CAAC;gBACrE,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;oBACrD,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;oBAChD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAe;IACzD,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IAC5B,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,cAAc,EAAE;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;gBAC9B,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;SACF;KACF;CACF,CAAC;AA2EF,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,QAAQ,CAAW;IACnB,QAAQ,CAAW;IACnB,SAAS,CAAW;IACpB,EAAE,CAAU;IACZ,SAAS,CAAU;IAE5B,YAAY,KAAa,EAAE,OAAe,EAAE,IAAqB;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA6B;IAC1D,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,MAAc,EAAE,CAAS;IAC7C,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAc,CAAS;IAC7C,OAAO,aAAa,CAAC,QAAQ,CAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,IAAa;IAChD,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS;IAChC,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAS;IAC9B,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,IAAY;IAC/C,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,GAAW;IAC/C,aAAa,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM;YAClB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -13,53 +13,25 @@ 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 AnthropicProvider implements ProviderLike {
16
+ export declare class LiteLLMProvider implements ProviderLike {
17
17
  readonly name = "anthropic";
18
- private readonly client;
19
18
  private readonly model;
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
- */
19
+ private readonly modelId;
20
+ private readonly configuredMaxTokens;
21
+ constructor(modelId: string);
22
+ private capTokens;
37
23
  complete(prompt: string, maxTokens?: number): Promise<string>;
38
24
  extractEpisode(sourceText: string, episodePlan: Dict): Promise<Dict>;
39
25
  extractBatch(sourceText: string, batchPlan: Dict): Promise<Dict>;
40
26
  extractEpisodeTitles(sourceText: string, episodePlan: Dict): Promise<Dict>;
41
27
  extractAssetCuration(_sourceText: string, script: Dict): Promise<Dict>;
42
28
  extractMetadata(_sourceText: string, script: Dict): Promise<Dict>;
29
+ private extractStructured;
43
30
  }
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
- */
57
31
  export declare class GeminiProvider implements ProviderLike {
58
32
  readonly name = "gemini";
59
- private readonly apiKey;
60
- private readonly baseUrl;
61
33
  private readonly model;
62
- constructor(model?: string);
34
+ constructor(modelId?: string);
63
35
  /**
64
36
  * Plain-text completion. Used by `episode draft` to write a spec-md episode body.
65
37
  */
@@ -1,5 +1,8 @@
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";
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";
3
6
  import { _md_push_asset, _normalize_speaker_list, buildAssetCurationContext, buildEpisodeTitleContext, buildMetadataContext, deterministicEpisodeShortTitle, deterministicExtractEpisode, deterministicExtractMetadata, episodesNeedingGeneratedTitles, formatBatchSource, parseMarkdownBatch, } from "../domain/direct-core.js";
4
7
  function strOf(v) {
5
8
  if (v === null || v === undefined)
@@ -13,6 +16,43 @@ function asList(v) {
13
16
  return Array.isArray(v) ? v : [];
14
17
  }
15
18
  // ---------------------------------------------------------------------------
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
+ // ---------------------------------------------------------------------------
16
56
  // Mock provider
17
57
  // ---------------------------------------------------------------------------
18
58
  export class MockProvider {
@@ -98,13 +138,23 @@ export class MockProvider {
98
138
  }
99
139
  }
100
140
  // ---------------------------------------------------------------------------
101
- // Anthropic provider
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.
102
151
  // ---------------------------------------------------------------------------
103
- export class AnthropicProvider {
152
+ export class LiteLLMProvider {
104
153
  name = "anthropic";
105
- client;
106
154
  model;
107
- constructor(model) {
155
+ modelId;
156
+ configuredMaxTokens;
157
+ constructor(modelId) {
108
158
  const apiKey = (process.env.PROJECT_LITELLM_GATEWAY_API_KEY ?? "").trim();
109
159
  if (!apiKey) {
110
160
  throw new CliError("INIT FAILED: provider not configured", "Provider credentials are not configured for this environment.", {
@@ -115,83 +165,69 @@ export class AnthropicProvider {
115
165
  errorCode: "PROVIDER_AUTH_MISSING",
116
166
  });
117
167
  }
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);
130
- if (!Number.isNaN(parsed))
131
- configuredMaxTokens = parsed;
132
- }
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)) };
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
+ });
149
177
  }
150
- return request;
151
- }
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)];
178
+ const provider = createOpenAICompatible({
179
+ name: "litellm",
180
+ apiKey,
181
+ baseURL,
182
+ });
183
+ this.modelId = modelId;
184
+ // LiteLLM forwards OpenAI-compatible requests to Claude / DeepSeek / etc.
185
+ // Those upstream models don't honor `response_format: json_schema`, so
186
+ // generateObject falls back to prompt-engineered JSON output — and Claude
187
+ // habitually wraps that output in ```json ... ``` fences. extractJsonMiddleware
188
+ // strips the fences before ai-sdk's JSON.parse runs, so generateObject
189
+ // doesn't blow up with NoObjectGeneratedError on every well-formed reply.
190
+ this.model = wrapLanguageModel({
191
+ model: provider(modelId),
192
+ middleware: extractJsonMiddleware(),
193
+ });
194
+ const raw = (process.env.SCRIPTCTL_MAX_TOKENS ?? "").trim();
195
+ let mt = DEFAULT_MAX_TOKENS;
196
+ if (raw) {
197
+ const parsed = parseInt(raw, 10);
198
+ if (!Number.isNaN(parsed))
199
+ mt = parsed;
158
200
  }
159
- const response = await this.client.messages.create(request);
160
- return [textFromResponse(response), strOf(response.stop_reason)];
201
+ this.configuredMaxTokens = Math.max(1024, Math.min(mt, DEFAULT_MAX_TOKENS));
161
202
  }
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)];
175
- }
176
- const response = (await this.client.messages.create(request));
177
- return [findToolUseInput(response.content ?? [], toolName), strOf(response.stop_reason)];
203
+ capTokens(maxTokens, fallback) {
204
+ const requested = maxTokens !== undefined ? maxTokens : fallback;
205
+ return Math.max(1024, Math.min(requested, this.configuredMaxTokens, DEFAULT_MAX_TOKENS));
178
206
  }
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
207
  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") {
208
+ const max = this.capTokens(maxTokens, DEFAULT_BATCH_MAX_TOKENS);
209
+ let raw;
210
+ let finishReason;
211
+ try {
212
+ const result = await generateText({
213
+ model: this.model,
214
+ prompt,
215
+ maxOutputTokens: max,
216
+ maxRetries: 0,
217
+ });
218
+ raw = result.text.trim();
219
+ finishReason = strOf(result.finishReason);
220
+ }
221
+ catch (exc) {
222
+ throw translateLiteLLMError(exc, "DRAFT FAILED");
223
+ }
224
+ if (finishReason === "length") {
189
225
  throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
190
226
  exitCode: EXIT_RUNTIME,
191
227
  required: ["complete markdown within provider max_tokens"],
192
228
  received: [
193
- `stop_reason: ${stopReason}`,
194
- `max_tokens: ${request.max_tokens}`,
229
+ `finishReason: ${finishReason}`,
230
+ `max_tokens: ${max}`,
195
231
  `raw chars: ${raw.length}`,
196
232
  `tail: ${raw.slice(-160) || "<empty response>"}`,
197
233
  ],
@@ -207,7 +243,7 @@ export class AnthropicProvider {
207
243
  return this.extractBatch(sourceText, episodePlan);
208
244
  }
209
245
  async extractBatch(sourceText, batchPlan) {
210
- const context = isList(batchPlan["context"]) || typeof batchPlan["context"] === "object" && batchPlan["context"] !== null
246
+ const context = isList(batchPlan["context"]) || (typeof batchPlan["context"] === "object" && batchPlan["context"] !== null)
211
247
  ? batchPlan["context"]
212
248
  : {};
213
249
  const numberedSource = formatBatchSource(sourceText, batchPlan);
@@ -223,15 +259,29 @@ export class AnthropicProvider {
223
259
  "\n" +
224
260
  "Batch Source:\n" +
225
261
  `${numberedSource}\n`;
226
- const request = this.messageRequest(prompt, DEFAULT_BATCH_MAX_TOKENS);
227
- const [raw, stopReason] = await this.collectResponseText(request);
228
- if (stopReason === "max_tokens") {
262
+ const max = this.capTokens(DEFAULT_BATCH_MAX_TOKENS, DEFAULT_BATCH_MAX_TOKENS);
263
+ let raw;
264
+ let finishReason;
265
+ try {
266
+ const result = await generateText({
267
+ model: this.model,
268
+ prompt,
269
+ maxOutputTokens: max,
270
+ maxRetries: 0,
271
+ });
272
+ raw = result.text.trim();
273
+ finishReason = strOf(result.finishReason);
274
+ }
275
+ catch (exc) {
276
+ throw translateLiteLLMError(exc, "INIT FAILED");
277
+ }
278
+ if (finishReason === "length") {
229
279
  throw new CliError("INIT FAILED: Provider output truncated", "Provider output truncated.", {
230
280
  exitCode: EXIT_RUNTIME,
231
281
  required: ["complete markdown within provider max_tokens"],
232
282
  received: [
233
- `stop_reason: ${stopReason}`,
234
- `max_tokens: ${request.max_tokens}`,
283
+ `finishReason: ${finishReason}`,
284
+ `max_tokens: ${max}`,
235
285
  `raw chars: ${raw.length}`,
236
286
  `tail: ${raw.slice(-160) || "<empty response>"}`,
237
287
  ],
@@ -259,32 +309,19 @@ export class AnthropicProvider {
259
309
  "\n" +
260
310
  "Episodes needing titles:\n" +
261
311
  `${JSON.stringify(context)}\n`;
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;
312
+ return this.extractStructured({
313
+ prompt,
314
+ maxTokens: 4096,
315
+ schema: EPISODE_TITLE_SCHEMA,
316
+ title: "INIT FAILED: Episode title output truncated",
317
+ truncationMessage: "Episode title output truncated.",
318
+ required: ["complete episode title JSON within provider max_tokens"],
319
+ invalidTitle: "INIT FAILED: Provider returned invalid episode title JSON",
320
+ invalidMessage: "Provider returned invalid episode title JSON.",
321
+ invalidRequired: ["valid JSON matching the configured schema"],
322
+ truncationNext: ["Rerun init; if this repeats, split the source or provide explicit episode titles."],
323
+ invalidNext: ["Rerun init; title generation will retry before batch extraction."],
324
+ });
288
325
  }
289
326
  async extractAssetCuration(_sourceText, script) {
290
327
  const context = buildAssetCurationContext(script);
@@ -302,32 +339,19 @@ export class AnthropicProvider {
302
339
  "\n" +
303
340
  "Script asset curation context:\n" +
304
341
  `${JSON.stringify(context)}\n`;
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;
342
+ return this.extractStructured({
343
+ prompt,
344
+ maxTokens: DEFAULT_MAX_TOKENS,
345
+ schema: ASSET_CURATION_SCHEMA,
346
+ title: "INIT FAILED: Asset curation output truncated",
347
+ truncationMessage: "Asset curation output truncated.",
348
+ required: ["complete asset curation JSON within provider max_tokens"],
349
+ invalidTitle: "INIT FAILED: Provider returned invalid asset curation JSON",
350
+ invalidMessage: "Provider returned invalid asset curation JSON.",
351
+ invalidRequired: ["valid JSON matching the configured schema"],
352
+ truncationNext: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
353
+ invalidNext: ["Rerun init; extraction checkpoints will be reused and asset curation will retry."],
354
+ });
331
355
  }
332
356
  async extractMetadata(_sourceText, script) {
333
357
  const context = buildMetadataContext(script);
@@ -345,56 +369,68 @@ export class AnthropicProvider {
345
369
  "\n" +
346
370
  "Script metadata context:\n" +
347
371
  `${JSON.stringify(context)}\n`;
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."],
372
+ return this.extractStructured({
373
+ prompt,
374
+ maxTokens: DEFAULT_MAX_TOKENS,
375
+ schema: METADATA_SCHEMA,
376
+ title: "INIT FAILED: Metadata output truncated",
377
+ truncationMessage: "Metadata output truncated.",
378
+ required: ["complete metadata JSON within provider max_tokens"],
379
+ invalidTitle: "INIT FAILED: Provider returned invalid metadata JSON",
380
+ invalidMessage: "Provider returned invalid metadata JSON.",
381
+ invalidRequired: ["valid JSON matching the configured schema"],
382
+ truncationNext: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
383
+ invalidNext: ["Rerun init; extraction checkpoints will be reused and metadata will retry."],
384
+ });
385
+ }
386
+ async extractStructured(args) {
387
+ const max = this.capTokens(args.maxTokens, args.maxTokens);
388
+ try {
389
+ const result = await generateObject({
390
+ model: this.model,
391
+ prompt: args.prompt,
392
+ schema: args.schema,
393
+ maxOutputTokens: max,
394
+ maxRetries: 0,
363
395
  });
396
+ const finishReason = strOf(result.finishReason);
397
+ if (finishReason === "length") {
398
+ throw new CliError(args.title, args.truncationMessage, {
399
+ exitCode: EXIT_RUNTIME,
400
+ required: args.required,
401
+ received: [`finishReason: ${finishReason}`, `max_tokens: ${max}`],
402
+ nextSteps: args.truncationNext,
403
+ });
404
+ }
405
+ return result.object;
364
406
  }
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
- });
407
+ catch (exc) {
408
+ if (exc instanceof CliError)
409
+ throw exc;
410
+ if (NoObjectGeneratedError.isInstance(exc)) {
411
+ const cause = exc.cause;
412
+ throw new CliError(args.invalidTitle, args.invalidMessage, {
413
+ exitCode: EXIT_RUNTIME,
414
+ required: args.invalidRequired,
415
+ received: [
416
+ `error: ${exc.message?.slice(0, 160) || "no object generated"}`,
417
+ ...(cause?.message ? [`cause: ${cause.message.slice(0, 160)}`] : []),
418
+ ],
419
+ nextSteps: args.invalidNext,
420
+ });
421
+ }
422
+ throw translateLiteLLMError(exc, "INIT FAILED");
372
423
  }
373
- return input;
374
424
  }
375
425
  }
376
426
  // ---------------------------------------------------------------------------
377
- // Gemini provider (used by `scriptctl episode draft` by default)
427
+ // Gemini provider @ai-sdk/google direct to Google AI Studio.
428
+ // Used by `scriptctl episode draft` when --provider gemini.
378
429
  // ---------------------------------------------------------------------------
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
- */
392
430
  export class GeminiProvider {
393
431
  name = "gemini";
394
- apiKey;
395
- baseUrl;
396
432
  model;
397
- constructor(model) {
433
+ constructor(modelId) {
398
434
  const apiKey = (process.env.SCRIPTCTL_GEMINI_API_KEY ?? process.env.GEMINI_API_KEY ?? "").trim();
399
435
  if (!apiKey) {
400
436
  throw new CliError("DRAFT FAILED: provider not configured", "Provider credentials are not configured for this environment.", {
@@ -405,138 +441,169 @@ export class GeminiProvider {
405
441
  errorCode: "PROVIDER_AUTH_MISSING",
406
442
  });
407
443
  }
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();
444
+ const baseURL = (process.env.SCRIPTCTL_GEMINI_BASE_URL ?? "").trim();
445
+ const opts = { apiKey };
446
+ if (baseURL)
447
+ opts.baseURL = baseURL.replace(/\/+$/, "");
448
+ const provider = createGoogleGenerativeAI(opts);
449
+ const id = (modelId || process.env.SCRIPTCTL_GEMINI_MODEL || "gemini-2.5-pro").trim();
450
+ this.model = provider(id);
412
451
  }
413
452
  /**
414
453
  * Plain-text completion. Used by `episode draft` to write a spec-md episode body.
415
454
  */
416
455
  async complete(prompt, maxTokens) {
417
456
  const tokens = Math.max(1024, Math.min(maxTokens ?? DEFAULT_BATCH_MAX_TOKENS, DEFAULT_MAX_TOKENS));
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: {
457
+ let raw;
458
+ let finishReason;
459
+ try {
460
+ const result = await generateText({
461
+ model: this.model,
462
+ prompt,
422
463
  maxOutputTokens: tokens,
423
464
  temperature: 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",
465
+ maxRetries: 0,
466
466
  });
467
- }
468
- let payload;
469
- try {
470
- payload = JSON.parse(text);
467
+ raw = result.text.trim();
468
+ finishReason = strOf(result.finishReason);
471
469
  }
472
470
  catch (exc) {
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
- });
471
+ throw translateGeminiError(exc, tokens);
480
472
  }
481
- const candidate = payload.candidates?.[0];
482
- const finishReason = strOf(candidate?.finishReason ?? "");
483
- if (finishReason === "MAX_TOKENS") {
473
+ if (finishReason === "length") {
484
474
  throw new CliError("DRAFT FAILED: Provider output truncated", "Provider output truncated.", {
485
475
  exitCode: EXIT_RUNTIME,
486
476
  required: ["complete markdown within provider max_tokens"],
487
- received: [`finishReason: MAX_TOKENS`, `maxOutputTokens: ${tokens}`],
477
+ received: [`finishReason: ${finishReason}`, `maxOutputTokens: ${tokens}`],
488
478
  nextSteps: [
489
479
  "Re-run with --regen, or split the episode outline into smaller scopes.",
490
480
  ],
491
481
  errorCode: "PROVIDER_OUTPUT_TRUNCATED",
492
482
  });
493
483
  }
494
- if (finishReason && finishReason !== "STOP" && finishReason !== "MAX_TOKENS") {
495
- // SAFETY / RECITATION / OTHER — surface to agent rather than silently treat as success.
484
+ if (finishReason && finishReason !== "stop" && finishReason !== "length") {
485
+ // content-filter / error / other — surface to agent rather than silently treat as success.
496
486
  throw new CliError("DRAFT FAILED: provider stopped abnormally", "Provider stopped before completing the response.", {
497
487
  exitCode: EXIT_RUNTIME,
498
- required: ["finishReason: STOP"],
488
+ required: ["finishReason: stop"],
499
489
  received: [`finishReason: ${finishReason}`],
500
490
  nextSteps: ["Inspect prompt / outline for triggering content; retry with --regen if it looks transient."],
501
491
  errorCode: "PROVIDER_ABNORMAL_STOP",
502
492
  });
503
493
  }
504
- const parts = candidate?.content?.parts ?? [];
505
- const out = parts.map((p) => (typeof p.text === "string" ? p.text : "")).join("").trim();
506
- if (!out) {
494
+ if (!raw) {
507
495
  throw new CliError("DRAFT FAILED: provider returned empty content", "Provider returned an empty response.", {
508
496
  exitCode: EXIT_RUNTIME,
509
- required: ["non-empty candidate content"],
510
- received: [`finishReason: ${finishReason || "<unset>"}`, `parts: ${parts.length}`],
497
+ required: ["non-empty model output"],
498
+ received: [`finishReason: ${finishReason || "<unset>"}`, "text: <empty>"],
511
499
  nextSteps: ["Retry once; if it persists, run `scriptctl doctor`."],
512
500
  errorCode: "PROVIDER_EMPTY_RESPONSE",
513
501
  });
514
502
  }
515
- return out;
503
+ return raw;
516
504
  }
517
505
  }
518
- function textFromResponse(response) {
519
- const parts = [];
520
- for (const block of response.content ?? []) {
521
- if (block.text)
522
- parts.push(block.text);
506
+ // ---------------------------------------------------------------------------
507
+ // Error translation
508
+ // ---------------------------------------------------------------------------
509
+ function translateLiteLLMError(exc, titlePrefix) {
510
+ // ai-sdk wraps transient errors in RetryError after retries exhaust.
511
+ // Unwrap so 401/403/429 still resolve to their precise CliError variant
512
+ // instead of falling through to generic PROVIDER_NETWORK.
513
+ if (RetryError.isInstance(exc) && APICallError.isInstance(exc.lastError)) {
514
+ exc = exc.lastError;
523
515
  }
524
- return parts.join("\n").trim();
516
+ if (APICallError.isInstance(exc)) {
517
+ const status = exc.statusCode ?? 0;
518
+ const isAuth = status === 401 || status === 403;
519
+ const isRateLimit = status === 429;
520
+ const publicMessage = isAuth
521
+ ? "Provider rejected the request: authentication failed."
522
+ : isRateLimit
523
+ ? "Provider is rate-limited."
524
+ : "Provider returned an HTTP error.";
525
+ const body = strOf(exc.responseBody).slice(0, 320) || "<empty>";
526
+ return new CliError(`${titlePrefix}: provider returned error`, publicMessage, {
527
+ exitCode: EXIT_RUNTIME,
528
+ required: ["HTTP 2xx from provider"],
529
+ received: [`status: ${status || "unknown"}`, `body: ${body}`],
530
+ nextSteps: isRateLimit
531
+ ? ["Back off and retry after a short wait."]
532
+ : isAuth
533
+ ? ["Run `scriptctl doctor` to verify provider configuration."]
534
+ : ["Retry once; if the issue persists, run `scriptctl doctor`."],
535
+ errorCode: isAuth
536
+ ? "PROVIDER_AUTH_REJECTED"
537
+ : isRateLimit
538
+ ? "PROVIDER_RATE_LIMITED"
539
+ : "PROVIDER_HTTP_ERROR",
540
+ });
541
+ }
542
+ if (RetryError.isInstance(exc)) {
543
+ return new CliError(`${titlePrefix}: provider unreachable`, "Provider endpoint is unreachable.", {
544
+ exitCode: EXIT_RUNTIME,
545
+ required: ["reachable provider endpoint"],
546
+ received: [strOf(exc.message).slice(0, 320) || "retries exhausted"],
547
+ nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
548
+ errorCode: "PROVIDER_NETWORK",
549
+ });
550
+ }
551
+ const msg = strOf(exc?.message).slice(0, 320);
552
+ return new CliError(`${titlePrefix}: provider returned error`, "Provider returned an unexpected error.", {
553
+ exitCode: EXIT_RUNTIME,
554
+ required: ["successful provider response"],
555
+ received: [msg || String(exc)],
556
+ nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
557
+ errorCode: "PROVIDER_HTTP_ERROR",
558
+ });
525
559
  }
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
- }
560
+ function translateGeminiError(exc, tokens) {
561
+ if (RetryError.isInstance(exc) && APICallError.isInstance(exc.lastError)) {
562
+ exc = exc.lastError;
538
563
  }
539
- return null;
564
+ if (APICallError.isInstance(exc)) {
565
+ const status = exc.statusCode ?? 0;
566
+ const isAuth = status === 401 || status === 403;
567
+ const isRateLimit = status === 429;
568
+ const publicMessage = isAuth
569
+ ? "Provider rejected the request: authentication failed."
570
+ : isRateLimit
571
+ ? "Provider is rate-limited."
572
+ : "Provider returned an HTTP error.";
573
+ const body = strOf(exc.responseBody).slice(0, 320) || "<empty>";
574
+ return new CliError("DRAFT FAILED: provider returned error", publicMessage, {
575
+ exitCode: EXIT_RUNTIME,
576
+ required: ["HTTP 2xx from Gemini"],
577
+ received: [`status: ${status || "unknown"}`, `body: ${body}`],
578
+ nextSteps: isRateLimit
579
+ ? ["Back off and retry after a short wait."]
580
+ : isAuth
581
+ ? ["Run `scriptctl doctor` to verify provider configuration."]
582
+ : ["Retry once; if the issue persists, run `scriptctl doctor`."],
583
+ errorCode: isAuth
584
+ ? "PROVIDER_AUTH_REJECTED"
585
+ : isRateLimit
586
+ ? "PROVIDER_RATE_LIMITED"
587
+ : "PROVIDER_HTTP_ERROR",
588
+ });
589
+ }
590
+ if (RetryError.isInstance(exc)) {
591
+ return new CliError("DRAFT FAILED: provider unreachable", "Provider endpoint is unreachable.", {
592
+ exitCode: EXIT_RUNTIME,
593
+ required: ["reachable Gemini endpoint"],
594
+ received: [strOf(exc.message).slice(0, 320) || "retries exhausted"],
595
+ nextSteps: ["Check network connectivity and retry. Run `scriptctl doctor` if the issue persists."],
596
+ errorCode: "PROVIDER_NETWORK",
597
+ });
598
+ }
599
+ const msg = strOf(exc?.message).slice(0, 320);
600
+ return new CliError("DRAFT FAILED: provider returned invalid response", "Provider returned a response that could not be parsed.", {
601
+ exitCode: EXIT_RUNTIME,
602
+ required: ["valid response from Gemini"],
603
+ received: [msg || String(exc), `maxOutputTokens: ${tokens}`],
604
+ nextSteps: ["Retry once; if the issue persists, run `scriptctl doctor`."],
605
+ errorCode: "PROVIDER_INVALID_RESPONSE",
606
+ });
540
607
  }
541
608
  // ---------------------------------------------------------------------------
542
609
  // Factory
@@ -545,7 +612,7 @@ export function makeProvider(name, model) {
545
612
  if (name === "mock")
546
613
  return new MockProvider();
547
614
  if (name === "anthropic")
548
- return new AnthropicProvider(model);
615
+ return new LiteLLMProvider(model);
549
616
  if (name === "gemini")
550
617
  return new GeminiProvider(model);
551
618
  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.7.5",
3
+ "version": "0.8.1",
4
4
  "description": "剧本阶段统一 CLI:直转外部素材到 script.json,以及当前最终剧本的读取、校验、原子编辑与批量 patch 精修。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,12 +28,15 @@
28
28
  "typecheck": "tsc --noEmit"
29
29
  },
30
30
  "dependencies": {
31
- "@anthropic-ai/sdk": "^0.32.1",
31
+ "@ai-sdk/google": "^3.0.80",
32
+ "@ai-sdk/openai-compatible": "^2.0.48",
33
+ "ai": "^6.0.193",
32
34
  "commander": "^12.1.0",
33
35
  "exceljs": "^4.4.0",
34
36
  "fast-xml-parser": "^4.5.0",
35
37
  "jszip": "^3.10.1",
36
- "pdfjs-dist": "^4.10.38"
38
+ "pdfjs-dist": "^4.10.38",
39
+ "zod": "^4.4.3"
37
40
  },
38
41
  "devDependencies": {
39
42
  "@types/node": "^20.14.0",