@lokalise/polyglot-sdk 24.6.0 → 24.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './sdk/contracts/contextSufficiencyContracts.ts';
2
2
  export * from './sdk/contracts/reviewContracts.ts';
3
+ export * from './sdk/contracts/shadowReplayContracts.ts';
3
4
  export * from './sdk/contracts/translationContracts.ts';
4
5
  export { PolyglotError } from './sdk/errors/PolyglotError.ts';
5
6
  export * from './sdk/helpers/htmlEscaping.ts';
@@ -18,6 +19,7 @@ export * from './sdk/schemas/context-sufficiency/contextSufficiencySyncSchemas.t
18
19
  export * from './sdk/schemas/lqa/commonSchemas.ts';
19
20
  export * from './sdk/schemas/lqa/lqaAsyncSchemas.ts';
20
21
  export * from './sdk/schemas/lqa/lqaSyncSchemas.ts';
22
+ export * from './sdk/schemas/shadow-replay/manualReplaySchemas.ts';
21
23
  export * from './sdk/schemas/translation/generateVariants.ts';
22
24
  export * from './sdk/schemas/translation/rewriteTextSchemas.ts';
23
25
  export * from './sdk/schemas/translation/sharedSchemas.ts';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./sdk/contracts/contextSufficiencyContracts.js";
2
2
  export * from "./sdk/contracts/reviewContracts.js";
3
+ export * from "./sdk/contracts/shadowReplayContracts.js";
3
4
  export * from "./sdk/contracts/translationContracts.js";
4
5
  export { PolyglotError } from "./sdk/errors/PolyglotError.js";
5
6
  export * from "./sdk/helpers/htmlEscaping.js";
@@ -17,6 +18,7 @@ export * from "./sdk/schemas/context-sufficiency/contextSufficiencySyncSchemas.j
17
18
  export * from "./sdk/schemas/lqa/commonSchemas.js";
18
19
  export * from "./sdk/schemas/lqa/lqaAsyncSchemas.js";
19
20
  export * from "./sdk/schemas/lqa/lqaSyncSchemas.js";
21
+ export * from "./sdk/schemas/shadow-replay/manualReplaySchemas.js";
20
22
  export * from "./sdk/schemas/translation/generateVariants.js";
21
23
  export * from "./sdk/schemas/translation/rewriteTextSchemas.js";
22
24
  export * from "./sdk/schemas/translation/sharedSchemas.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oCAAoC,CAAA;AAClD,cAAc,yCAAyC,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,8CAA8C,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,2CAA2C,CAAA;AASzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,mDAAmD,CAAA;AAC1D,cAAc,oEAAoE,CAAA;AAClF,cAAc,oCAAoC,CAAA;AAClD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,4CAA4C,CAAA;AAC1D,cAAc,oDAAoD,CAAA;AAClE,cAAc,mDAAmD,CAAA;AACjE,cAAc,0DAA0D,CAAA;AAExE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oCAAoC,CAAA;AAClD,cAAc,0CAA0C,CAAA;AACxD,cAAc,yCAAyC,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,8CAA8C,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,4CAA4C,CAAA;AAC1D,cAAc,2CAA2C,CAAA;AASzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,mDAAmD,CAAA;AAC1D,cAAc,oEAAoE,CAAA;AAClF,cAAc,oCAAoC,CAAA;AAClD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oDAAoD,CAAA;AAClE,cAAc,+CAA+C,CAAA;AAC7D,cAAc,iDAAiD,CAAA;AAC/D,cAAc,4CAA4C,CAAA;AAC1D,cAAc,oDAAoD,CAAA;AAClE,cAAc,mDAAmD,CAAA;AACjE,cAAc,0DAA0D,CAAA;AAExE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,IAAI,6BAA6B,GAC3D,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Internal endpoint to manually trigger a shadow replay for a given primary request. A manual
3
+ * trigger is an explicit operator selection, so it bypasses sampling and the global shadow-replay
4
+ * enable flag.
5
+ */
6
+ export declare const manualReplayContract: {
7
+ readonly method: "post";
8
+ readonly pathResolver: () => string;
9
+ readonly requestBodySchema: import("zod/v4").ZodObject<{
10
+ requestId: import("zod/v4").ZodUUID;
11
+ requestType: import("zod/v4").ZodEnum<{
12
+ readonly TRANSLATION_SYNC: "TRANSLATION_SYNC";
13
+ readonly TRANSLATION_ASYNC: "TRANSLATION_ASYNC";
14
+ }>;
15
+ overrides: import("zod/v4").ZodOptional<import("zod/v4").ZodObject<{
16
+ integration: import("zod/v4").ZodOptional<import("zod/v4").ZodEnum<{
17
+ readonly FAKE: "Fake";
18
+ readonly CLAUDE: "Claude";
19
+ readonly CLAUDE_BEDROCK: "Claude-Bedrock";
20
+ readonly GPT: "GPT";
21
+ readonly GEMINI: "Gemini";
22
+ readonly DEEPL: "DeepL";
23
+ readonly GOOGLE_TRANSLATE: "GoogleTranslate";
24
+ }>>;
25
+ modelName: import("zod/v4").ZodOptional<import("zod/v4").ZodString>;
26
+ }, import("zod/v4/core").$strip>>;
27
+ }, import("zod/v4/core").$strip>;
28
+ readonly summary: "Trigger shadow replay (internal)";
29
+ readonly description: "Manually triggers a shadow replay for an existing primary request. Internal use only.";
30
+ readonly tags: readonly ["Shadow Replay (internal)"];
31
+ readonly responsesByStatusCode: {
32
+ readonly 202: import("zod/v4").ZodObject<{
33
+ replayId: import("zod/v4").ZodUUID;
34
+ }, import("zod/v4/core").$strip>;
35
+ readonly 400: import("zod/v4").ZodObject<{
36
+ message: import("zod/v4").ZodString;
37
+ errorCode: import("zod/v4").ZodString;
38
+ details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodUnknown>>;
39
+ }, import("zod/v4/core").$strip>;
40
+ readonly 404: import("zod/v4").ZodObject<{
41
+ message: import("zod/v4").ZodString;
42
+ errorCode: import("zod/v4").ZodString;
43
+ details: import("zod/v4").ZodOptional<import("zod/v4").ZodRecord<import("zod/v4").ZodString, import("zod/v4").ZodUnknown>>;
44
+ }, import("zod/v4/core").$strip>;
45
+ };
46
+ };
@@ -0,0 +1,22 @@
1
+ import { defineApiContract } from '@lokalise/api-contracts';
2
+ import { COMMON_ERROR_RESPONSE_SCHEMA } from "../schemas/common/commonSchemas.js";
3
+ import { MANUAL_REPLAY_BODY_SCHEMA, MANUAL_REPLAY_RESPONSE_SCHEMA, } from "../schemas/shadow-replay/manualReplaySchemas.js";
4
+ /**
5
+ * Internal endpoint to manually trigger a shadow replay for a given primary request. A manual
6
+ * trigger is an explicit operator selection, so it bypasses sampling and the global shadow-replay
7
+ * enable flag.
8
+ */
9
+ export const manualReplayContract = defineApiContract({
10
+ method: 'post',
11
+ pathResolver: () => '/v1/request-replay',
12
+ requestBodySchema: MANUAL_REPLAY_BODY_SCHEMA,
13
+ summary: 'Trigger shadow replay (internal)',
14
+ description: 'Manually triggers a shadow replay for an existing primary request. Internal use only.',
15
+ tags: ['Shadow Replay (internal)'],
16
+ responsesByStatusCode: {
17
+ 202: MANUAL_REPLAY_RESPONSE_SCHEMA,
18
+ 400: COMMON_ERROR_RESPONSE_SCHEMA,
19
+ 404: COMMON_ERROR_RESPONSE_SCHEMA,
20
+ },
21
+ });
22
+ //# sourceMappingURL=shadowReplayContracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowReplayContracts.js","sourceRoot":"","sources":["../../../src/sdk/contracts/shadowReplayContracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EACL,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,iDAAiD,CAAA;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;IACxC,iBAAiB,EAAE,yBAAyB;IAC5C,OAAO,EAAE,kCAAkC;IAC3C,WAAW,EACT,uFAAuF;IACzF,IAAI,EAAE,CAAC,0BAA0B,CAAC;IAClC,qBAAqB,EAAE;QACrB,GAAG,EAAE,6BAA6B;QAClC,GAAG,EAAE,4BAA4B;QACjC,GAAG,EAAE,4BAA4B;KAClC;CACF,CAAC,CAAA"}
@@ -0,0 +1,52 @@
1
+ import z from 'zod/v4';
2
+ import type { ObjectValues } from '../../types/common.ts';
3
+ /**
4
+ * Primary request types a manual replay can target. Restricted to translation operations: the
5
+ * shadow replay executor only knows how to re-run translation requests today, so accepting LQA
6
+ * task types would create replays no worker could fulfil. Widen this once LQA replay lands.
7
+ */
8
+ export declare const ManualReplayRequestTypeEnum: {
9
+ readonly TRANSLATION_SYNC: "TRANSLATION_SYNC";
10
+ readonly TRANSLATION_ASYNC: "TRANSLATION_ASYNC";
11
+ };
12
+ export type ManualReplayRequestTypeEnum = ObjectValues<typeof ManualReplayRequestTypeEnum>;
13
+ export declare const MANUAL_REPLAY_REQUEST_TYPE_SCHEMA: z.ZodEnum<{
14
+ readonly TRANSLATION_SYNC: "TRANSLATION_SYNC";
15
+ readonly TRANSLATION_ASYNC: "TRANSLATION_ASYNC";
16
+ }>;
17
+ export declare const MANUAL_REPLAY_OVERRIDES_SCHEMA: z.ZodObject<{
18
+ integration: z.ZodOptional<z.ZodEnum<{
19
+ readonly FAKE: "Fake";
20
+ readonly CLAUDE: "Claude";
21
+ readonly CLAUDE_BEDROCK: "Claude-Bedrock";
22
+ readonly GPT: "GPT";
23
+ readonly GEMINI: "Gemini";
24
+ readonly DEEPL: "DeepL";
25
+ readonly GOOGLE_TRANSLATE: "GoogleTranslate";
26
+ }>>;
27
+ modelName: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>;
29
+ export declare const MANUAL_REPLAY_BODY_SCHEMA: z.ZodObject<{
30
+ requestId: z.ZodUUID;
31
+ requestType: z.ZodEnum<{
32
+ readonly TRANSLATION_SYNC: "TRANSLATION_SYNC";
33
+ readonly TRANSLATION_ASYNC: "TRANSLATION_ASYNC";
34
+ }>;
35
+ overrides: z.ZodOptional<z.ZodObject<{
36
+ integration: z.ZodOptional<z.ZodEnum<{
37
+ readonly FAKE: "Fake";
38
+ readonly CLAUDE: "Claude";
39
+ readonly CLAUDE_BEDROCK: "Claude-Bedrock";
40
+ readonly GPT: "GPT";
41
+ readonly GEMINI: "Gemini";
42
+ readonly DEEPL: "DeepL";
43
+ readonly GOOGLE_TRANSLATE: "GoogleTranslate";
44
+ }>>;
45
+ modelName: z.ZodOptional<z.ZodString>;
46
+ }, z.core.$strip>>;
47
+ }, z.core.$strip>;
48
+ export declare const MANUAL_REPLAY_RESPONSE_SCHEMA: z.ZodObject<{
49
+ replayId: z.ZodUUID;
50
+ }, z.core.$strip>;
51
+ export type ManualReplayBody = z.infer<typeof MANUAL_REPLAY_BODY_SCHEMA>;
52
+ export type ManualReplayResponse = z.infer<typeof MANUAL_REPLAY_RESPONSE_SCHEMA>;
@@ -0,0 +1,36 @@
1
+ import z from 'zod/v4';
2
+ import { IntegrationEngineEnum } from "../common/commonSchemas.js";
3
+ /**
4
+ * Primary request types a manual replay can target. Restricted to translation operations: the
5
+ * shadow replay executor only knows how to re-run translation requests today, so accepting LQA
6
+ * task types would create replays no worker could fulfil. Widen this once LQA replay lands.
7
+ */
8
+ export const ManualReplayRequestTypeEnum = {
9
+ TRANSLATION_SYNC: 'TRANSLATION_SYNC',
10
+ TRANSLATION_ASYNC: 'TRANSLATION_ASYNC',
11
+ };
12
+ export const MANUAL_REPLAY_REQUEST_TYPE_SCHEMA = z
13
+ .enum(ManualReplayRequestTypeEnum)
14
+ .describe('Type of the primary request to replay (translation only)');
15
+ export const MANUAL_REPLAY_OVERRIDES_SCHEMA = z
16
+ .object({
17
+ integration: z
18
+ .enum(IntegrationEngineEnum)
19
+ .optional()
20
+ .describe('Force this integration for every replayed segment instead of the originals'),
21
+ modelName: z.string().min(1).optional().describe('Force this model name for the replay'),
22
+ })
23
+ .describe('Optional overrides applied to the whole replay. Omit for a faithful replay.');
24
+ export const MANUAL_REPLAY_BODY_SCHEMA = z
25
+ .object({
26
+ requestId: z.uuid().describe('Id of the primary request to replay'),
27
+ requestType: MANUAL_REPLAY_REQUEST_TYPE_SCHEMA,
28
+ overrides: MANUAL_REPLAY_OVERRIDES_SCHEMA.optional(),
29
+ })
30
+ .describe('Manual shadow replay trigger');
31
+ export const MANUAL_REPLAY_RESPONSE_SCHEMA = z
32
+ .object({
33
+ replayId: z.uuid().describe('Id of the created shadow replay'),
34
+ })
35
+ .describe('Created shadow replay');
36
+ //# sourceMappingURL=manualReplaySchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manualReplaySchemas.js","sourceRoot":"","sources":["../../../../src/sdk/schemas/shadow-replay/manualReplaySchemas.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;CAC9B,CAAA;AAGV,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC;KAC/C,IAAI,CAAC,2BAA2B,CAAC;KACjC,QAAQ,CAAC,0DAA0D,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC;KAC5C,MAAM,CAAC;IACN,WAAW,EAAE,CAAC;SACX,IAAI,CAAC,qBAAqB,CAAC;SAC3B,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACzF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CACzF,CAAC;KACD,QAAQ,CAAC,6EAA6E,CAAC,CAAA;AAE1F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACnE,WAAW,EAAE,iCAAiC;IAC9C,SAAS,EAAE,8BAA8B,CAAC,QAAQ,EAAE;CACrD,CAAC;KACD,QAAQ,CAAC,8BAA8B,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC;KAC3C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC/D,CAAC;KACD,QAAQ,CAAC,uBAAuB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lokalise/polyglot-sdk",
3
- "version": "24.6.0",
3
+ "version": "24.7.0",
4
4
  "author": {
5
5
  "name": "Lokalise",
6
6
  "url": "https://lokalise.com/"
@@ -30,7 +30,7 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@lokalise/api-contracts": "^6.13.0",
33
- "@lokalise/backend-http-client": "^10.3.0",
33
+ "@lokalise/backend-http-client": "^11.2.0",
34
34
  "@lokalise/fastify-extras": "^31.0.0",
35
35
  "@lokalise/id-utils": "^3.0.1",
36
36
  "@lokalise/node-core": "^14.1.0",
@@ -39,20 +39,20 @@
39
39
  "html-escaper": "^3.0.3",
40
40
  "parse-sse": "^0.1.0",
41
41
  "pino": "^10.3.1",
42
- "undici": "^8.4.1",
42
+ "undici": "^8.5.0",
43
43
  "undici-retry": "^7.0.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@biomejs/biome": "^2.4.16",
46
+ "@biomejs/biome": "^2.5.0",
47
47
  "@lokalise/biome-config": "^3.1.1",
48
48
  "@lokalise/tsconfig": "^4.0.0",
49
49
  "@types/html-escaper": "^3.0.4",
50
- "@types/node": "^25.9.2",
51
- "@vitest/coverage-v8": "^4.1.8",
50
+ "@types/node": "^25.9.3",
51
+ "@vitest/coverage-v8": "^4.1.9",
52
52
  "mockttp": "^4.4.2",
53
53
  "rimraf": "^6.1.3",
54
54
  "typescript": "^6.0.3",
55
- "vitest": "^4.1.8",
55
+ "vitest": "^4.1.9",
56
56
  "zod": "^4.4.3"
57
57
  },
58
58
  "peerDependencies": {