source-package.json — Chat Export to Transcript
From version 0.1.1 of Chat Export to Transcript, shown publicly by its creator. 3.6 KiB · SHA-256 434e2f2473bc5ccbf6bda4b522ba4c325209a584b3d2c9aef970a293a9e5f8f9.
{
"schema_version": 1,
"runtimes": [
{
"name": "python",
"versions": [
"3.10",
"3.14"
]
}
],
"dependencies": [],
"operations": [
{
"kind": "read",
"description": "Read supported files in the selected official local export and directory metadata throughout Discord/Slack exports to refuse any contained symlink.",
"target_restrictions": [
"WhatsApp Export chat text or ZIP, Discord official data package, Telegram Desktop result.json, or Slack workspace export"
]
},
{
"kind": "create",
"description": "Create a uniform messages.jsonl file and one local transcript per conversation.",
"target_restrictions": [
"Only within a new or empty local directory explicitly supplied through --out",
"Only after a matching dry-run plan digest is supplied through --approve"
]
}
],
"authorization": {
"mode": "none",
"scopes": [],
"credential_requirements": []
},
"network": {
"domains": [],
"destinations": [
"No network destination; input and output are exact user-selected local paths"
]
},
"safety": {
"read_only_by_default": true,
"dry_run_supported": true,
"consequential_writes_require_authorization": true,
"validation_controls": [
"--dry-run writes nothing and prints the exact output files and a digest of rendered output bytes, output destination, and directory creation and identities",
"live conversion requires --approve with the matching digest and refuses a changed or missing plan",
"output files are create-only and symlinks are refused",
"unparseable records are listed, the output is marked incomplete, and exit status is 2 unless --allow-partial",
"untrusted text is escaped onto one line in human-readable output and transcripts",
"input is limited to official export formats; no caches, databases, tokens, telemetry, or network calls",
"macOS/Linux only with POSIX no-follow directory descriptors; unsupported systems fail before I/O",
"32 MiB per read file including ZIP and TXT member, maximum 100 ZIP members; no stdin",
"Approval binds the resolved output destination and existing destination/parent device and inode identities; missing destination and transcripts creation are previewed; no missing ancestors created",
"Digest binds rendered bytes, not ignored source fields; reply IDs copied without correlation verification",
"Reject parent traversal/NUL and all export symlinks. Local percent/backslash literal, never URL-decoded; ZIP names refuse them. Symlinked ancestors require physical paths (for example /private/tmp)."
],
"target_restrictions": [
"Read only the user-selected official export",
"Write only inside a new or empty --out directory"
]
},
"tests": {
"files": [
"tests/test_chat_export_to_transcript.py",
"tests/test_hygiene.py"
],
"fixtures": "synthetic_only",
"provenance": "creator",
"evidence": [
"Standard-library unittest fixtures cover all four official export formats, malformed records, multiline content, and forged transcript headers",
"CLI subprocess tests cover dry-run approval, create-only output, incomplete results, and output escaping",
"Synthetic tests cover output parent symlink swaps, replaced directory identities, missing output ancestors, input symlinks, ZIP traversal, platform patching, file limits, FIFOs, and malformed nested fields",
"Hygiene tests read only shipped package files",
"Converter tests create synthetic fixtures and output files in a temporary folder, then remove that folder"
]
}
}
License: MIT (read it).
MIT
MIT LicenseCopyright (c) 2026 Zero Width Lab
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.