- /files/move|copy go through planImport's new `transfer` variant (keep names, directory expanded to per-file plan) → organization_record + verifyAndImport/executeRecord: per-file ledger resumable, fsproxy, cross-volume directory move = per-file copy→verify→delete then remove empty source dirs; shared plan store + plan_stale; asset_location follows per file, path_binding revised when a whole directory moved (finalizeTransfer); request waits up to FILES_TRANSFER_WAIT_SEC, else executed.pending - /files/organize per-item overrides take effect: season/episodes (domain planOrganize overrides), contentUnitId coverage, targetDir (no binding), operation, slotId (satisfied after verify); warnings only for inapplicable overrides - delete/trash/restore write organization_record (action trash|delete|restore, file-level results; migration 0026) - GET /files/download (admin session, nfo/subtitle/image, size cap, streamed, audited) - GET /files/records?ids|planIds for the organize page - fs race errors map to 503/404/403/400 instead of 500 - runbook updated Co-Authored-By: Claude Opus 5.5 <[email protected]>
20 lines
494 B
TypeScript
20 lines
494 B
TypeScript
export {
|
|
type ExcludedFile,
|
|
type ExistingPolicy,
|
|
type ExistingTarget,
|
|
type FileOverride,
|
|
type OrganizeConflict,
|
|
type OrganizeFileKind,
|
|
type OrganizeInput,
|
|
type OrganizeOperation,
|
|
type OrganizePlan,
|
|
overrideFor,
|
|
type PlannedAction,
|
|
type PlannedFile,
|
|
type Precondition,
|
|
planOrganize,
|
|
type SourceFile,
|
|
} from "./plan.ts";
|
|
export { type DefaultSubtitleLang, sidecarLanguageSuffix, sidecarStem } from "./sidecars.ts";
|
|
export { findOtherVersions } from "./versions.ts";
|