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).
29 lines
927 B
TypeScript
29 lines
927 B
TypeScript
/**
|
|
* Normalized domain types shared by every workspace app. Connector packages
|
|
* never leak provider names into this package — enforced by the root lint rule.
|
|
*/
|
|
|
|
export interface HealthState {
|
|
status: "up" | "down";
|
|
}
|
|
|
|
export * from "./capabilities.js";
|
|
export * from "./chat-contract.js";
|
|
export * from "./chat-contract.schema.js";
|
|
export * from "./connection.js";
|
|
export * from "./file-mime.js";
|
|
export * from "./file-names.js";
|
|
export * from "./messaging.js";
|
|
export * from "./publishing.js";
|
|
export * from "./shared-files.js";
|
|
export * from "./social.js";
|
|
export * from "./stream-columns.js";
|
|
export * from "./vc.js";
|
|
export * from "./video.js";
|
|
export * from "./workspace.js";
|
|
|
|
// publishing.ts retains the legacy VideoAsset declaration for connector
|
|
// compatibility. Prefer the first-class video-domain declaration here.
|
|
export type { VideoAsset } from "./video.js";
|
|
|
|
export * from "./publishing-execution.js";
|