T-HUB/apps/archive-bot/src
glass beadian e7e703c105 Integrate group files: nullable room for uploads, archive class, claim idempotency, upload route
Wires the three parallel group-cloud tracks to one surface and fixes the
seams between them:

- chat_media_archive.room_id becomes nullable (direct web uploads have no
  Matrix room yet — the contract's null-event pattern extends to the room);
  core GroupFile.roomId and ArchiveEntryInput.roomId follow.
- mime_class gains 'archive' (zip) across the 029 CHECK, validation
  MIME_CLASSES and the bot classifier — one vocabulary everywhere.
- registerArchiveEntry claim keys are null-safe for room-less uploads.
- New: POST /files/groups/:groupId/upload — FileInterceptor (20 MiB) streams
  through magic-byte sniffing, library-safe naming, oCIS upload and the
  metadata index, behind group-membership ACL (Owner/Admin bypass).
- safeFileName/sniffMime promoted to packages/core (file-names.ts,
  file-mime.ts) so the bot and the api share one implementation; the bot's
  local modules become re-export shims; @types/node added to core.

Verified: api typecheck clean, group-files 22/22, bot 74/74, web typecheck
clean; 029 re-applied clean on a fresh scratch DB (room_id nullable,
archive class, claim_key unique all confirmed in the catalog).
2026-10-11 10:09:24 +00:00
..
archiver.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
backoff.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
config.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
config.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
events.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
events.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
health.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
inspector.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
inspector.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
keys.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
keys.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
logger.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
main.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
matrix.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
matrix.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
mime.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
mime.ts Integrate group files: nullable room for uploads, archive class, claim idempotency, upload route 2026-10-11 10:09:24 +00:00
names.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
names.ts Integrate group files: nullable room for uploads, archive class, claim idempotency, upload route 2026-10-11 10:09:24 +00:00
processor.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
processor.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
store.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
webdav.test.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00
webdav.ts Add group cloud: files index api, web UI, archive sync bot 2026-10-11 08:21:11 +00:00