ErrLookup › agalwood/Motrix
agalwood/Motrix
A full-featured download manager. · TypeScript · 822 source files
Analyzed at 1a708ee577 on 2026-08-12. 152 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
unsupported-kind ffmpeg unavailable — mux pipeline not active | error_code | error | ffmpeg, bridge-receiver, mux, configuration |
transient-failure manifest fetch failed: ${msg} | error_code | error | network, hls, dash, manifest, transient |
invalid-url-scheme URL must be http: or https: | error_code | error | validation, url, bridge-receiver, scheme |
| invalid Chrome extension ID: ${id} | validation | error | validation, extension, chrome, registry, regex |
| invalid Firefox extension ID: ${id} | validation | error | validation, extension, firefox, registry, regex |
| aria2 addTorrent gid must contain exactly 16 hexadecimal cha | validation | error | aria2, torrent, gid, type-safety, validation |
| aria2 returned gid ${actualGid} instead of reserved gid ${re | exception | error | aria2, torrent, gid, assertion, concurrency |
EngineProtocolError Engine returned non-numeric history count: ${result.count} | error_code | error | aria2, rpc, protocol-error, history, engine |
EngineStartFailed Unrecognized aria2 version output from ${binaryPath} | error_code | critical | aria2, engine, binary, version, startup |
EngineProcessOwnershipUnverified The process changed or is not verified as Motrix-owned | error_code | error | aria2, engine, process, ownership, safety, termination |
EngineProcessTerminationFailed aria2 process ${expectedPid} did not exit after force termination | error_code | critical | aria2, engine, process, termination, timeout, permissions |
| WebSocket is not connected | exception | error | websocket, aria2, transport, connection, rpc |
EngineStartFailed Engine recovery is unavailable before the first start attempt | error_code | error | engine, supervisor, lifecycle, recovery, ordering |
EngineProcessOwnershipUnverified A verified aria2 process is required for force termination | error_code | error | engine, supervisor, recovery, termination, ownership, safety |
GeoIPDownloadFailed network error: ${(err as Error).message} | error_code | error | geoip, network, download, fetch, timeout |
GeoIPDatabaseInvalid database too small (${buffer.length} bytes) | error_code | error | geoip, validation, download, integrity |
GeoIPSourceUnsupported MaxMind official source is not yet supported (Phase 2.1). | error_code | warning | geoip, config, unsupported-feature, maxmind |
IpcInvalidPayload Invalid Task Inspector Activity query params | error_code | error | ipc, validation, payload, typescript, boundary |
TaskNotFound Task not found: ${taskId} | error_code | warning | inspector, task, not-found, query, activity |
| Invalid Task Inspector Activity snapshot | exception | error | inspector, activity, parsing, schema, data-corruption |
| taskId must be a string | validation | error | validation, task, range-error, typescript, ipc |
| taskId must contain between 1 and ${MAX_TASK_ID_LENGTH} char | validation | error | validation, task, range-error, length |
| ${label} must be a positive safe integer | validation | error | validation, range-error, number, safe-integer |
| ${label} must be a non-negative safe integer | validation | error | validation, range-error, number, safe-integer, non-negative |
| ${label} must be a non-negative bigint | validation | error | validation, range-error, bigint, byte-counter, non-negative |
| ${label} must be finite and non-negative | validation | error | validation, range-error, speed, number, finite |
| ${label} exceeds the JavaScript safe integer range | validation | error | validation, range-error, numbers, inspector-activity |
| current exceeds the signed int64 range | validation | critical | validation, range-error, bigint, sqlite, data-integrity |
| ${label} must contain between 1 and ${maxLength} characters | validation | error | validation, range-error, strings, inspector-activity |
| ${label} is not a legal task status | validation | error | validation, range-error, state-machine, enums |
| ${label} must be a flat string record | validation | error | validation, range-error, objects, i18n |
| ${label} JSON must not exceed ${maxJsonLength} characters | validation | error | validation, range-error, json, size-limits |
| kind is not a legal history event kind | validation | error | validation, range-error, enums, state-machine |
| accuracy is not legal | validation | error | validation, range-error, enums |
| delivery is not legal | validation | error | validation, range-error, enums, delivery |
| toStatus is required | validation | error | validation, range-error, state-machine |
| Added must not have a fromStatus | validation | error | validation, range-error, state-machine, events |
| Started must enter an active status | validation | error | validation, range-error, state-machine, events |
| Paused must transition from active to paused | validation | error | validation, range-error, state-machine, events |
| Resumed must transition from paused to active | validation | error | validation, range-error, state-machine, events |
| Completed must end in completed | validation | error | validation, range-error, state-machine, events |
| Failed must end in error | validation | error | validation, range-error, state-machine, events |
| Observed state must be recovered | validation | error | validation, range-error, state-machine, recovery |
| samples[${index}].flags exceeds the SQLite bound | validation | error | validation, range-error, bitmask, sqlite |
| ${callerName} reserved gid must contain exactly 16 hexadecim | validation | error | validation, type-error, aria2, gid, tests |
| ${label} exceeds the JavaScript safe integer range | validation | error | validation, range-error, sqlite, bigint, numbers |
| ${label} is not an integer | validation | error | sqlite, type-coercion, data-integrity |
| ${label} must be non-negative | validation | error | sqlite, type-coercion, data-integrity, validation |
| ${label} must be a safe integer timestamp | validation | error | timestamp, validation, type-coercion |
| ${label} must be a positive safe integer timestamp | validation | error | timestamp, validation, type-coercion |
unsupported-live dynamic (live) MPD | error_code | error | dash, media, streaming, live |
unsupported-encryption DRM-protected MPD | error_code | error | dash, media, drm, encryption, streaming |
unsupported-master no video representation | error_code | error | dash, media, streaming, validation |
unsupported-master master playlist has no variants | error_code | error | hls, media, streaming, validation |
unsupported-live live HLS is not supported | error_code | error | hls, media, streaming, live |
unsupported-encryption AES-128 key missing URI | error_code | error | hls, media, encryption, streaming, validation |
| manifest fetch failed: HTTP ${res.status} | exception | error | network, http, media, streaming |
| manifest too large: ${text.length} > ${max} | exception | warning | network, http, security, dos-protection, media |
| Key must be 16 bytes, got ${key.length} from ${uri} | validation | error | media, encryption, network, hls, aes |
| Key must be 16 bytes, got ${key.length} | validation | error | media, encryption, aes, validation, typescript |
| IV must be 16 bytes, got ${iv.length} | validation | error | media, encryption, aes, validation, typescript |
plugin.commands.id_out_of_namespace command "${commandId}" is outside namespace "${callerId}." — commands must start | validation | error | plugin, commands, namespacing, api-contract |
plugin.command.not_declared_in_manifest command "${commandId}" is not declared in plugin "${callerId}" manifest.contribu | exception | error | plugin, commands, manifest, api-contract, configuration |
plugin.commands.not_found command "${commandId}" is not registered | exception | error | plugin, commands, registration, dispatch |
plugin.commands.access_denied cross-plugin command "${commandId}" requires a bound invoker (Plan D) | exception | error | plugin, commands, cross-plugin, access-control, capabilities |
plugin.lifecycle.secrets_seed_missing plugin "${this.opts.pluginId}" config key "${key}" is secret but no decryptSecre | exception | error | plugin, config, secrets, lifecycle, capabilities |
| randomBytes: n out of range (1..max 4096, got ${n}) | validation | error | crypto, random, input-validation, ranges |
plugin.fs.path_too_long plugin.fs.path_too_long: path exceeds ${PATH_MAX} characters | validation | error | fs, sandbox, path-validation, limits |
plugin.fs.path_outside_sandbox plugin.fs.path_outside_sandbox: resolved path outside sandbox root | validation | critical | fs, sandbox, security, symlinks, path-traversal |
plugin.fs.invalid_basename not a valid basename: ${name} | validation | error | fs, sandbox, filename-validation, security |
plugin.fs.not_found plugin.fs.not_found: ${relPath} | exception | warning | fs, storage, not-found, enoent |
plugin.fs.not_a_file plugin.fs.not_a_file: ${relPath} is a directory | exception | error | fs, storage, eisdir, read, type-mismatch |
plugin.fs.overwrite_required plugin.fs.overwrite_required: ${relPath} already exists | exception | warning | fs, storage, write, overwrite, idempotency |
plugin.fs.too_many_readers plugin.fs.too_many_readers: max ${this.maxConcurrentReaders} concurrent readers | exception | error | fs, task, concurrency, resource-limits, readers |
plugin.fs.chunk_too_large plugin.fs.chunk_too_large: maxChunkSize ${maxChunkSize} > limit ${maxChunk} | validation | error | fs, task, memory, limits, read |
plugin.fs.rename_target_exists plugin.fs.rename_target_exists: ${newFilename} already exists in saveDir | exception | warning | fs, task, rename, collision, idempotency |
plugin.http.invalid_url Invalid URL: ${raw} | validation | error | http, url, validation, input-validation |
plugin.http.scheme_not_allowed URL scheme '${parsed.protocol}' is not allowed; use http: or https: | validation | error | http, security, ssrf, url-validation, redirect |
plugin.http.response_type_required responseType is required (text | json | bytes) | validation | error | http, api-usage, typescript, validation |
plugin.http.aborted Request aborted by plugin | exception | error | http, abort, race-condition, cancellation |
plugin.http.timeout Request timed out after ${timeoutMs}ms | exception | error | http, timeout, network, performance |
plugin.http.network Network error: ${err instanceof Error ? err.message : String(err)} | exception | error | http, network, dns, tls, connection |
plugin.http.redirect_not_allowed redirect: 'error' set; refusing to follow ${status} to ${location} | exception | error | http, redirect, security, configuration |
plugin.http.too_many_redirects Too many redirects (>${MAX_REDIRECTS}) | exception | error | http, redirect, loop, safety |
plugin.http.response_too_large Response body exceeded ${maxBodyBytes} bytes | exception | error | http, memory, dos, safety, streaming |
plugin.lifecycle.deactivate_timeout plugin "${pluginId}" deactivate budget exhausted before all handlers ran | exception | error | lifecycle, plugin, timeout, cleanup, performance |
plugin.metadata.value_not_serializable plugin.metadata.value_not_serializable: undefined is not JSON-serializable | validation | error | metadata, serialization, typescript, validation |
plugin.metadata.quota_exceeded plugin.metadata.quota_exceeded: projected usage ${projected} exceeds quota ${thi | exception | error | metadata, quota, storage, limit |
plugin.capability.unavailable notify capability is not available in this runtime | exception | warning | notify, capability, runtime, headless |
plugin.lifecycle.secrets_seed_missing secret store is unavailable in this runtime | exception | error | secret, encryption, config, runtime, setup |
plugin.storage.value_not_serializable plugin.storage.value_not_serializable: undefined is not JSON-serializable | exception | error | storage, serialization, typescript, validation |
plugin.storage.quota_exceeded plugin.storage.quota_exceeded: projected usage ${projected} exceeds quota ${this | exception | error | storage, quota, plugin, limits |
plugin.storage.cas_mismatch plugin.storage.cas_mismatch: key already exists (expectedVersion=0) | exception | warning | storage, cas, concurrency, plugin |
PluginRuntimeFault plugin.command.access_denied | exception | error | plugin, commands, access-control, validation |
PluginManifestInvalid plugin.command.schema_compile_failed: ${cmd.id} | exception | error | plugin, schema, ajv, manifest |
PluginRuntimeFault plugin.command.not_public | exception | error | plugin, commands, schema, access-control |
PluginManifestInvalid plugin.grants.unknown_plugin: ${pluginId} | exception | error | plugin, grants, permissions, validation |
PluginPermissionUnsupported plugin.grants.not_supported | exception | warning | plugin, grants, permissions, access-control |
PluginRuntimeFault AuditRoleCannotMutate | exception | error | plugin, hooks, access-control, rbac |
| plugin.manifest.role.requires_builtin | exception | error | plugin, manifest, role-band |
PluginRuntimeFault plugin.ffmpeg.staging_quota_exceeded | exception | error | plugin, ffmpeg, disk-quota, resource-limits |
PluginActivationCapExceeded plugin.lifecycle.activation_cap_exceeded | exception | warning | plugin, activation, resource-limits, lifecycle |
plugin.capability.bad_args log.${msg.method}: invalid args | exception | error | plugin, capability, log, validation |
plugin.capability.unavailable unknown log method: ${msg.method} | exception | error | plugin, capability, log |
plugin.fs.task.not_available_outside_hook fs.task is only available inside a hook invocation; no hook context is active | exception | error | plugin, capability, fs, hook-context, lifecycle |
plugin.metadata.not_available_outside_hook metadata is only available inside a hook invocation; no task context is active | exception | error | plugin, capability, metadata, hook-context, lifecycle |
plugin.ffmpeg.destination_phase_disallowed ffmpeg output ${userOutput} resolves outside saveDir and plugin storage | exception | error | plugin, ffmpeg, security, filesystem, hooks |
plugin.ffmpeg.op_not_found ffmpeg op not found: ${opId} | exception | error | plugin, ffmpeg, op-handle, lifecycle |
PLUGIN_MANIFEST_INVALID unknown plugin: ${pluginId} | exception | error | plugin, activation, registry |
PLUGIN_RUNTIME_FAULT plugin ${pluginId} is disabled | exception | error | plugin, activation, state |
PLUGIN_ACTIVATION_CAP_EXCEEDED active plugin cap (${this.maxActivePlugins}) reached | exception | error | plugin, activation, quota |
plugin.lifecycle.activation_capability_violation effectful call ${capability}.${method} during activation | exception | critical | plugin, lifecycle, activation, fatal |
| timer_quota_exceeded | exception | error | plugin, timer, quota |
PLUGIN_MANIFEST_INVALID plugin.install.invalid_github_spec | exception | error | plugin, install, github, validation |
PLUGIN_MANIFEST_INVALID plugin.install.local_file_hash_mismatch | exception | error | plugin-install, integrity, sha256, local-source, tamper-detection |
PLUGIN_MANIFEST_INVALID plugin.install.invalid_github_spec | error_code | error | plugin-install, source-resolver, github, validation, input-parsing |
PLUGIN_MANIFEST_INVALID manifest field "${value}" mixes literal and %key% — whole-field placeholders onl | validation | error | manifest, i18n, placeholder, locale, validation |
PLUGIN_MANIFEST_INVALID unparseable host version: ${s} | validation | error | manifest, semver, host-version, internal-parse, misconfiguration |
PLUGIN_ENGINE_VERSION_TOO_OLD Plugin requires host ${required}; running ${hostVersion} | error_code | error | manifest, engines, semver, host-compat, version-mismatch |
| plugin locale commit and rollback both failed | exception | critical | plugin, registry, locale, transactions, aggregate-error |
| plugin locale prepare-commit and rollback both failed | exception | critical | plugin, registry, locale, transactions, aggregate-error |
| registry responded ${res.status} | exception | error | plugin, registry, network, http |
PLUGIN_MANIFEST_INVALID plugin.install.registry_url_not_allowlisted | error_code | error | plugin, install, registry, url, validation |
plugin.lifecycle.secrets_invalid_token secret token has invalid format: expected prefix "${PREFIX}" | error_code | error | plugin, secrets, libsodium, validation |
plugin.lifecycle.secrets_decrypt_failed libsodium decryption failed: ciphertext may be tampered or key mismatch | error_code | critical | plugin, secrets, libsodium, crypto, key-mismatch, data-loss |
PLUGIN_MANIFEST_INVALID plugin.update.builtin_no_package | error_code | error | plugin, update, builtin, registry, validation |
PluginManifestInvalid plugin.update.builtin_staging_not_found | exception | error | plugin, builtin-updater, lifecycle, state, staging |
inherited_schema_missing The versioned database schema is incompatible with this build: expected canonica | exception | critical | database, sqlite, migration, schema, stale-schema |
canonical_task_columns_missing The versioned database schema is incompatible with this build: expected canonica | exception | critical | database, sqlite, migration, schema, tasks, stale-schema |
inspector_activity_schema_missing The versioned database schema is incompatible with this build: expected canonica | exception | critical | database, sqlite, migration, schema, v3, inspector-activity, stale-schema |
foreign_key_violation The versioned database schema is incompatible with this build: the canonical sch | exception | critical | database, sqlite, migration, foreign-keys, data-integrity, stale-schema |
| Database schema version ${currentVersion} is newer than this | exception | critical | database, sqlite, migration, downgrade, version-mismatch |
legacy_table_present The versioned database schema is incompatible with this build: legacy table `tas | exception | critical | database, sqlite, migration, legacy, plan-a, stale-schema |
new_tables_missing The versioned database schema is incompatible with this build: expected tables ` | exception | critical | database, sqlite, migration, tasks, stale-schema, partial-migration |
transfer_tables_missing The versioned database schema is incompatible with this build: expected tables ` | exception | critical | database, sqlite, migration, transfer, stale-schema |
activity_schema_missing The versioned database schema is incompatible with this build: expected Dashboar | exception | critical | database, sqlite, migration, activity, singleton, stale-schema, bigint |
TaskFinalizeRenameFailed Failed to rename file: ${cause} | exception | error | filesystem, finalize, rename, download, io |
TaskFinalizeMetaMissing Torrent metadata path not set | exception | error | bittorrent, finalize, state, metadata, data-integrity |
TaskFinalizeMetaMissing Torrent metadata missing for task ${task.id} | exception | error | bittorrent, re-add, retry, metadata, state |
TaskNotRetryable Task ${taskId} cannot be retried: required inputs are unavailable | exception | error | re-add, retry, state, validation, task-lifecycle |
TaskRemoveNotAvailableDuringFinalize Cannot remove task while it is being finalized | exception | error | remove, finalize, concurrency, task-lifecycle, race |
IpcInvalidPayload Invalid task create request: ${parsed.error.message} | exception | error | ipc, validation, schema, create, zod |
TaskCreateTorrentMetaFailed Failed to persist torrent metadata | exception | error | create, bittorrent, metadata, filesystem, io |
PluginRuntimeFault plugin chain aborted: ${result.reason} | exception | error | plugin, create, policy, hook, governance |
TaskCreateDedupExhausted Too many files with name "${desiredName}" already exist in ${saveDir} | exception | error | create, filesystem, naming, dedup, io |
TaskNotFound task ${taskId} not found | exception | warning | magnet, task-lifecycle, state, ui-race |
MagnetResolveFailed saved torrent metadata is no longer available for task ${taskId} | exception | error | magnet, metadata, filesystem, io, bittorrent |
TaskNotFound task ${taskId} not found for magnet metadata swap | exception | warning | magnet, swap, task-lifecycle, state, ui-race |
MagnetCleanupPending aria2 cleanup for a failed magnet swap is still pending for task ${taskId}; plea | exception | error | magnet, swap, aria2, cleanup, retryable, concurrency |
InvalidSelection task ${taskId} is not a MetadataReady magnet selection | exception | error | magnet, swap, validation, state, task-lifecycle |
TorrentParseFailed Torrent file is too large | exception | error | torrent, validation, parser, size-limit, memory |
| Update is not ready to install | exception | error | state-machine, electron-updater, auto-update, precondition, validation |