scribe-cms 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +21 -6
  2. package/dist/cli/index.cjs +1258 -219
  3. package/dist/cli/index.cjs.map +1 -1
  4. package/dist/cli/index.js +1259 -220
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/prompt-translate.d.ts +3 -0
  7. package/dist/cli/prompt-translate.d.ts.map +1 -1
  8. package/dist/cli/translate-progress.d.ts.map +1 -1
  9. package/dist/index.cjs +1020 -181
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.js +1021 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/runtime.cjs +149 -62
  14. package/dist/runtime.cjs.map +1 -1
  15. package/dist/runtime.js +149 -62
  16. package/dist/runtime.js.map +1 -1
  17. package/dist/src/config/resolve-config.d.ts.map +1 -1
  18. package/dist/src/core/introspect-schema.d.ts +7 -1
  19. package/dist/src/core/introspect-schema.d.ts.map +1 -1
  20. package/dist/src/core/types.d.ts +6 -0
  21. package/dist/src/core/types.d.ts.map +1 -1
  22. package/dist/src/create-project.d.ts.map +1 -1
  23. package/dist/src/i18n/resolve-document.d.ts +1 -1
  24. package/dist/src/i18n/resolve-document.d.ts.map +1 -1
  25. package/dist/src/index.d.ts +3 -3
  26. package/dist/src/index.d.ts.map +1 -1
  27. package/dist/src/storage/batch-jobs.d.ts +53 -0
  28. package/dist/src/storage/batch-jobs.d.ts.map +1 -0
  29. package/dist/src/storage/sqlite.d.ts.map +1 -1
  30. package/dist/src/translate/batch-worklist.d.ts +87 -0
  31. package/dist/src/translate/batch-worklist.d.ts.map +1 -0
  32. package/dist/src/translate/gemini-batch.d.ts +26 -0
  33. package/dist/src/translate/gemini-batch.d.ts.map +1 -0
  34. package/dist/src/translate/gemini-client.d.ts +23 -0
  35. package/dist/src/translate/gemini-client.d.ts.map +1 -1
  36. package/dist/src/translate/gemini-models.d.ts +9 -0
  37. package/dist/src/translate/gemini-models.d.ts.map +1 -1
  38. package/dist/src/translate/gemini-pricing.d.ts +2 -1
  39. package/dist/src/translate/gemini-pricing.d.ts.map +1 -1
  40. package/dist/src/translate/page-translator.d.ts +25 -52
  41. package/dist/src/translate/page-translator.d.ts.map +1 -1
  42. package/dist/src/translate/prompts/translation-prompt.d.ts +6 -0
  43. package/dist/src/translate/prompts/translation-prompt.d.ts.map +1 -1
  44. package/dist/src/translate/response-schema.d.ts +8 -1
  45. package/dist/src/translate/response-schema.d.ts.map +1 -1
  46. package/dist/src/translate/retry.d.ts +16 -0
  47. package/dist/src/translate/retry.d.ts.map +1 -0
  48. package/dist/src/translate/sanitize-mdx-jsx.d.ts.map +1 -1
  49. package/dist/src/translate/translate-core.d.ts +155 -0
  50. package/dist/src/translate/translate-core.d.ts.map +1 -0
  51. package/dist/src/validate/validate-project.d.ts.map +1 -1
  52. package/dist/studio/server.cjs +84 -47
  53. package/dist/studio/server.cjs.map +1 -1
  54. package/dist/studio/server.js +84 -47
  55. package/dist/studio/server.js.map +1 -1
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../../../src/config/resolve-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAMxE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,YAAY,EAC5C,OAAO,CAAC,EAAE,MAAM,GACf,YAAY,CAgEd"}
1
+ {"version":3,"file":"resolve-config.d.ts","sourceRoot":"","sources":["../../../src/config/resolve-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,YAAY,EACZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAMxE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,YAAY,EAC5C,OAAO,CAAC,EAAE,MAAM,GACf,YAAY,CAmGd"}
@@ -6,7 +6,13 @@ export interface SchemaFieldMeta {
6
6
  relationMultiple?: boolean;
7
7
  relationOptional?: boolean;
8
8
  }
9
- /** List schema fields with translatable/structural/relation metadata. */
9
+ /**
10
+ * List schema fields with translatable/structural/relation metadata.
11
+ * Array-of-object fields recurse with a `*` path segment (`steps.*.title`) so
12
+ * extraction and merging preserve the array shape. Note: `peelOptionalWrappers`
13
+ * is used (not `unwrapSchema`) because zod v4 arrays expose `unwrap()`, which
14
+ * would silently flatten the array level out of the paths.
15
+ */
10
16
  export declare function introspectSchema(schema: z.ZodTypeAny, prefix?: string[]): SchemaFieldMeta[];
11
17
  export declare function extractByPaths(data: Record<string, unknown>, paths: string[][]): Record<string, unknown>;
12
18
  /** Extract frontmatter fields marked as translatable. */
@@ -1 +1 @@
1
- {"version":3,"file":"introspect-schema.d.ts","sourceRoot":"","sources":["../../../src/core/introspect-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,eAAe,EAAE,CAsC/F;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EAAE,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK7G;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK3G;AAED,oFAAoF;AACpF,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,CAAC,CAAC,UAAU,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAsED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,eAAe,EAAE,CAE1E"}
1
+ {"version":3,"file":"introspect-schema.d.ts","sourceRoot":"","sources":["../../../src/core/introspect-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAaD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,eAAe,EAAE,CA4C/F;AAkDD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,EAAE,EAAE,GAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK7G;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK3G;AAED,oFAAoF;AACpF,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,CAAC,CAAC,UAAU,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAwCD,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,eAAe,EAAE,CAE1E"}
@@ -33,6 +33,8 @@ export interface LocalePresets {
33
33
  ultraLight?: string[];
34
34
  [name: string]: string[] | undefined;
35
35
  }
36
+ /** Derived fallback chains: locale → ordered locales tried before the default locale when the locale has no translation. */
37
+ export type LocaleFallbacks = Record<string, string[]>;
36
38
  /** How non-default locales appear in generated URLs. */
37
39
  export type LocaleRoutingConfig = {
38
40
  strategy: "path-prefix";
@@ -111,6 +113,8 @@ export interface ScribeConfigInput<TTypes extends readonly ContentTypeInput<any>
111
113
  /** How locale markers are applied to generated URLs. Default: path-prefix without default locale. */
112
114
  localeRouting?: LocaleRoutingConfig;
113
115
  localePresets?: LocalePresets;
116
+ /** Enable automatic locale fallback chains derived from locale tags — e.g. `"pt-BR"` is served from `"pt"` (before the default locale) when it has no translation. Default: `true`. */
117
+ localeFallbacks?: boolean;
114
118
  translate?: ScribeTranslateDefaults;
115
119
  types: TTypes;
116
120
  }
@@ -129,6 +133,8 @@ export interface ScribeConfig {
129
133
  defaultLocale: string;
130
134
  localeRouting: LocaleRoutingConfig;
131
135
  localePresets?: LocalePresets;
136
+ /** Fallback chains derived from locale tags (`{}` when the feature is disabled). */
137
+ localeFallbacks: LocaleFallbacks;
132
138
  translate?: ScribeTranslateDefaults;
133
139
  types: ContentTypeConfig[];
134
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,MAAM,CAAC;AAE1C,6GAA6G;AAC7G,MAAM,MAAM,OAAO,CAAC,IAAI,GAAG,cAAc,IACrC,MAAM,GACN,aAAa,GACb,cAAc,GACd,WAAW,GACX,YAAY,GACZ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;AAEnC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACtC;AAED,4HAA4H;AAC5H,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvD,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhD,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0CAA0C;AAC1C,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IAC3E,0FAA0F;IAC1F,EAAE,EAAE,MAAM,CAAC;IACX,0GAA0G;IAC1G,MAAM,EAAE,OAAO,CAAC;IAChB,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8HAA8H;IAC9H,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sEAAsE;IACtE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,iEAAiE;IACjE,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACtB,GAAG,EAAE,oBAAoB,KACtB,kBAAkB,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC5E,SAAQ,gBAAgB,CAAC,OAAO,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAChC,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,gBAAgB,EAAE;IAE7E,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8HAA8H;IAC9H,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yJAAyJ;IACzJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qGAAqG;IACrG,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,uLAAuL;IACvL,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oFAAoF;IACpF,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED,yDAAyD;AACzD,MAAM,WAAW,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,GAAG,cAAc;IAChD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,cAAc,IAAI,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEzF,gFAAgF;AAChF,MAAM,WAAW,gBAAgB,CAAC,IAAI,GAAG,cAAc;IACrD,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,GAAG,cAAc;IAChD,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;AAErF;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CACjC,IAAI,SAAS,cAAc,GAAG,cAAc,EAC5C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa;IAExD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAE1B,gGAAgG;IAChG,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/D,gGAAgG;IAChG,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACpD,sGAAsG;IACtG,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAElE,yFAAyF;IACzF,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,KAAK,WAAW,EAAE,CAAC;IAC3E,kHAAkH;IAClH,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,sGAAsG;IACtG,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9D,oEAAoE;IACpE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAE9C,6FAA6F;IAC7F,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,GAAG,MAAM,EACzC,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,CAAC,EACR,MAAM,CAAC,EAAE,MAAM,KACZ,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEjB,sFAAsF;IACtF,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,+DAA+D;AAC/D,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,IAAI,cAAc,CAClF,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CACrB,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;KACxE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAA;CAAE,IAAI,WAAW,CACzF,CAAC,CAAC,OAAO,CAAC,CACX,CAAC;AAEF,0CAA0C;AAC1C,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS;IAAE,KAAK,EAAE,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAA;CAAE,EACrD,EAAE,SAAS,MAAM,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IACrC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtB,KAAK,eAAe,CAAC,MAAM,IAAI,MAAM,SAAS;IAC5C,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;CAC3E,GACG,CAAC,GACD,KAAK,CAAC;AAEV,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,IACvD,OAAO,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,GACpC;KACG,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC5D,KAAK,GACL,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAClC,GACD,EAAE,CAAC;AAET,KAAK,UAAU,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,SAAS,aAAa,CACnD,MAAM,OAAO,EACb,MAAM,SAAS,EACf,MAAM,SAAS,CAChB,GACG,OAAO,SAAS,MAAM,OAAO,GAC3B,SAAS,SAAS,IAAI,GACpB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GACvB,SAAS,SAAS,IAAI,GACpB,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GACvB,OAAO,CAAC,OAAO,CAAC,GACtB,KAAK,GACL,KAAK,CAAC;AAEV,8FAA8F;AAC9F,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAC/B,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAC7C;KACD,CAAC,IAAI,MAAM,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,GAAG,UAAU,CAC7D,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,WAAW,CAAC,MAAM,CAAC,CACpB;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;IACpE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAC3D,sBAAsB,CAAC,CAAC,CAAC,EACzB,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CACzB;CACF,GAAG;IACF,yEAAyE;IACzE,OAAO,CACL,OAAO,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,GAC5D,OAAO,CAAC,OAAO,qBAAqB,EAAE,YAAY,EAAE,CAAC,CAAC;IACzD,8DAA8D;IAC9D,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACtC,iBAAiB,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CACvD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAA;CAAE,IAAI,MAAM,CACtF,CAAC,CAAC,OAAO,CAAC,CACX,CAAC;AAEF,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC5C,SAAS,EAAE,MAAM,kBAAkB,EAAE,CAAC;IACtC,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,kBAAkB,EAAE,CAAC;CAC/C;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,CAAC,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAChF,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAChC,iBAAiB,CAAC,MAAM,CAAC,CAE3B;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAC/B,KAAK,CAAC,GAAG,SAAS,MAAM,EACxB,OAAO,SAAS,CAAC,CAAC,UAAU,EAE5B,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,GAC9C,gBAAgB,CAAC,OAAO,CAAC,GAAG;IAAE,EAAE,EAAE,GAAG,CAAA;CAAE,CAEzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EAEZ,aAAa,EAEd,MAAM,iBAAiB,CAAC;AA2LzB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CA0BjE"}
1
+ {"version":3,"file":"create-project.d.ts","sourceRoot":"","sources":["../../src/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EAEZ,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAsMzB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CA0BjE"}
@@ -4,7 +4,7 @@ import type { LocaleRoutingConfig } from "../core/types.js";
4
4
  export declare function resolveLocalizedDocument<TDoc extends ScribeDocument>(slug: string, locale: string, defaultLocale: string, allDocs: ReadonlyMap<string, {
5
5
  bySlug: ReadonlyMap<string, TDoc>;
6
6
  byEnSlug: ReadonlyMap<string, TDoc>;
7
- }>, type: ContentTypeConfig, localeRouting?: LocaleRoutingConfig): ResolvedDocument<TDoc>;
7
+ }>, type: ContentTypeConfig, localeRouting?: LocaleRoutingConfig, fallbackLocales?: readonly string[]): ResolvedDocument<TDoc>;
8
8
  /** Map a document slug from one locale to another via the EN parent slug. */
9
9
  export declare function getSlugForLocale<TDoc extends ScribeDocument>(document: TDoc, sourceLocale: string, targetLocale: string, allDocs: ReadonlyMap<string, {
10
10
  bySlug: ReadonlyMap<string, TDoc>;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-document.d.ts","sourceRoot":"","sources":["../../../src/i18n/resolve-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,cAAc,EAClE,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;CAAE,CAAC,EACxG,IAAI,EAAE,iBAAiB,EACvB,aAAa,CAAC,EAAE,mBAAmB,GAClC,gBAAgB,CAAC,IAAI,CAAC,CA2DxB;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,cAAc,EAC1D,QAAQ,EAAE,IAAI,EACd,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;CAAE,CAAC,EACxG,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"resolve-document.d.ts","sourceRoot":"","sources":["../../../src/i18n/resolve-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,sFAAsF;AACtF,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,cAAc,EAClE,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;CAAE,CAAC,EACxG,IAAI,EAAE,iBAAiB,EACvB,aAAa,CAAC,EAAE,mBAAmB,EACnC,eAAe,GAAE,SAAS,MAAM,EAAO,GACtC,gBAAgB,CAAC,IAAI,CAAC,CA+ExB;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,SAAS,cAAc,EAC1D,QAAQ,EAAE,IAAI,EACd,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;CAAE,CAAC,EACxG,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAQf"}
@@ -1,7 +1,7 @@
1
1
  export { field, getRelationTarget, getFieldKind, unwrapSchema } from "./core/field.js";
2
2
  export type { RelationBrand, RelationField, RelationFieldOptions, RelationMeta, } from "./core/field.js";
3
3
  export { defineConfig, defineContentType } from "./core/types.js";
4
- export type { ScribeConfigInput, ScribeConfig, ScribeProject, ScribeDocument, ContentTypeInput, ContentTypeConfig, ContentTypeRuntime, ListOptions, OrderBy, StaticParam, LocaleIndex, AllDocuments, ResolvedDocument, CrossValidateContext, CrossValidateIssue, TranslateConfig, ScribeTranslateDefaults, LocalePresets, LocaleRoutingConfig, SlugStrategy, IndexFallback, Scribe, InferDocMap, InferDocFromTypeConfig, RelationFieldsOf, RelatedMapFor, ScribeClient, ScribeDocs, ScribeDocOf, } from "./core/types.js";
4
+ export type { ScribeConfigInput, ScribeConfig, ScribeProject, ScribeDocument, ContentTypeInput, ContentTypeConfig, ContentTypeRuntime, ListOptions, OrderBy, StaticParam, LocaleIndex, AllDocuments, ResolvedDocument, CrossValidateContext, CrossValidateIssue, TranslateConfig, ScribeTranslateDefaults, LocalePresets, LocaleFallbacks, LocaleRoutingConfig, SlugStrategy, IndexFallback, Scribe, InferDocMap, InferDocFromTypeConfig, RelationFieldsOf, RelatedMapFor, ScribeClient, ScribeDocs, ScribeDocOf, } from "./core/types.js";
5
5
  export { createScribe } from "./create-scribe.js";
6
6
  export { createProject } from "./create-project.js";
7
7
  export { isRoutableType, createUrlBuilder } from "./i18n/build-url.js";
@@ -15,8 +15,8 @@ export type { NextRedirectRule } from "./redirects/types.js";
15
15
  export type { RedirectSourceSlugs } from "./redirects/build-redirects.js";
16
16
  export { buildWorklist, resolveLocalesFromPreset } from "./translate/worklist.js";
17
17
  export type { TranslationWorklistStrategy, TranslationWorkItem, WorklistOptions } from "./translate/worklist.js";
18
- export { translatePage, translateWorklist } from "./translate/page-translator.js";
19
- export type { TranslatePageResult, TranslateProgressEvent, TranslateWorklistTotals, } from "./translate/page-translator.js";
18
+ export { resumeTranslationJobs, translatePage, translateWorklist } from "./translate/page-translator.js";
19
+ export type { TranslateMode, TranslatePageResult, TranslateProgressEvent, TranslateWorklistTotals, } from "./translate/page-translator.js";
20
20
  export { generateSitemap } from "./sitemap/generate-sitemap.js";
21
21
  export type { GenerateSitemapOptions, SitemapAlternateLanguages, SitemapChangeFrequency, SitemapEntry, SitemapTypeDefaults, } from "./sitemap/types.js";
22
22
  export { buildStaticRawExports, exportDirSegment, getStaticExportRoots, } from "./export/build-static-raw-exports.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACvF,YAAY,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAClF,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,4BAA4B,EAC5B,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACvF,YAAY,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACjH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACzG,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,YAAY,EACV,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EACV,4BAA4B,EAC5B,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,YAAY,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type Database from "better-sqlite3";
2
+ export type BatchItemStatus = "pending" | "done" | "failed" | "stale-skipped";
3
+ export interface BatchJobRow {
4
+ id: number;
5
+ job_name: string;
6
+ model: string;
7
+ display_model: string;
8
+ created_at: string;
9
+ state: string;
10
+ completed_at: string | null;
11
+ }
12
+ export interface BatchItemRow {
13
+ job_id: number;
14
+ request_index: number;
15
+ content_type: string;
16
+ en_slug: string;
17
+ locale: string;
18
+ en_hash: string;
19
+ snapshot_id: number;
20
+ status: BatchItemStatus;
21
+ error: string | null;
22
+ }
23
+ export interface BatchJobInput {
24
+ jobName: string;
25
+ model: string;
26
+ displayModel: string;
27
+ state: string;
28
+ createdAt: string;
29
+ }
30
+ export interface BatchItemInput {
31
+ requestIndex: number;
32
+ contentType: string;
33
+ enSlug: string;
34
+ locale: string;
35
+ enHash: string;
36
+ snapshotId: number;
37
+ }
38
+ export declare function insertBatchJob(db: Database.Database, input: BatchJobInput): number;
39
+ export declare function insertBatchItems(db: Database.Database, jobId: number, items: BatchItemInput[]): void;
40
+ /** Jobs not yet fully ingested (no completed_at), oldest first. */
41
+ export declare function listPendingBatchJobs(db: Database.Database): BatchJobRow[];
42
+ export declare function listBatchItems(db: Database.Database, jobId: number): BatchItemRow[];
43
+ /** Pending items across all non-completed jobs (i.e. requests still in flight). */
44
+ export declare function listPendingBatchItems(db: Database.Database): BatchItemRow[];
45
+ /**
46
+ * Atomically claim a terminal job for ingestion by stamping completed_at.
47
+ * Returns false when another process already completed it — concurrent scribe
48
+ * runs adopt each other's pending jobs, so two pollers can reach the same
49
+ * terminal job; only the one whose claim succeeds may ingest its results.
50
+ */
51
+ export declare function claimBatchJobCompletion(db: Database.Database, jobId: number, state: string, completedAt: string): boolean;
52
+ export declare function updateBatchItemStatus(db: Database.Database, jobId: number, requestIndex: number, status: BatchItemStatus, error?: string): void;
53
+ //# sourceMappingURL=batch-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-jobs.d.ts","sourceRoot":"","sources":["../../../src/storage/batch-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAQlF;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,cAAc,EAAE,GACtB,IAAI,CAiBN;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,EAAE,CAIzE;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAInF;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,EAAE,CAS3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAQT;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,EACvB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAIN"}
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/storage/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsDrD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAElD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAwB,GAAG,QAAQ,CAAC,QAAQ,CAUjG;AAwCD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEtD"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/storage/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6ErD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAElD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAwB,GAAG,QAAQ,CAAC,QAAQ,CAUjG;AA4CD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEtD"}
@@ -0,0 +1,87 @@
1
+ import type { ScribeConfig } from "../core/types.js";
2
+ import { type BatchItemRow, type BatchJobRow } from "../storage/batch-jobs.js";
3
+ import { type PreparedTranslation, type TranslatePageResult, type TranslateProgressEvent } from "./translate-core.js";
4
+ import type { TranslationWorkItem } from "./worklist.js";
5
+ export declare const MAX_REQUESTS_PER_JOB = 100;
6
+ export declare const MAX_PROMPT_BYTES_PER_JOB: number;
7
+ export interface BatchPlanEntry {
8
+ apiModel: string;
9
+ prompt: string;
10
+ }
11
+ export interface BatchJobPlan<T extends BatchPlanEntry> {
12
+ apiModel: string;
13
+ entries: T[];
14
+ }
15
+ /**
16
+ * Group entries by API model, then chunk each group by request count and total
17
+ * prompt bytes so every plan fits in one inline batch job.
18
+ */
19
+ export declare function planBatchJobs<T extends BatchPlanEntry>(entries: T[]): BatchJobPlan<T>[];
20
+ export interface PendingBatchWork {
21
+ jobs: BatchJobRow[];
22
+ /** translationItemKey() of every request still in flight. */
23
+ inFlightKeys: Set<string>;
24
+ pendingItems: BatchItemRow[];
25
+ }
26
+ /**
27
+ * Load non-completed batch jobs and their in-flight items from the store.
28
+ * Opens the store readwrite so migrations run before the new tables are read.
29
+ */
30
+ export declare function readPendingBatchWork(config: ScribeConfig): PendingBatchWork;
31
+ export interface SubmitPlanInput<T extends BatchPlanEntry & {
32
+ prepared: PreparedTranslation;
33
+ }> {
34
+ plan: BatchJobPlan<T>;
35
+ displayModel: string;
36
+ jobIndex: number;
37
+ jobCount: number;
38
+ onProgress?: (event: TranslateProgressEvent) => void;
39
+ }
40
+ /**
41
+ * Submit one planned job and persist it (job row + item rows + EN snapshots)
42
+ * immediately, before any polling starts, so an interrupt loses nothing.
43
+ */
44
+ export declare function submitBatchJobPlan<T extends BatchPlanEntry & {
45
+ prepared: PreparedTranslation;
46
+ }>(config: ScribeConfig, input: SubmitPlanInput<T>): Promise<BatchJobRow>;
47
+ /** The subset of a Gemini BatchJob that ingestion needs (test-friendly). */
48
+ export interface BatchJobResultLike {
49
+ state?: string;
50
+ error?: {
51
+ message?: string;
52
+ };
53
+ dest?: {
54
+ inlinedResponses?: Array<{
55
+ response?: unknown;
56
+ error?: {
57
+ message?: string;
58
+ };
59
+ }>;
60
+ };
61
+ }
62
+ /**
63
+ * Ingest a terminal batch job: run every pending item through the shared
64
+ * finalize path (or mark it failed), update item statuses, and mark the job
65
+ * completed. Returns one result per pending item, or null when a concurrent
66
+ * scribe process already claimed and ingested the job (runs adopt each
67
+ * other's pending jobs, so two pollers can reach the same terminal job).
68
+ *
69
+ * The completion claim is stamped before items are processed so exactly one
70
+ * process ingests. Ingestion is synchronous end-to-end; should a hard kill
71
+ * still land mid-way, the leftover items are no longer counted in-flight and
72
+ * the next run simply resubmits them.
73
+ */
74
+ export declare function ingestBatchJob(config: ScribeConfig, jobRow: BatchJobRow, batchJob: BatchJobResultLike, onResult?: (result: TranslatePageResult) => void): TranslatePageResult[] | null;
75
+ /**
76
+ * Poll every tracked job together and ingest each one the moment it reaches a
77
+ * terminal state — no job waits for another. The first status check happens
78
+ * immediately so already-finished jobs (resume) ingest without delay.
79
+ */
80
+ export declare function pollAndIngestBatchJobs(config: ScribeConfig, jobs: BatchJobRow[], options?: {
81
+ jobCount?: number;
82
+ onProgress?: (event: TranslateProgressEvent) => void;
83
+ onResult?: (result: TranslatePageResult) => void;
84
+ }): Promise<void>;
85
+ /** Result shape helper for items that never reached submission. */
86
+ export declare function failedResultForItem(item: TranslationWorkItem, error: unknown, startedAt: number): TranslatePageResult;
87
+ //# sourceMappingURL=batch-worklist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-worklist.d.ts","sourceRoot":"","sources":["../../../src/translate/batch-worklist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type BatchJob, type JobState, type GenerateContentResponse, type InlinedRequest } from "@google/genai";
2
+ /** Strip the JOB_STATE_/BATCH_STATE_ family prefix: "BATCH_STATE_RUNNING" -> "RUNNING". */
3
+ export declare function normalizeBatchState(state: JobState | string | undefined): string;
4
+ export declare function isTerminalBatchState(state: JobState | string | undefined): boolean;
5
+ export declare function isSuccessfulBatchState(state: JobState | string | undefined): boolean;
6
+ /**
7
+ * Extract the text payload from a batch GenerateContentResponse. Batch inlined
8
+ * responses are plain JSON objects (the SDK does not rebuild the class), so the
9
+ * `.text` getter is unavailable — read candidates/parts directly and skip
10
+ * thought parts.
11
+ */
12
+ export declare function textFromBatchResponse(response: GenerateContentResponse): string;
13
+ /** Submit one Gemini Batch API job with inlined requests. */
14
+ export declare function createGeminiBatchJob(input: {
15
+ /** API model id (already resolved from the display name). */
16
+ model: string;
17
+ requests: InlinedRequest[];
18
+ apiKey?: string;
19
+ displayName?: string;
20
+ }): Promise<BatchJob>;
21
+ /** Fetch the current state (and, when terminal, results) of a batch job. */
22
+ export declare function getGeminiBatchJob(input: {
23
+ name: string;
24
+ apiKey?: string;
25
+ }): Promise<BatchJob>;
26
+ //# sourceMappingURL=gemini-batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-batch.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-batch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAmBvB,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAEhF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpF;AAUD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,CAO/E;AAED,6DAA6D;AAC7D,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAWpB;AAED,4EAA4E;AAC5E,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAGpB"}
@@ -1,6 +1,10 @@
1
+ import { type GenerateContentConfig, type GenerateContentResponse } from "@google/genai";
1
2
  export interface GeminiTokenUsage {
2
3
  inputTokens: number;
4
+ /** Billed output tokens; INCLUDES thoughts tokens. */
3
5
  outputTokens: number;
6
+ /** Thoughts (reasoning) tokens, billed as output. */
7
+ thoughtsTokens: number;
4
8
  totalTokens: number;
5
9
  }
6
10
  export interface GeminiTranslationResult {
@@ -13,6 +17,25 @@ export interface GeminiTranslationResult {
13
17
  };
14
18
  usage: GeminiTokenUsage;
15
19
  }
20
+ export declare function parseGeminiResponse(text: string): {
21
+ frontmatter: Record<string, unknown>;
22
+ body: string;
23
+ slug?: string;
24
+ };
25
+ /**
26
+ * Build the per-request generation config shared by the direct and batch paths.
27
+ * The same shape is passed to `generateContent` and to each inlined batch request.
28
+ */
29
+ export declare function buildGeminiRequestConfig(input: {
30
+ apiModelId: string;
31
+ responseSchema?: Record<string, unknown>;
32
+ }): GenerateContentConfig;
33
+ /**
34
+ * Extract token usage from a Gemini response; thoughts are folded into output.
35
+ * Batch inlined responses arrive as raw JSON rather than SDK class instances,
36
+ * so tolerate both camelCase and snake_case field names.
37
+ */
38
+ export declare function usageFromResponse(response: GenerateContentResponse): GeminiTokenUsage;
16
39
  export declare function translatePageWithGemini(input: {
17
40
  prompt: string;
18
41
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-client.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAWD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuCnC"}
1
+ {"version":3,"file":"gemini-client.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,qBAAqB,EAAE,KAAK,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAWtG,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAcD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IACjD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAgBA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,GAAG,qBAAqB,CAOxB;AAaD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,gBAAgB,CAarF;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8BnC"}
@@ -1,3 +1,4 @@
1
+ import { type ThinkingConfig } from "@google/genai";
1
2
  /** Display name -> Gemini API model id. Pricing and logs use the display name. */
2
3
  export declare const GEMINI_MODEL_IDS: Record<string, string>;
3
4
  export declare const DEFAULT_GEMINI_MODEL = "gemini-3.1-pro";
@@ -5,4 +6,12 @@ export declare const DEFAULT_GEMINI_MODEL = "gemini-3.1-pro";
5
6
  export declare function resolveGeminiModelId(model: string): string;
6
7
  /** Normalize any model id/alias to the display name used for pricing. */
7
8
  export declare function normalizeGeminiDisplayName(model: string): string;
9
+ /**
10
+ * Resolve the thinking config to keep translation cheap and predictable.
11
+ * - Gemini 3.x: `thinkingLevel: LOW` (the 2.5-style `thinkingBudget` is unsupported).
12
+ * - Gemini 2.5-pro: cannot fully disable thinking; use the minimum budget of 128.
13
+ * - Unknown/passthrough ids: LOW for "gemini-3*", budget 128 for ids containing "2.5",
14
+ * otherwise no thinking config (let the model default).
15
+ */
16
+ export declare function resolveThinkingConfig(apiModelId: string): ThinkingConfig | undefined;
8
17
  //# sourceMappingURL=gemini-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-models.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-models.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAMrD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE"}
1
+ {"version":3,"file":"gemini-models.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAMrD,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAKpF"}
@@ -5,7 +5,8 @@ export interface TieredModelPricing {
5
5
  /** display_name -> { input: (le_200k, gt_200k), output: (le_200k, gt_200k) } in USD per 1M tokens */
6
6
  export declare const GEMINI_PRICING_USD: Record<string, TieredModelPricing>;
7
7
  export declare function resolveModelPricing(model: string): TieredModelPricing | undefined;
8
- export declare function estimateTranslationCostUsd(model: string, inputTokens: number, outputTokens: number): number | undefined;
8
+ export type TranslationCostMode = "interactive" | "batch";
9
+ export declare function estimateTranslationCostUsd(model: string, inputTokens: number, outputTokens: number, mode?: TranslationCostMode): number | undefined;
9
10
  export declare function formatTokenCount(tokens: number): string;
10
11
  export declare function formatUsd(amount: number | undefined): string;
11
12
  //# sourceMappingURL=gemini-pricing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-pricing.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-pricing.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,EAAE,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;CAC7E;AAED,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAEjE,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAMjF;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK5D"}
1
+ {"version":3,"file":"gemini-pricing.d.ts","sourceRoot":"","sources":["../../../src/translate/gemini-pricing.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,EAAE,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;CAC7E;AAED,qGAAqG;AACrG,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAEjE,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAMjF;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,CAAC;AAK1D,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,mBAAmC,GACxC,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK5D"}
@@ -1,67 +1,40 @@
1
1
  import type { ScribeConfig } from "../core/types.js";
2
+ import { finalizeTranslation, type PreparedTranslation, type TranslateMode, type TranslatePageResult, type TranslateProgressEvent, type TranslateWorklistTotals } from "./translate-core.js";
2
3
  import type { TranslationWorkItem } from "./worklist.js";
3
- export interface TranslatePageResult {
4
- contentType: string;
5
- enSlug: string;
6
- locale: string;
7
- skipped: boolean;
8
- failed?: boolean;
9
- reason?: "fresh";
10
- model?: string;
11
- usage?: {
12
- inputTokens: number;
13
- outputTokens: number;
14
- totalTokens: number;
15
- };
16
- estimatedCostUsd?: number;
17
- durationMs?: number;
18
- error?: string;
19
- slugAdjusted?: {
20
- from: string;
21
- to: string;
22
- matchedCode: string;
23
- };
24
- mdxAdjusted?: boolean;
25
- }
26
- export interface TranslateWorklistTotals {
27
- translated: number;
28
- skipped: number;
29
- failed: number;
30
- inputTokens: number;
31
- outputTokens: number;
32
- estimatedCostUsd: number;
33
- durationMs: number;
34
- }
35
- export type TranslateProgressEvent = {
36
- type: "start";
37
- total: number;
38
- concurrency: number;
39
- dryRun: boolean;
40
- model?: string;
41
- } | {
42
- type: "item-start";
43
- item: TranslationWorkItem;
44
- active: string[];
45
- } | {
46
- type: "item-done";
47
- result: TranslatePageResult;
48
- } | {
49
- type: "done";
50
- results: TranslatePageResult[];
51
- totals: TranslateWorklistTotals;
52
- };
53
- /** Translate one locale page via Gemini and upsert into SQLite. */
4
+ export { finalizeTranslation, type PreparedTranslation, type TranslateMode, type TranslatePageResult, type TranslateProgressEvent, type TranslateWorklistTotals, };
5
+ /**
6
+ * Translate one locale page via a direct (interactive) Gemini call and upsert
7
+ * into SQLite. Used by the studio server and other single-page callers; the
8
+ * worklist path defaults to the Batch API instead.
9
+ */
54
10
  export declare function translatePage(config: ScribeConfig, item: TranslationWorkItem, options?: {
55
11
  model?: string;
56
12
  dryRun?: boolean;
57
13
  force?: boolean;
58
14
  }): Promise<TranslatePageResult>;
59
- /** Translate a batch of worklist items with bounded concurrency. */
15
+ /**
16
+ * Translate a batch of worklist items. By default the whole worklist goes
17
+ * through the Gemini Batch API (50% token pricing): jobs are planned upfront
18
+ * (grouped by model, chunked by size), submitted together, persisted for
19
+ * resumability, then polled until every job lands. `mode: "direct"` restores
20
+ * the interactive per-page pool (where `concurrency` applies). Any pending
21
+ * jobs from a previous interrupted run are polled and ingested alongside the
22
+ * new work, and their in-flight items are excluded from resubmission.
23
+ */
60
24
  export declare function translateWorklist(config: ScribeConfig, items: TranslationWorkItem[], options?: {
61
25
  model?: string;
62
26
  dryRun?: boolean;
63
27
  force?: boolean;
64
28
  concurrency?: number;
29
+ mode?: TranslateMode;
65
30
  onProgress?: (event: TranslateProgressEvent) => void;
66
31
  }): Promise<TranslatePageResult[]>;
32
+ /**
33
+ * Poll and ingest pending batch jobs from a previous run without submitting
34
+ * anything new (`scribe translate --resume`). Returns null when there is
35
+ * nothing to resume.
36
+ */
37
+ export declare function resumeTranslationJobs(config: ScribeConfig, options?: {
38
+ onProgress?: (event: TranslateProgressEvent) => void;
39
+ }): Promise<TranslatePageResult[] | null>;
67
40
  //# sourceMappingURL=page-translator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-translator.d.ts","sourceRoot":"","sources":["../../../src/translate/page-translator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAcrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACtF;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAkEtF,mEAAmE;AACnE,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC,mBAAmB,CAAC,CAgI9B;AAMD,oEAAoE;AACpE,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACjD,GACL,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6BhC"}
1
+ {"version":3,"file":"page-translator.d.ts","sourceRoot":"","sources":["../../../src/translate/page-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,OAAO,EAGL,mBAAmB,EAInB,KAAK,mBAAmB,EAExB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,CAAC;AAsBF;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC,mBAAmB,CAAC,CAoC9B;AAqCD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACjD,GACL,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA8IhC;AAiCD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAA;CAAO,GACrE,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,CA2BvC"}
@@ -2,6 +2,12 @@ import type { ResolvedTranslateConfig } from "../resolve-translate-config.js";
2
2
  import type { SlugStrategy } from "../../core/types.js";
3
3
  export declare const LOCALE_NAMES: Record<string, string>;
4
4
  export declare function defaultLocalizationPrompt(localeName: string, locale: string): string;
5
+ /**
6
+ * Build a page translation prompt whose prefix (everything up to and including
7
+ * the EN body) does not vary with locale, and whose suffix carries all
8
+ * locale-specific instructions. This lets Gemini reuse the cached prefix when the
9
+ * same page is translated into multiple locales.
10
+ */
5
11
  export declare function buildPageTranslationPrompt(input: {
6
12
  resolved: ResolvedTranslateConfig;
7
13
  targetLocale: string;
@@ -1 +1 @@
1
- {"version":3,"file":"translation-prompt.d.ts","sourceRoot":"","sources":["../../../../src/translate/prompts/translation-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAgB/C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOpF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CAiCT"}
1
+ {"version":3,"file":"translation-prompt.d.ts","sourceRoot":"","sources":["../../../../src/translate/prompts/translation-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiB/C,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOpF;AA2BD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CA2CT"}
@@ -2,6 +2,13 @@ import { z } from "zod";
2
2
  import type { SlugStrategy } from "../core/types.js";
3
3
  /** Build a Zod object schema containing only translatable fields (including nested in structural arrays). */
4
4
  export declare function buildTranslatableSubschema(schema: z.ZodTypeAny): z.ZodObject | null;
5
- /** JSON Schema for Gemini structured output: `{ frontmatter, body, slug? }`. */
5
+ /**
6
+ * JSON Schema for Gemini structured output: `{ frontmatter, body, slug? }`.
7
+ * Types without translatable frontmatter get a body-only schema (Gemini
8
+ * rejects OBJECT schemas with empty `properties`); parsing then defaults the
9
+ * missing frontmatter to `{}`. Skipping the schema entirely instead would
10
+ * leave the model free-handing JSON, which fails often on MDX bodies
11
+ * (unescaped newlines, trailing prose after the JSON).
12
+ */
6
13
  export declare function buildGeminiResponseSchema(schema: z.ZodTypeAny, slugStrategy: SlugStrategy): Record<string, unknown> | null;
7
14
  //# sourceMappingURL=response-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response-schema.d.ts","sourceRoot":"","sources":["../../../src/translate/response-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmCrD,6GAA6G;AAC7G,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAkBnF;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,YAAY,EAAE,YAAY,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC"}
1
+ {"version":3,"file":"response-schema.d.ts","sourceRoot":"","sources":["../../../src/translate/response-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmCrD,6GAA6G;AAC7G,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAkBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,CAAC,CAAC,UAAU,EACpB,YAAY,EAAE,YAAY,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAsBhC"}
@@ -0,0 +1,16 @@
1
+ /** Classify whether an error is transient and safe to retry. */
2
+ export declare function isTransientError(error: unknown): boolean;
3
+ export interface RetryOptions {
4
+ attempts?: number;
5
+ baseDelayMs?: number;
6
+ /** Injectable sleep for tests; defaults to real setTimeout. */
7
+ sleep?: (ms: number) => Promise<void>;
8
+ /** Injectable jitter in [0, 1); defaults to Math.random. */
9
+ random?: () => number;
10
+ }
11
+ /**
12
+ * Run `fn` with exponential backoff + jitter, retrying only transient failures
13
+ * (HTTP 429/5xx and network errors). Non-transient errors throw immediately.
14
+ */
15
+ export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
16
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/translate/retry.ts"],"names":[],"mappings":"AA4CA,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIxD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAID;;;GAGG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAoB/F"}