@purposeinplay/payload-ai-translate 0.1.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/LICENSE +21 -0
- package/README.md +714 -0
- package/dist/alerts-collection.d.ts +21 -0
- package/dist/alerts-collection.js +159 -0
- package/dist/api.d.ts +4 -0
- package/dist/api.js +918 -0
- package/dist/bulk-translate-batches-collection.d.ts +29 -0
- package/dist/bulk-translate-batches-collection.js +404 -0
- package/dist/bulk-translate-units-collection.d.ts +35 -0
- package/dist/bulk-translate-units-collection.js +310 -0
- package/dist/client/estimated-cost-cell.d.ts +6 -0
- package/dist/client/estimated-cost-cell.js +12 -0
- package/dist/client/excluded-fields-field.d.ts +45 -0
- package/dist/client/excluded-fields-field.js +553 -0
- package/dist/client/field-translate-button.d.ts +6 -0
- package/dist/client/field-translate-button.js +199 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +6 -0
- package/dist/client/lib/use-global-kill-switches.d.ts +20 -0
- package/dist/client/lib/use-global-kill-switches.js +58 -0
- package/dist/client/translate-button.d.ts +2 -0
- package/dist/client/translate-button.js +228 -0
- package/dist/client/translate-modal.d.ts +16 -0
- package/dist/client/translate-modal.js +549 -0
- package/dist/client/translation-progress.d.ts +10 -0
- package/dist/client/translation-progress.js +297 -0
- package/dist/components/TranslationNavGroup.d.ts +45 -0
- package/dist/components/TranslationNavGroup.js +104 -0
- package/dist/defaults.d.ts +11 -0
- package/dist/defaults.js +16 -0
- package/dist/endpoints/client-config.d.ts +44 -0
- package/dist/endpoints/client-config.js +145 -0
- package/dist/endpoints/estimate.d.ts +5 -0
- package/dist/endpoints/estimate.js +237 -0
- package/dist/endpoints/progress.d.ts +2 -0
- package/dist/endpoints/progress.js +314 -0
- package/dist/endpoints/translate.d.ts +11 -0
- package/dist/endpoints/translate.js +376 -0
- package/dist/endpoints/translation-hub/_helpers.d.ts +140 -0
- package/dist/endpoints/translation-hub/_helpers.js +297 -0
- package/dist/endpoints/translation-hub/active.d.ts +21 -0
- package/dist/endpoints/translation-hub/active.js +220 -0
- package/dist/endpoints/translation-hub/cancel.d.ts +22 -0
- package/dist/endpoints/translation-hub/cancel.js +233 -0
- package/dist/endpoints/translation-hub/enqueue.d.ts +70 -0
- package/dist/endpoints/translation-hub/enqueue.js +529 -0
- package/dist/endpoints/translation-hub/failures.d.ts +12 -0
- package/dist/endpoints/translation-hub/failures.js +67 -0
- package/dist/endpoints/translation-hub/force-reset.d.ts +20 -0
- package/dist/endpoints/translation-hub/force-reset.js +144 -0
- package/dist/endpoints/translation-hub/index.d.ts +21 -0
- package/dist/endpoints/translation-hub/index.js +20 -0
- package/dist/endpoints/translation-hub/list.d.ts +40 -0
- package/dist/endpoints/translation-hub/list.js +182 -0
- package/dist/endpoints/translation-hub/preflight.d.ts +19 -0
- package/dist/endpoints/translation-hub/preflight.js +141 -0
- package/dist/endpoints/translation-hub/retry-failed.d.ts +38 -0
- package/dist/endpoints/translation-hub/retry-failed.js +235 -0
- package/dist/endpoints/translation-hub/revert.d.ts +88 -0
- package/dist/endpoints/translation-hub/revert.js +405 -0
- package/dist/endpoints/translation-hub/status.d.ts +45 -0
- package/dist/endpoints/translation-hub/status.js +391 -0
- package/dist/endpoints/translation-hub/usage-summary.d.ts +114 -0
- package/dist/endpoints/translation-hub/usage-summary.js +481 -0
- package/dist/exports/client.d.ts +6 -0
- package/dist/exports/client.js +6 -0
- package/dist/exports/components.d.ts +6 -0
- package/dist/exports/components.js +5 -0
- package/dist/exports/index.d.ts +8 -0
- package/dist/exports/index.js +7 -0
- package/dist/exports/providers.d.ts +9 -0
- package/dist/exports/providers.js +5 -0
- package/dist/exports/views-client.d.ts +23 -0
- package/dist/exports/views-client.js +22 -0
- package/dist/exports/views.d.ts +30 -0
- package/dist/exports/views.js +29 -0
- package/dist/hooks/after-change-global.d.ts +4 -0
- package/dist/hooks/after-change-global.js +109 -0
- package/dist/hooks/after-change.d.ts +16 -0
- package/dist/hooks/after-change.js +205 -0
- package/dist/hooks/after-delete.d.ts +30 -0
- package/dist/hooks/after-delete.js +95 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/jobs-collection.d.ts +17 -0
- package/dist/jobs-collection.js +139 -0
- package/dist/lexical/classifier.d.ts +3 -0
- package/dist/lexical/classifier.js +108 -0
- package/dist/lexical/deserializer.d.ts +4 -0
- package/dist/lexical/deserializer.js +263 -0
- package/dist/lexical/placeholder-integrity.d.ts +6 -0
- package/dist/lexical/placeholder-integrity.js +21 -0
- package/dist/lexical/placeholders.d.ts +21 -0
- package/dist/lexical/placeholders.js +117 -0
- package/dist/lexical/serializer.d.ts +21 -0
- package/dist/lexical/serializer.js +233 -0
- package/dist/lexical/types.d.ts +32 -0
- package/dist/lexical/types.js +1 -0
- package/dist/lib/auth-diagnostics.d.ts +14 -0
- package/dist/lib/auth-diagnostics.js +19 -0
- package/dist/lib/batch-counts.d.ts +58 -0
- package/dist/lib/batch-counts.js +105 -0
- package/dist/lib/bulk-translate-migrations.d.ts +92 -0
- package/dist/lib/bulk-translate-migrations.js +153 -0
- package/dist/lib/coalescing-queue.d.ts +38 -0
- package/dist/lib/coalescing-queue.js +69 -0
- package/dist/lib/content-extractor.d.ts +16 -0
- package/dist/lib/content-extractor.js +410 -0
- package/dist/lib/content-hash.d.ts +1 -0
- package/dist/lib/content-hash.js +19 -0
- package/dist/lib/content-patcher.d.ts +15 -0
- package/dist/lib/content-patcher.js +293 -0
- package/dist/lib/cost-guards.d.ts +2 -0
- package/dist/lib/cost-guards.js +18 -0
- package/dist/lib/daily-spend-cap.d.ts +58 -0
- package/dist/lib/daily-spend-cap.js +233 -0
- package/dist/lib/effective-locales.d.ts +181 -0
- package/dist/lib/effective-locales.js +302 -0
- package/dist/lib/error-messages.d.ts +245 -0
- package/dist/lib/error-messages.js +626 -0
- package/dist/lib/events.d.ts +39 -0
- package/dist/lib/events.js +146 -0
- package/dist/lib/exclude-fields.d.ts +3 -0
- package/dist/lib/exclude-fields.js +64 -0
- package/dist/lib/field-breadcrumb.d.ts +31 -0
- package/dist/lib/field-breadcrumb.js +227 -0
- package/dist/lib/field-diff.d.ts +1 -0
- package/dist/lib/field-diff.js +25 -0
- package/dist/lib/field-empty.d.ts +2 -0
- package/dist/lib/field-empty.js +68 -0
- package/dist/lib/field-resolver.d.ts +3 -0
- package/dist/lib/field-resolver.js +164 -0
- package/dist/lib/group-soft-skips.d.ts +39 -0
- package/dist/lib/group-soft-skips.js +45 -0
- package/dist/lib/locale-merge.d.ts +44 -0
- package/dist/lib/locale-merge.js +357 -0
- package/dist/lib/locale-row-check.d.ts +30 -0
- package/dist/lib/locale-row-check.js +64 -0
- package/dist/lib/logger.d.ts +74 -0
- package/dist/lib/logger.js +97 -0
- package/dist/lib/manual-edit-guard.d.ts +128 -0
- package/dist/lib/manual-edit-guard.js +393 -0
- package/dist/lib/output-validation.d.ts +48 -0
- package/dist/lib/output-validation.js +148 -0
- package/dist/lib/payload-read.d.ts +16 -0
- package/dist/lib/payload-read.js +51 -0
- package/dist/lib/per-doc-claim.d.ts +90 -0
- package/dist/lib/per-doc-claim.js +140 -0
- package/dist/lib/per-doc-lock.d.ts +94 -0
- package/dist/lib/per-doc-lock.js +119 -0
- package/dist/lib/persist-usage.d.ts +91 -0
- package/dist/lib/persist-usage.js +116 -0
- package/dist/lib/progress-store.d.ts +103 -0
- package/dist/lib/progress-store.js +314 -0
- package/dist/lib/rate-limiter.d.ts +3 -0
- package/dist/lib/rate-limiter.js +53 -0
- package/dist/lib/snapshot-select.d.ts +43 -0
- package/dist/lib/snapshot-select.js +108 -0
- package/dist/lib/translate-prompt.d.ts +31 -0
- package/dist/lib/translate-prompt.js +66 -0
- package/dist/lib/translation-token-bucket.d.ts +57 -0
- package/dist/lib/translation-token-bucket.js +365 -0
- package/dist/lib/truncate-source-value.d.ts +1 -0
- package/dist/lib/truncate-source-value.js +27 -0
- package/dist/manual-edit-collection.d.ts +22 -0
- package/dist/manual-edit-collection.js +124 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +934 -0
- package/dist/providers/ai-sdk-adapter.d.ts +35 -0
- package/dist/providers/ai-sdk-adapter.js +100 -0
- package/dist/providers/anthropic.d.ts +31 -0
- package/dist/providers/anthropic.js +66 -0
- package/dist/providers/custom.d.ts +36 -0
- package/dist/providers/custom.js +24 -0
- package/dist/providers/gemini.d.ts +20 -0
- package/dist/providers/gemini.js +48 -0
- package/dist/providers/mock.d.ts +2 -0
- package/dist/providers/mock.js +29 -0
- package/dist/providers/openai.d.ts +28 -0
- package/dist/providers/openai.js +69 -0
- package/dist/settings-global.d.ts +74 -0
- package/dist/settings-global.js +216 -0
- package/dist/tasks/bulk-translate-coordinator.d.ts +115 -0
- package/dist/tasks/bulk-translate-coordinator.js +708 -0
- package/dist/tasks/bulk-translate-doc-task.d.ts +142 -0
- package/dist/tasks/bulk-translate-doc-task.js +1000 -0
- package/dist/tasks/bulk-translate-janitor.d.ts +87 -0
- package/dist/tasks/bulk-translate-janitor.js +311 -0
- package/dist/tasks/translate-job-task.d.ts +51 -0
- package/dist/tasks/translate-job-task.js +154 -0
- package/dist/translate.d.ts +113 -0
- package/dist/translate.js +911 -0
- package/dist/translation-daily-spend-collection.d.ts +24 -0
- package/dist/translation-daily-spend-collection.js +133 -0
- package/dist/translation-rate-limits-collection.d.ts +30 -0
- package/dist/translation-rate-limits-collection.js +144 -0
- package/dist/types.d.ts +672 -0
- package/dist/types.js +1 -0
- package/dist/usage-collection.d.ts +14 -0
- package/dist/usage-collection.js +377 -0
- package/dist/views/BulkRunsHub/BatchRow.d.ts +32 -0
- package/dist/views/BulkRunsHub/BatchRow.js +1222 -0
- package/dist/views/BulkRunsHub/BucketRow.d.ts +62 -0
- package/dist/views/BulkRunsHub/BucketRow.js +982 -0
- package/dist/views/BulkRunsHub/BulkRunsHub.client.d.ts +18 -0
- package/dist/views/BulkRunsHub/BulkRunsHub.client.js +331 -0
- package/dist/views/BulkRunsHub/EmptyState.d.ts +6 -0
- package/dist/views/BulkRunsHub/EmptyState.js +64 -0
- package/dist/views/BulkRunsHub/FilterBar.d.ts +16 -0
- package/dist/views/BulkRunsHub/FilterBar.js +284 -0
- package/dist/views/BulkRunsHub/InFlightBanner.d.ts +14 -0
- package/dist/views/BulkRunsHub/InFlightBanner.js +59 -0
- package/dist/views/BulkRunsHub/StatusBadge.d.ts +64 -0
- package/dist/views/BulkRunsHub/StatusBadge.js +248 -0
- package/dist/views/BulkRunsHub/SummaryStrip.d.ts +22 -0
- package/dist/views/BulkRunsHub/SummaryStrip.js +249 -0
- package/dist/views/BulkRunsHub/bucket-grouping.d.ts +200 -0
- package/dist/views/BulkRunsHub/bucket-grouping.js +344 -0
- package/dist/views/BulkRunsHub/bucketFailureSummary.d.ts +9 -0
- package/dist/views/BulkRunsHub/bucketFailureSummary.js +36 -0
- package/dist/views/BulkRunsHub/dedupedStatusFetch.d.ts +5 -0
- package/dist/views/BulkRunsHub/dedupedStatusFetch.js +45 -0
- package/dist/views/BulkRunsHub/index.d.ts +17 -0
- package/dist/views/BulkRunsHub/index.js +80 -0
- package/dist/views/BulkRunsHub/urlFilters.d.ts +14 -0
- package/dist/views/BulkRunsHub/urlFilters.js +50 -0
- package/dist/views/BulkRunsHub/useBulkRunsList.d.ts +26 -0
- package/dist/views/BulkRunsHub/useBulkRunsList.js +204 -0
- package/dist/views/BulkRunsHub/useUrlFilters.d.ts +10 -0
- package/dist/views/BulkRunsHub/useUrlFilters.js +88 -0
- package/dist/views/TranslationHub/ActiveJobs.d.ts +6 -0
- package/dist/views/TranslationHub/ActiveJobs.js +320 -0
- package/dist/views/TranslationHub/AdvancedPanel.d.ts +17 -0
- package/dist/views/TranslationHub/AdvancedPanel.js +996 -0
- package/dist/views/TranslationHub/AlertBanner.d.ts +6 -0
- package/dist/views/TranslationHub/AlertBanner.js +568 -0
- package/dist/views/TranslationHub/AuditPanel.d.ts +6 -0
- package/dist/views/TranslationHub/AuditPanel.helpers.d.ts +44 -0
- package/dist/views/TranslationHub/AuditPanel.helpers.js +71 -0
- package/dist/views/TranslationHub/AuditPanel.js +1367 -0
- package/dist/views/TranslationHub/BulkTranslate.types.d.ts +242 -0
- package/dist/views/TranslationHub/BulkTranslate.types.js +36 -0
- package/dist/views/TranslationHub/BulkTranslateFailureDrawer.d.ts +19 -0
- package/dist/views/TranslationHub/BulkTranslateFailureDrawer.js +332 -0
- package/dist/views/TranslationHub/BulkTranslateMonitor.d.ts +28 -0
- package/dist/views/TranslationHub/BulkTranslateMonitor.js +305 -0
- package/dist/views/TranslationHub/BulkTranslateNarrowViewportBanner.d.ts +3 -0
- package/dist/views/TranslationHub/BulkTranslateNarrowViewportBanner.js +42 -0
- package/dist/views/TranslationHub/BulkTranslatePostEnqueueTransition.d.ts +26 -0
- package/dist/views/TranslationHub/BulkTranslatePostEnqueueTransition.js +95 -0
- package/dist/views/TranslationHub/BulkTranslatePreflightModal.d.ts +22 -0
- package/dist/views/TranslationHub/BulkTranslatePreflightModal.js +879 -0
- package/dist/views/TranslationHub/BulkTranslateTerminalCard.d.ts +29 -0
- package/dist/views/TranslationHub/BulkTranslateTerminalCard.js +445 -0
- package/dist/views/TranslationHub/BulkTranslateTrigger.d.ts +66 -0
- package/dist/views/TranslationHub/BulkTranslateTrigger.js +161 -0
- package/dist/views/TranslationHub/EditorRecentRunsPanel.d.ts +33 -0
- package/dist/views/TranslationHub/EditorRecentRunsPanel.js +290 -0
- package/dist/views/TranslationHub/Hub.client.d.ts +74 -0
- package/dist/views/TranslationHub/Hub.client.js +357 -0
- package/dist/views/TranslationHub/ModelCombobox.d.ts +14 -0
- package/dist/views/TranslationHub/ModelCombobox.js +415 -0
- package/dist/views/TranslationHub/PerCollectionConfig.d.ts +10 -0
- package/dist/views/TranslationHub/PerCollectionConfig.helpers.d.ts +16 -0
- package/dist/views/TranslationHub/PerCollectionConfig.helpers.js +19 -0
- package/dist/views/TranslationHub/PerCollectionConfig.js +759 -0
- package/dist/views/TranslationHub/SettingsRail.d.ts +11 -0
- package/dist/views/TranslationHub/SettingsRail.js +382 -0
- package/dist/views/TranslationHub/StatusStrip.d.ts +6 -0
- package/dist/views/TranslationHub/StatusStrip.js +451 -0
- package/dist/views/TranslationHub/UsageTable.d.ts +6 -0
- package/dist/views/TranslationHub/UsageTable.helpers.d.ts +69 -0
- package/dist/views/TranslationHub/UsageTable.helpers.js +49 -0
- package/dist/views/TranslationHub/UsageTable.js +1240 -0
- package/dist/views/TranslationHub/alertGrouping.d.ts +70 -0
- package/dist/views/TranslationHub/alertGrouping.js +99 -0
- package/dist/views/TranslationHub/index.d.ts +20 -0
- package/dist/views/TranslationHub/index.js +109 -0
- package/dist/views/TranslationHub/tabNavigation.d.ts +53 -0
- package/dist/views/TranslationHub/tabNavigation.js +74 -0
- package/dist/views/TranslationHub/terminalBannerVisibility.d.ts +33 -0
- package/dist/views/TranslationHub/terminalBannerVisibility.js +124 -0
- package/dist/views/TranslationHub/useBulkTranslateActive.d.ts +49 -0
- package/dist/views/TranslationHub/useBulkTranslateActive.js +251 -0
- package/dist/views/TranslationHub/useFocusTrap.d.ts +6 -0
- package/dist/views/TranslationHub/useFocusTrap.js +81 -0
- package/dist/views/TranslationHub/useTranslationHubUsageSummary.d.ts +77 -0
- package/dist/views/TranslationHub/useTranslationHubUsageSummary.js +267 -0
- package/dist/views/shared/EditorError.d.ts +97 -0
- package/dist/views/shared/EditorError.js +205 -0
- package/dist/views/shared/ModelCell.d.ts +18 -0
- package/dist/views/shared/ModelCell.js +31 -0
- package/dist/views/shared/docHref.d.ts +16 -0
- package/dist/views/shared/docHref.js +26 -0
- package/dist/views/shared/fetch-error-body.d.ts +25 -0
- package/dist/views/shared/fetch-error-body.js +42 -0
- package/dist/views/shared/filterPillStyle.d.ts +35 -0
- package/dist/views/shared/filterPillStyle.js +40 -0
- package/dist/views/shared/format.d.ts +75 -0
- package/dist/views/shared/format.js +131 -0
- package/package.json +141 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { Payload, TaskConfig } from 'payload';
|
|
2
|
+
import { createScopedLogger } from '../lib/logger.js';
|
|
3
|
+
import type { BulkTranslateConfig } from '../types.js';
|
|
4
|
+
export declare const BULK_TRANSLATE_DOC_TASK_SLUG = "bulk-translate-doc";
|
|
5
|
+
/**
|
|
6
|
+
* Worker task that drives a single (collection, doc, locale) unit
|
|
7
|
+
* from `pending` → `success | failed | skipped`. Strictly serial
|
|
8
|
+
* within a unit; the coordinator owns fan-out.
|
|
9
|
+
*
|
|
10
|
+
* Lifecycle:
|
|
11
|
+
* 1. Mark unit `running`, increment attempts, stamp startedAt.
|
|
12
|
+
* 2. F-DA-TOCTOU scenario B skip-check: another batch may have
|
|
13
|
+
* a concurrent active unit for the same tuple. If yes, mark
|
|
14
|
+
* `skipped` with reason `concurrent_batch` and stop.
|
|
15
|
+
* 3. Resolve `(collection, documentId)` to a translation call.
|
|
16
|
+
* Globals are detected by checking `payload.config?.globals`
|
|
17
|
+
* for the slug; everything else is treated as a collection.
|
|
18
|
+
* 4. On success → mark `success`, capture estimated cost, bump
|
|
19
|
+
* batch.completedUnits + batch.actualCostUsd.
|
|
20
|
+
* 5. On failure → classify error to a `failureCode` per the
|
|
21
|
+
* design's class taxonomy, decide retry-or-terminal based on
|
|
22
|
+
* attempts count.
|
|
23
|
+
* 6. If all units terminal, transition the batch.
|
|
24
|
+
*/
|
|
25
|
+
type WorkerTaskInput = {
|
|
26
|
+
unitId: string;
|
|
27
|
+
};
|
|
28
|
+
type TranslateApiFns = {
|
|
29
|
+
translateDocument: (payload: Payload, options: {
|
|
30
|
+
collection: string;
|
|
31
|
+
id: string | number;
|
|
32
|
+
targetLocales?: string[];
|
|
33
|
+
req?: unknown;
|
|
34
|
+
/**
|
|
35
|
+
* v1.2.5: when true, the translate path bypasses hash-skip + the
|
|
36
|
+
* manual-edit preserve guard. The worker passes this when the
|
|
37
|
+
* parent batch was enqueued with `mode: 'force'` so the UI's
|
|
38
|
+
* "Force re-translate" checkbox is honoured. See translate.ts +
|
|
39
|
+
* TranslateDocumentOptions.force.
|
|
40
|
+
*/
|
|
41
|
+
force?: boolean;
|
|
42
|
+
}) => Promise<unknown>;
|
|
43
|
+
translateGlobal: (payload: Payload, options: {
|
|
44
|
+
global: string;
|
|
45
|
+
targetLocales?: string[];
|
|
46
|
+
req?: unknown;
|
|
47
|
+
/** See translateDocument.force above. */
|
|
48
|
+
force?: boolean;
|
|
49
|
+
}) => Promise<unknown>;
|
|
50
|
+
};
|
|
51
|
+
export type FailureCode = 'transient.rate_limited' | 'transient.provider' | 'transient.crashed' | 'permanent.schema' | 'permanent.too_large' | 'permanent.config' | 'permanent.deleted' | 'unknown';
|
|
52
|
+
export interface BulkWorkerOptions {
|
|
53
|
+
/** Slug override for the units collection. */
|
|
54
|
+
unitsCollectionSlug?: string;
|
|
55
|
+
/** Slug override for the batches collection. */
|
|
56
|
+
batchesCollectionSlug?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum number of attempts before a transient failure becomes
|
|
59
|
+
* permanent (`transient.crashed` final terminal). Default 3.
|
|
60
|
+
*/
|
|
61
|
+
maxAttempts?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Translate API injection point — defaults to the plugin's exported
|
|
64
|
+
* `translateDocument`/`translateGlobal`. Tests pass mocks instead of
|
|
65
|
+
* vi.mock-ing the entire `../api` module.
|
|
66
|
+
*/
|
|
67
|
+
translateApi?: TranslateApiFns;
|
|
68
|
+
/** Bulk callbacks fired on terminal batch transitions. */
|
|
69
|
+
callbacks?: Pick<BulkTranslateConfig, 'onBatchComplete' | 'onBatchFailed'>;
|
|
70
|
+
/**
|
|
71
|
+
* Decision #11 / N5 — security allowlist. The bulk worker's unit row
|
|
72
|
+
* has a free-text `collection` field; an attacker with write access
|
|
73
|
+
* to `bulk-translate-units` could craft a unit with `collection:
|
|
74
|
+
* 'users'` and the worker would call `translateDocument` with
|
|
75
|
+
* `overrideAccess: true`, rewriting localized fields on the users
|
|
76
|
+
* table. Plugin auto-wires this from `options.collections`.
|
|
77
|
+
*
|
|
78
|
+
* Empty list disables the check for back-compat with consumers
|
|
79
|
+
* wiring the worker manually outside the plugin.
|
|
80
|
+
*/
|
|
81
|
+
allowedCollections?: readonly string[];
|
|
82
|
+
/** Same security gate as `allowedCollections`, applied to global slugs. */
|
|
83
|
+
allowedGlobals?: readonly string[];
|
|
84
|
+
}
|
|
85
|
+
export declare function buildBulkTranslateDocTask(options?: BulkWorkerOptions): TaskConfig<{
|
|
86
|
+
input: WorkerTaskInput;
|
|
87
|
+
output: {
|
|
88
|
+
ok: true;
|
|
89
|
+
status: 'success' | 'failed' | 'skipped' | 'pending';
|
|
90
|
+
};
|
|
91
|
+
}>;
|
|
92
|
+
export type WorkerRunParams = {
|
|
93
|
+
payload: Payload;
|
|
94
|
+
unitId: string;
|
|
95
|
+
unitsSlug: string;
|
|
96
|
+
batchesSlug: string;
|
|
97
|
+
maxAttempts: number;
|
|
98
|
+
translateApi: TranslateApiFns;
|
|
99
|
+
callbacks?: Pick<BulkTranslateConfig, 'onBatchComplete' | 'onBatchFailed'>;
|
|
100
|
+
/**
|
|
101
|
+
* Security allowlists (Decision #11 / N5). When non-empty, the
|
|
102
|
+
* worker rejects units whose `collection` / `global` is not in the
|
|
103
|
+
* list. Empty = back-compat (no enforcement).
|
|
104
|
+
*/
|
|
105
|
+
allowedCollections?: readonly string[];
|
|
106
|
+
allowedGlobals?: readonly string[];
|
|
107
|
+
/** Optional Payload-request override (worker forwards `disableRevalidate`). */
|
|
108
|
+
req?: unknown;
|
|
109
|
+
/** Test override for the unit's `startedAt` timestamp. */
|
|
110
|
+
now?: () => Date;
|
|
111
|
+
};
|
|
112
|
+
export type WorkerRunResult = {
|
|
113
|
+
status: 'success' | 'failed' | 'skipped' | 'pending';
|
|
114
|
+
failureCode?: FailureCode;
|
|
115
|
+
failureMessage?: string;
|
|
116
|
+
costUsd?: number;
|
|
117
|
+
};
|
|
118
|
+
export declare function runWorkerForUnit(params: WorkerRunParams): Promise<WorkerRunResult>;
|
|
119
|
+
/**
|
|
120
|
+
* Maps a thrown error to a `failureCode`. Order matters — more
|
|
121
|
+
* specific patterns win. Defaults to `unknown` for anything we can't
|
|
122
|
+
* recognise so the row stays visible in the admin drill-down rather
|
|
123
|
+
* than disappearing into a generic 'failed'.
|
|
124
|
+
*
|
|
125
|
+
* Classes per design doc Decision §worker §error-classification:
|
|
126
|
+
* - transient.rate_limited: 429 / explicit rate-limit
|
|
127
|
+
* - transient.provider: 5xx / fetch timeout
|
|
128
|
+
* - permanent.schema: NoObjectGeneratedError (Vercel AI SDK
|
|
129
|
+
* throws this when the model returns
|
|
130
|
+
* malformed structured output)
|
|
131
|
+
* - permanent.too_large: cost-guard PER_DOC_CEILING/PER_CALL_LIMIT
|
|
132
|
+
* - permanent.config: 401 / 403 / auth
|
|
133
|
+
* - permanent.deleted: "Document not found" from findByIdNoFallback
|
|
134
|
+
* - unknown: default
|
|
135
|
+
*/
|
|
136
|
+
export declare function classifyError(err: unknown): FailureCode;
|
|
137
|
+
/**
|
|
138
|
+
* Check whether every unit in the batch is in a terminal state. If
|
|
139
|
+
* yes, transition the batch and fire the callback.
|
|
140
|
+
*/
|
|
141
|
+
export declare function maybeTransitionBatch(payload: Payload, batchesSlug: string, unitsSlug: string, batchId: string, callbacks?: Pick<BulkTranslateConfig, 'onBatchComplete' | 'onBatchFailed'>, parentLog?: ReturnType<typeof createScopedLogger>): Promise<void>;
|
|
142
|
+
export {};
|