Namespace Archiver.Core.Models
Classes
- AntivirusScanOptions
T-F146. Deliberately not ExtractOptions — a scan never has a destination/conflict/MOTW dimension, so reusing that record would carry a pile of meaningless properties.
- ArchiveEntryInfo
One entry inside an archive, as reported by IArchiveService/ITarService's ListEntriesAsync. Flat — Path is the full archive-internal path ('/'-separated, no leading slash). Building a folder hierarchy out of these is an App-layer concern (Archiver.Core has zero WinUI/UI-model references), not Core's.
- ArchiveListResult
Result of listing an archive's entries. Never throws to callers — a failure to list (corrupted archive, tar.exe missing, unsupported format) is reported via Success/ErrorMessage, matching every other IArchiveService/ITarService method's "never throw" convention.
- ArchiveWarning
Something the user should know about an operation that still did what was asked (T-F280): the source was processed and nothing was left out. Unlike an ArchiveError it does not make the operation fail, and unlike a SkippedFile nothing was skipped.
- CompressionBombWarning
Details surfaced to a confirmation callback when an archive's declared uncompressed size exceeds the compression-ratio threshold (T-F94). See ArchiveEntrySecurity.EvaluateCompressionBombAsync.
- CoreText
A user-visible Core message as a code plus the values it was built from (T-F209), so a frontend can render it in the user's language. An argument is either a string (a file name, a number already formatted, an exception or tar.exe message) or another CoreText ("Cannot extract archive: {tar.exe extraction failed: ...}").
- GroupPolicyOptions
Effective Group Policy settings for Pakko (T-F51), read from HKLM\Software\Policies\Pakko\ via GroupPolicyService.Load(). A parameterless instance means no policy is set (MOTW propagated to all files, no format restriction, tar extraction enabled). T-F261: every engine and router requires an instance — none falls back to this default on its own.
- PasswordDecision
The caller's answer to one PasswordPromptInfo prompt.
- PasswordPromptInfo
Passed to ResolvePasswordAsync/ResolvePasswordAsync once per archive, before the entry loop runs — never once per entry (see docs/TASKS.md's T-F189 entry).
- ProgressReport
Progress snapshot reported during archive/extract operations.
- RecoveryCheck
The PAR2 check of one archive during a test (T-F275 step 3), present only when PAR2 files were found for it. Damage is also an ArchiveError in the same result and a set that does not match or cannot be read an ArchiveWarning, so a frontend that ignores this list still reports the outcome.
- RecoveryTarget
The archive a PAR2 file protects, or why it cannot be said (T-F275 step 3c). Exactly one of the two is set.
- RepairOptions
What to repair from PAR2 recovery data (T-F275 step 4).
- SourceResult
The outcome of one source path of an operation (T-F260).
- TarCapabilities
What the system's tar.exe (libarchive) supports, probed once via ITarService.DetectCapabilitiesAsync by parsing its version output. tar.exe can read RAR/7z but never write either — libarchive has no writer for them (see CLAUDE.md's tar.exe format-support hard constraint).
- ThreatFinding
One entry-level (or whole-archive-level, when EntryPath is null) scan outcome.
- ThreatScanResult
Kept out of ArchiveResult/ArchiveError on purpose (see docs/DECISIONS.md's T-F146 entry) — a scan is not an extraction outcome and needs its own three-state result, not a two-state success/failure one.
Enums
- ArchiveMode
Whether multiple source items produce one archive or one archive each.
- ConflictBehavior
How a destination conflict is resolved.
- EntryEncryption
How one archive entry is encrypted, read from the ZIP headers without a password (T-F199). Unknown means the entry is marked encrypted but the method could not be read (a malformed WinZip AES record, PKWARE strong encryption).
- ExtractMode
How multiple archives being extracted at once land relative to each other.
- HashAlgorithmKind
T-F128: the two hash algorithms exposed via the Explorer context menu's "Хеш-суми" submenu.
- MessageCode
What a user-visible Core message says (T-F209). Core fills the English text itself; a frontend renders the code in the user's language. None is text Core did not write (an operating-system or .NET exception message, tar.exe's own output), shown as is.
- MotwMode
Controls Mark-of-the-Web propagation on extracted files (T-F51's EnforceMOTW policy). Numeric values match the HKLM\Software\Policies\Pakko\EnforceMOTW DWORD, mirroring NanaZip's own WriteZoneIdExtract shape.
- OperationOutcome
What a whole operation achieved (T-F260) — the one classification every frontend maps to its exit code, dialog or status line. Cancellation is not an outcome: it throws OperationCanceledException.
- PasswordPurpose
Which direction a password is being requested for — see Purpose.
- ProgressPhase
What an operation is doing when it sends a ProgressReport (T-F307).
- RecoveryState
What a PAR2 set says about the archive it protects (T-F275).
- SourceOutcome
How completely one source (an archive being extracted, or a file/folder being archived) was processed by an operation (T-F260).
- ThreatVerdict
T-F146. Named ThreatVerdict/ThreatFinding/ThreatScanResult (not "Scan*") deliberately — TarSandboxedService.ScanForUnsafeEntriesAsync already owns "Scan" for the unrelated T-F49 traversal/symlink pre-scan; keeping the two grep-separable avoids confusing them. Inconclusive must never be silently rendered as Clean by any caller — it means "Pakko could not determine an answer" (no AMSI provider registered, a provider call failed, an entry was too large to buffer, or a tar-family entry vanished/became unreadable between extraction and scan), which is a different fact from a scan that genuinely came back negative.