The Telegram-like group file contract (packages/core shared-files.ts) becomes a working subsystem, built in three parallel tracks: API (NestJS): migration 029 group_files (chat_media_archive metadata-only index with partial replay-unique + RLS, group_file_shares with sha256 token persistence, archive_sync_state/outbox durable-claim seam incl. a unique claim_key index), group-files module (list/search with cursor pagination, direct upload ≤20 MiB streamed+hashed to oCIS WebDAV, download with ACL + retention rechecks, share links with expiry, retention modes incl. legalHold) — RBAC group-membership authz + audit chain events. Web: Files section per group — group picker, drag-drop upload (20 MiB cap), search + MIME/origin filters, cursor pagination, download via authenticated blob fetch, share dialog with expiry + shown-once token, admin retention dialog; bilingual EN/ES (wiki i18n pattern); nav sidebar/palette/bottom-nav wiring; MIME classes aligned to the DB CHECK (document/other). Archive bot (apps/archive-bot): plain sync-loop Matrix bot mirroring attachments from explicitly-mapped unencrypted archive rooms — raw /sync with durable since-cursor, outbox-claimed ingestion (hash-verified stream, no temp files), magic-byte MIME sniffing, safe-name normalization, WebDAV upload, indexed + replied with link, redaction→unavailable; health endpoint; Dockerfile. Tests 74/74, typecheck clean across api/web/bot.
29 lines
680 B
JSON
29 lines
680 B
JSON
{
|
|
"name": "@tactical-media-broadcast-hub/archive-bot",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "tsx watch src/main.ts",
|
|
"build": "tsc -p tsconfig.build.json",
|
|
"start": "node dist/main.js",
|
|
"lint": "eslint src",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@tactical-media-broadcast-hub/core": "workspace:*",
|
|
"pg": "^8.23.1",
|
|
"pino": "^9.3.2"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.5.0",
|
|
"@types/pg": "^8.23.1",
|
|
"tsx": "^4.17.0",
|
|
"typescript": "^5.5.4",
|
|
"vitest": "^2.0.5"
|
|
},
|
|
"engines": {
|
|
"node": ">=22.13.0"
|
|
}
|
|
}
|