@ttt-productions/ttt-core 0.79.19 → 0.79.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -509,6 +509,11 @@ export declare const DeclineRealmFilePromotionInputSchema: z.ZodObject<{
|
|
|
509
509
|
requestId: z.ZodString;
|
|
510
510
|
}, z.core.$strict>;
|
|
511
511
|
export type DeclineRealmFilePromotionInput = z.infer<typeof DeclineRealmFilePromotionInputSchema>;
|
|
512
|
+
export declare const AdminUpdateWorkFileRealmUnshareInputSchema: z.ZodObject<{
|
|
513
|
+
workProjectId: z.ZodString;
|
|
514
|
+
workFileId: z.ZodString;
|
|
515
|
+
}, z.core.$strict>;
|
|
516
|
+
export type AdminUpdateWorkFileRealmUnshareInput = z.infer<typeof AdminUpdateWorkFileRealmUnshareInputSchema>;
|
|
512
517
|
export declare const CreateRealmFileFolderInputSchema: z.ZodObject<{
|
|
513
518
|
workRealmId: z.ZodString;
|
|
514
519
|
name: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-project-management.d.ts","sourceRoot":"","sources":["../../src/schemas/work-project-management.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"work-project-management.d.ts","sourceRoot":"","sources":["../../src/schemas/work-project-management.ts"],"names":[],"mappings":"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"}
|
|
@@ -325,6 +325,20 @@ export const DeclineRealmFilePromotionInputSchema = z.object({
|
|
|
325
325
|
mediaAssetId: mediaAssetIdSchema,
|
|
326
326
|
requestId: realmFileShareRequestIdSchema,
|
|
327
327
|
}).strict();
|
|
328
|
+
// ADMIN un-share of an ALREADY-APPROVED realm file (`adminUpdateWorkFileRealmUnshare`).
|
|
329
|
+
// Once a steward approves, sharing is PERMANENT for members — the only way out is an admin
|
|
330
|
+
// acting on a support thread. This is its own input rather than a reuse of the share/request
|
|
331
|
+
// shape: an approved file has NO pending request, so `requestId` is meaningless here and
|
|
332
|
+
// requiring one would make the callable unusable against exactly the state it exists to
|
|
333
|
+
// unwind. It carries the ORIGINAL two-field Work-coordinate shape the share input had before
|
|
334
|
+
// the approval gate; the core resolves the file by collection-group query on
|
|
335
|
+
// (`workProjectId`, `workFileId`). Admin authority is asserted at the callable's admin gate
|
|
336
|
+
// and re-asserted in the core (which rejects any non-`adminOverride` actor) — never inferred
|
|
337
|
+
// from anything in this payload.
|
|
338
|
+
export const AdminUpdateWorkFileRealmUnshareInputSchema = z.object({
|
|
339
|
+
workProjectId: workProjectIdSchema,
|
|
340
|
+
workFileId: z.string().min(1),
|
|
341
|
+
}).strict();
|
|
328
342
|
// ---- realm shared-file folders (steward-managed) ---------------------------------------
|
|
329
343
|
// Mirrors the Work-side folder CRUD shapes, minus the trade-profession access lists: Realm
|
|
330
344
|
// folders are organizational only (Realm-level visibility is the whole access model at
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-project-management.js","sourceRoot":"","sources":["../../src/schemas/work-project-management.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n workProjectIdSchema,\n userIdSchema,\n addRemoveActionSchema,\n workProjectTypeSchema,\n hallWingTypeSchema,\n commissionListingIdSchema,\n commissionProposalIdSchema,\n auditionIdSchema,\n auditionEntryIdSchema,\n craftSkillIdSchema,\n guildInviteConversationStatusSchema,\n mediaAssetIdSchema,\n workRealmIdSchema,\n realmFileFolderIdSchema,\n realmFileShareRequestIdSchema,\n} from './atoms.js';\nimport { TRADE_PROFESSION_OPTIONS, TRADE_PROFESSION_VALUES } from '../constants/options.js';\nimport { GUILD_STANDING_VALUES } from '../permissions/index.js';\nimport {\n MAX_GUILD_INVITE_MESSAGE_LENGTH,\n MAX_WORK_PROJECT_TITLE_LENGTH,\n MAX_WORK_PROJECT_DESCRIPTION_LENGTH,\n MAX_WORK_REALM_TITLE_LENGTH,\n MAX_WORK_REALM_DESCRIPTION_LENGTH,\n MAX_CRAFT_SKILL_NAME_LENGTH,\n MAX_FILE_FOLDER_NAME_LENGTH,\n} from '../constants/business.js';\nimport {\n REALM_SHARED_FILES_PAGE_LIMIT,\n REALM_FILE_PROMOTION_QUEUE_PAGE_LIMIT,\n} from '../constants/pagination.js';\nimport {\n RealmFileApprovedStatusSchema,\n RealmFilePendingApprovalStatusSchema,\n ContentMediaKindSchema,\n} from '../doc-schemas/media-assets.js';\n\n// ===========================================================================\n// S7 realm shared-files gallery (ARTISAN-ONLY, plus a full-admin bypass for the admin-only\n// un-share support action). `mediaAssets` is client-unreadable, so the gallery reads\n// realm-shared work files via THIS server projection callable (never a client query) — and\n// for the same reason the Realm's FOLDER documents are returned through the same projection\n// owner rather than opened to direct client reads: artisan / admin / hidden-Realm access is\n// decided in ONE backend owner.\n//\n// Serving is the `'artisan'` media tier (mutate-in-place scoped→artisan at APPROVAL — see the\n// approval gate below). V1 = view + download, grouped by the steward's folders.\n// ===========================================================================\n\n/** One APPROVED shared file. Accepts only the two approved standings — a pending or\n * unshared row is structurally inexpressible in this response. */\nexport const RealmSharedFileProjectionSchema = z.object({\n mediaAssetId: mediaAssetIdSchema,\n // The canonical stored media kind — RealmSharedFileProjection is a projection OF a\n // MediaAsset, so it shares the ONE ContentMediaKindSchema.\n mediaKind: ContentMediaKindSchema,\n // Never the full status union: 'nonCanon' | 'canon' only.\n realmFileCanonStatus: RealmFileApprovedStatusSchema,\n /** The Work file's own `name`. A file browser that groups unnamed thumbnails by folder is\n * not a file browser — the name is part of the projection, not something the client is\n * expected to resolve. (It is file metadata, NOT display identity: creator names and\n * avatars still resolve at render from `creatorUid`.) */\n name: z.string(),\n /** The steward-assigned folder this file sits in. Always present — approval IS folder\n * assignment, so an approved file without a folder cannot exist. */\n realmFileFolderId: realmFileFolderIdSchema,\n creatorUid: userIdSchema,\n // For the per-file steward canon toggle + download (updateWorkFileRealmCanon takes these).\n workProjectId: workProjectIdSchema,\n workFileId: z.string(),\n}).strict();\nexport type RealmSharedFileProjection = z.infer<typeof RealmSharedFileProjectionSchema>;\n\n/** A Realm shared-file folder as the gallery sees it. Pure container — no access lists, no\n * stored counts (counts derive from the files in the same response, so a count can never\n * disagree with the files actually served). */\nexport const RealmFileFolderProjectionSchema = z.object({\n realmFileFolderId: realmFileFolderIdSchema,\n name: z.string(),\n}).strict();\nexport type RealmFileFolderProjection = z.infer<typeof RealmFileFolderProjectionSchema>;\n\n// Paginated: the pre-approval-gate query was unbounded. `limit` is bounded by the ONE named\n// page constant the server also clamps to, and `cursor` is an OPAQUE server-minted token —\n// the client never constructs or interprets it, so the ordering fields stay a server detail.\nexport const GetRealmSharedFilesInputSchema = z.object({\n realmId: workRealmIdSchema,\n limit: z.number().int().min(1).max(REALM_SHARED_FILES_PAGE_LIMIT).optional(),\n cursor: z.string().min(1).optional(),\n}).strict();\nexport type GetRealmSharedFilesInput = z.infer<typeof GetRealmSharedFilesInputSchema>;\n\n/** `{ files }` is preserved as-is; `folders` and `nextCursor` are ADDITIVE. `folders` is the\n * Realm's complete folder set (bounded by MAX_REALM_FILE_FOLDERS), not a page — the gallery\n * must be able to render an empty folder, and the steward must see one to move files into.\n * `nextCursor` is absent/null on the last page. */\nexport const GetRealmSharedFilesResponseSchema = z.object({\n files: z.array(RealmSharedFileProjectionSchema),\n folders: z.array(RealmFileFolderProjectionSchema),\n nextCursor: z.string().min(1).nullable().optional(),\n}).strict();\nexport type GetRealmSharedFilesResponse = z.infer<typeof GetRealmSharedFilesResponseSchema>;\n\n// ---- realm-file promotion queue (steward / full admin) ---------------------------------\n// A SEPARATE bounded projection rather than an `includePending` flag on the artisan gallery:\n// a caller-controlled flag would put \"may this caller see pending rows\" in the client's\n// hands. Ordinary artisans can never enumerate pending requests.\n\n/** One AWAITING-DECISION request. Accepts only the pending-approval standing (via\n * RealmFilePendingApprovalStatusSchema) — an approved or unshared row is structurally\n * inexpressible in the queue. */\nexport const RealmFilePromotionQueueRowSchema = z.object({\n mediaAssetId: mediaAssetIdSchema,\n mediaKind: ContentMediaKindSchema,\n realmFileCanonStatus: RealmFilePendingApprovalStatusSchema,\n /** The Work file's own name — the steward decides on a named file, not a thumbnail. */\n name: z.string(),\n creatorUid: userIdSchema,\n workProjectId: workProjectIdSchema,\n workFileId: z.string(),\n /** Echoed so the approve/decline call can carry the exact observed request id; a stale tab\n * deciding a superseded request is then a visible conflict, not a silent overwrite. */\n realmFileShareRequestId: realmFileShareRequestIdSchema,\n /** The RECORDED requester — the resolution notification is addressed from this, never\n * guessed from the uploader. */\n realmFileShareRequestedByUid: userIdSchema,\n realmFileShareRequestedAt: z.number(),\n}).strict();\nexport type RealmFilePromotionQueueRow = z.infer<typeof RealmFilePromotionQueueRowSchema>;\n\nexport const GetRealmFilePromotionQueueInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n limit: z.number().int().min(1).max(REALM_FILE_PROMOTION_QUEUE_PAGE_LIMIT).optional(),\n cursor: z.string().min(1).optional(),\n}).strict();\nexport type GetRealmFilePromotionQueueInput = z.infer<typeof GetRealmFilePromotionQueueInputSchema>;\n\n/** `folders` rides along so the approval UI can offer the folder picker (and detect the\n * \"no folders yet\" state) without a second round-trip. */\nexport const GetRealmFilePromotionQueueResponseSchema = z.object({\n requests: z.array(RealmFilePromotionQueueRowSchema),\n folders: z.array(RealmFileFolderProjectionSchema),\n nextCursor: z.string().min(1).nullable().optional(),\n}).strict();\nexport type GetRealmFilePromotionQueueResponse = z.infer<typeof GetRealmFilePromotionQueueResponseSchema>;\n\nconst baseFields = {\n workingTitle: z.string().min(1).max(MAX_WORK_PROJECT_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_PROJECT_DESCRIPTION_LENGTH),\n workProjectType: workProjectTypeSchema,\n hallWingType: hallWingTypeSchema,\n};\n\n// A Realm working title is reserved under `reservedRealmNames/{UPPER(title)}` — the\n// UPPERCASED title IS the Firestore doc ID (runCreateWorkRealm.reservedRealmNameRef).\n// Firestore doc IDs cannot contain `/` and cannot be exactly `.` or `..`, so a title\n// that would produce an invalid/ambiguous doc ID must be rejected at the callable\n// boundary (both the create transaction and the soft availability check) rather than\n// hard-failing with an opaque `internal` error deep inside ref construction. Length\n// derives from MAX_WORK_REALM_TITLE_LENGTH; only the doc-ID-breaking characters are\n// forbidden. Keep CheckRealmNameAvailableInputSchema in lockstep so a valid-at-create\n// name is never rejected at form time (and vice-versa).\nexport const realmWorkingTitleSchema = z\n .string()\n .min(1)\n .max(MAX_WORK_REALM_TITLE_LENGTH)\n .refine((v) => !v.includes('/'), { message: 'Realm name cannot contain a slash (/).' })\n .refine((v) => v !== '.' && v !== '..', { message: 'Realm name cannot be \".\" or \"..\".' });\n\nexport const RealmCreationModeSchema = z.enum([\n 'newPublicRealm',\n 'newStandaloneRealm',\n 'existingPublicRealm',\n]);\nexport type RealmCreationMode = z.infer<typeof RealmCreationModeSchema>;\n\nexport const CreateWorkProjectInputSchema = z.discriminatedUnion('realmCreationMode', [\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('newPublicRealm'),\n realmWorkingTitle: realmWorkingTitleSchema,\n realmWorkingDescription: z.string().min(1).max(MAX_WORK_REALM_DESCRIPTION_LENGTH),\n }).strict(),\n // Standalone realms are background plumbing (DJ ruling 2026-07-19): the user enters NO\n // realm information — the backend creates the realm shell with a synthetic unique\n // title/description (the generated workRealmId), so nothing user-authored exists on it\n // and no human realm name is consumed from the reservedRealmNames namespace.\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('newStandaloneRealm'),\n }).strict(),\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('existingPublicRealm'),\n workRealmId: z.string().min(1),\n }).strict(),\n]);\nexport type CreateWorkProjectInput = z.infer<typeof CreateWorkProjectInputSchema>;\n\n// Identified by the workAssets subcollection doc id — never by URL parsing\n// (no delete path may depend on a URL; see media-assets-and-protected-serving.md).\nexport const DeleteWorkAssetInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workAssetId: z.string().min(1),\n}).strict();\nexport type DeleteWorkAssetInput = z.infer<typeof DeleteWorkAssetInputSchema>;\n\nexport const InviteSourceSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('standalone'),\n }).strict(),\n z.object({\n type: z.literal('craftSkill'),\n data: z.object({\n craftSkillId: craftSkillIdSchema,\n craftSkillOwnerUserId: userIdSchema,\n craftSkillName: z.string().min(1).max(MAX_CRAFT_SKILL_NAME_LENGTH),\n }).strict(),\n }).strict(),\n z.object({\n type: z.literal('commission'),\n // Titles are NOT snapshotted here (Display Identity Invariant — client display text\n // must be re-sourced at render by id). `postingStakeSharesOffered` is not display text;\n // the server re-sources it from the posting doc in the invite transaction (never trusts\n // the client copy) — kept so the shape stays server-writable.\n data: z.object({\n commissionListingId: commissionListingIdSchema,\n commissionProposalId: commissionProposalIdSchema,\n proposalArtisanUserId: userIdSchema,\n postingStakeSharesOffered: z.number().int().min(1),\n }).strict(),\n }).strict(),\n z.object({\n type: z.literal('audition'),\n data: z.object({\n auditionId: auditionIdSchema,\n auditionEntryId: auditionEntryIdSchema,\n respondentUserId: userIdSchema,\n postingStakeSharesOffered: z.number().int().min(1),\n }).strict(),\n }).strict(),\n]);\nexport type InviteSource = z.infer<typeof InviteSourceSchema>;\nexport type InviteSourceType = InviteSource['type'];\n\nexport const InviteUserToGuildInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n inviteeUid: userIdSchema,\n message: z.string().min(1).max(MAX_GUILD_INVITE_MESSAGE_LENGTH),\n stakeSharesOffered: z.number().int().min(1),\n source: InviteSourceSchema,\n}).strict();\nexport type InviteUserToGuildInput = z.infer<typeof InviteUserToGuildInputSchema>;\n\n// `finalized` is the terminal SUCCESS state (`accepted` is a transient state a trigger\n// consumes within seconds). Managers must be able to list finalized invites to see the\n// guild's actual recruitment history — not only failures and in-flight items. Derives from\n// the ONE canonical status enum (schemas/atoms.ts), never a re-declared literal.\nexport const ListGuildInvitesInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n statuses: z.array(guildInviteConversationStatusSchema).min(1),\n}).strict();\nexport type ListGuildInvitesInput = z.infer<typeof ListGuildInvitesInputSchema>;\n\nexport const UpdateGuildmateTradeProfessionsInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n userId: userIdSchema,\n tradeProfession: z.enum(TRADE_PROFESSION_VALUES),\n action: addRemoveActionSchema,\n}).strict();\nexport type UpdateGuildmateTradeProfessionsInput = z.infer<typeof UpdateGuildmateTradeProfessionsInputSchema>;\n\nconst GUILD_STANDING_VALUES_ENUM = GUILD_STANDING_VALUES as [typeof GUILD_STANDING_VALUES[number], ...typeof GUILD_STANDING_VALUES[number][]];\n\nexport const UpdateGuildmateStandingInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n userId: userIdSchema,\n guildStanding: z.enum(GUILD_STANDING_VALUES_ENUM),\n action: addRemoveActionSchema,\n}).strict();\nexport type UpdateGuildmateStandingInput = z.infer<typeof UpdateGuildmateStandingInputSchema>;\n\n// Member self-leave (leaveWorkProject). The leaver is ALWAYS request.auth.uid — never a\n// client-supplied uid (invariant 3) — so the input carries only the workProjectId. The\n// callable composes the internal `depart` stake-share operation for ctx.uid.\nexport const LeaveWorkProjectInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n}).strict();\nexport type LeaveWorkProjectInput = z.infer<typeof LeaveWorkProjectInputSchema>;\n\nexport const UpdatePublicWorkProjectDetailsInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workingTitle: z.string().min(1).max(MAX_WORK_PROJECT_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_PROJECT_DESCRIPTION_LENGTH),\n}).strict();\nexport type UpdatePublicWorkProjectDetailsInput = z.infer<typeof UpdatePublicWorkProjectDetailsInputSchema>;\n\nexport const UpdateWorkRealmDetailsInputSchema = z.object({\n workRealmId: z.string().min(1),\n workingTitle: z.string().min(1).max(MAX_WORK_REALM_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_REALM_DESCRIPTION_LENGTH),\n}).strict();\nexport type UpdateWorkRealmDetailsInput = z.infer<typeof UpdateWorkRealmDetailsInputSchema>;\n\n// Unauthenticated soft-check for a Realm working title. Must match the authoritative\n// realmWorkingTitle contract in CreateWorkProjectInputSchema (realmWorkingTitleSchema:\n// MAX_WORK_REALM_TITLE_LENGTH, rejecting the doc-ID-breaking `/` and reserved `.`/`..`). Never be\n// stricter than the create transaction or a valid-at-create name would be rejected at\n// form time — reuse the SAME schema so the two can never drift.\nexport const CheckRealmNameAvailableInputSchema = z.object({\n workingTitle: realmWorkingTitleSchema,\n}).strict();\nexport type CheckRealmNameAvailableInput = z.infer<typeof CheckRealmNameAvailableInputSchema>;\n\n// ---- work-project file folders (S7) ---------------------------------------------------\n// The default \"All Guildmates\" folder is immutable; custom-folder access is by trade\n// profession. All four callables require a file-admin standing via assertCanManageFolders.\n\nconst tradeProfessionListSchema = z\n .array(z.enum(TRADE_PROFESSION_VALUES))\n .max(TRADE_PROFESSION_OPTIONS.length);\n\nexport const CreateFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n canViewTradeProfessions: tradeProfessionListSchema,\n canUploadTradeProfessions: tradeProfessionListSchema,\n canDeleteTradeProfessions: tradeProfessionListSchema,\n}).strict();\nexport type CreateFileFolderInput = z.infer<typeof CreateFileFolderInputSchema>;\n\nexport const RenameFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type RenameFileFolderInput = z.infer<typeof RenameFileFolderInputSchema>;\n\nexport const UpdateFolderProfessionsInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n canViewTradeProfessions: tradeProfessionListSchema,\n canUploadTradeProfessions: tradeProfessionListSchema,\n canDeleteTradeProfessions: tradeProfessionListSchema,\n}).strict();\nexport type UpdateFolderProfessionsInput = z.infer<typeof UpdateFolderProfessionsInputSchema>;\n\nexport const DeleteFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n}).strict();\nexport type DeleteFileFolderInput = z.infer<typeof DeleteFileFolderInputSchema>;\n\n// ---- realm shared files ---------------------------------------------------------------\n\n// Delete a single work file (by folder + file id). File-admin authz is enforced in the\n// callable/core transaction.\nexport const DeleteWorkFileInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n workFileId: z.string().min(1),\n}).strict();\nexport type DeleteWorkFileInput = z.infer<typeof DeleteWorkFileInputSchema>;\n\n// Set canon status on a realm shared file. Realm-steward-only authz is enforced inside the\n// core's transaction against workRealms/{workRealmId}.workStewardUid.\nexport const UpdateWorkFileRealmCanonInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n canon: z.boolean(),\n}).strict();\nexport type UpdateWorkFileRealmCanonInput = z.infer<typeof UpdateWorkFileRealmCanonInputSchema>;\n\n// ---- the promotion approval gate -------------------------------------------------------\n// Promotion is a REQUEST, not an instant share: the Work file admin asks, and the REALM\n// steward approves (choosing the folder) or declines. Nothing is served to the Realm until\n// approval — a requested file stays `scoped` and invisible to the member gallery.\n//\n// Every one of these carries the `requestId` so a decision always names the exact request it\n// observed. Realm-side authority (steward, public + non-hidden Realm) is derived from the\n// Realm document inside each core's transaction; these shapes carry no authority hints.\n\n// REQUEST promotion of a work file into its Realm's shared-file pool. File-admin authz\n// (`workFile.promoteToRealm`) is enforced inside the core's transaction.\n// `requestId` is CLIENT-generated and stable: replaying the same id is an idempotent success\n// (no second audit event, no second notification), while a DIFFERENT id arriving while one\n// request is already pending is a conflict — never a silent overwrite.\nexport const UpdateWorkFileRealmShareInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type UpdateWorkFileRealmShareInput = z.infer<typeof UpdateWorkFileRealmShareInputSchema>;\n\n// WITHDRAW a still-pending request (the requesting Work's file admin). Realm-share\n// permanence begins at APPROVAL — before a steward decides, an accidental request must be\n// correctable by the side that made it. Addressed by Work coordinates like the request\n// itself, and compares `requestId` so a withdrawal can never cancel a newer re-request.\nexport const WithdrawRealmFilePromotionRequestInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type WithdrawRealmFilePromotionRequestInput = z.infer<typeof WithdrawRealmFilePromotionRequestInputSchema>;\n\n// APPROVE a pending request (Realm steward). Approval assigns the folder — there is no\n// default folder, so `realmFileFolderId` is REQUIRED and the core verifies the folder is\n// under this exact Realm before flipping the file to `nonCanon` + the artisan tier.\nexport const ApproveRealmFilePromotionInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type ApproveRealmFilePromotionInput = z.infer<typeof ApproveRealmFilePromotionInputSchema>;\n\n// DECLINE a pending request (Realm steward). Returns the file to `none` and clears the Realm\n// + request fields. No folder is involved — a declined file never entered the pool.\nexport const DeclineRealmFilePromotionInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type DeclineRealmFilePromotionInput = z.infer<typeof DeclineRealmFilePromotionInputSchema>;\n\n// ---- realm shared-file folders (steward-managed) ---------------------------------------\n// Mirrors the Work-side folder CRUD shapes, minus the trade-profession access lists: Realm\n// folders are organizational only (Realm-level visibility is the whole access model at\n// launch). Names reuse the ONE platform folder-name bound; the server derives\n// `name_lowercase` and enforces case-insensitive uniqueness within the Realm.\n\nexport const CreateRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type CreateRealmFileFolderInput = z.infer<typeof CreateRealmFileFolderInputSchema>;\n\n/** Rename. `update*` per BACKEND-305 — it modifies an existing doc in place. */\nexport const UpdateRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type UpdateRealmFileFolderInput = z.infer<typeof UpdateRealmFileFolderInputSchema>;\n\n/** Delete requires the folder to be EMPTY (the steward moves files out first) — no surprise\n * data moves and no reassignment-target picker at launch. Emptiness is proven by an\n * in-transaction query for ANY asset carrying this folder id, regardless of serving/hidden/\n * canon state: a hidden file still occupies its folder. */\nexport const DeleteRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n}).strict();\nexport type DeleteRealmFileFolderInput = z.infer<typeof DeleteRealmFileFolderInputSchema>;\n\n/** Move an approved shared file between folders. `expectedRealmFileFolderId` is a\n * compare-and-set precondition — a steward acting on a stale view must not silently undo a\n * move made from another tab. */\nexport const UpdateRealmFileFolderAssignmentInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n expectedRealmFileFolderId: realmFileFolderIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n}).strict();\nexport type UpdateRealmFileFolderAssignmentInput = z.infer<typeof UpdateRealmFileFolderAssignmentInputSchema>;\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"work-project-management.js","sourceRoot":"","sources":["../../src/schemas/work-project-management.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n workProjectIdSchema,\n userIdSchema,\n addRemoveActionSchema,\n workProjectTypeSchema,\n hallWingTypeSchema,\n commissionListingIdSchema,\n commissionProposalIdSchema,\n auditionIdSchema,\n auditionEntryIdSchema,\n craftSkillIdSchema,\n guildInviteConversationStatusSchema,\n mediaAssetIdSchema,\n workRealmIdSchema,\n realmFileFolderIdSchema,\n realmFileShareRequestIdSchema,\n} from './atoms.js';\nimport { TRADE_PROFESSION_OPTIONS, TRADE_PROFESSION_VALUES } from '../constants/options.js';\nimport { GUILD_STANDING_VALUES } from '../permissions/index.js';\nimport {\n MAX_GUILD_INVITE_MESSAGE_LENGTH,\n MAX_WORK_PROJECT_TITLE_LENGTH,\n MAX_WORK_PROJECT_DESCRIPTION_LENGTH,\n MAX_WORK_REALM_TITLE_LENGTH,\n MAX_WORK_REALM_DESCRIPTION_LENGTH,\n MAX_CRAFT_SKILL_NAME_LENGTH,\n MAX_FILE_FOLDER_NAME_LENGTH,\n} from '../constants/business.js';\nimport {\n REALM_SHARED_FILES_PAGE_LIMIT,\n REALM_FILE_PROMOTION_QUEUE_PAGE_LIMIT,\n} from '../constants/pagination.js';\nimport {\n RealmFileApprovedStatusSchema,\n RealmFilePendingApprovalStatusSchema,\n ContentMediaKindSchema,\n} from '../doc-schemas/media-assets.js';\n\n// ===========================================================================\n// S7 realm shared-files gallery (ARTISAN-ONLY, plus a full-admin bypass for the admin-only\n// un-share support action). `mediaAssets` is client-unreadable, so the gallery reads\n// realm-shared work files via THIS server projection callable (never a client query) — and\n// for the same reason the Realm's FOLDER documents are returned through the same projection\n// owner rather than opened to direct client reads: artisan / admin / hidden-Realm access is\n// decided in ONE backend owner.\n//\n// Serving is the `'artisan'` media tier (mutate-in-place scoped→artisan at APPROVAL — see the\n// approval gate below). V1 = view + download, grouped by the steward's folders.\n// ===========================================================================\n\n/** One APPROVED shared file. Accepts only the two approved standings — a pending or\n * unshared row is structurally inexpressible in this response. */\nexport const RealmSharedFileProjectionSchema = z.object({\n mediaAssetId: mediaAssetIdSchema,\n // The canonical stored media kind — RealmSharedFileProjection is a projection OF a\n // MediaAsset, so it shares the ONE ContentMediaKindSchema.\n mediaKind: ContentMediaKindSchema,\n // Never the full status union: 'nonCanon' | 'canon' only.\n realmFileCanonStatus: RealmFileApprovedStatusSchema,\n /** The Work file's own `name`. A file browser that groups unnamed thumbnails by folder is\n * not a file browser — the name is part of the projection, not something the client is\n * expected to resolve. (It is file metadata, NOT display identity: creator names and\n * avatars still resolve at render from `creatorUid`.) */\n name: z.string(),\n /** The steward-assigned folder this file sits in. Always present — approval IS folder\n * assignment, so an approved file without a folder cannot exist. */\n realmFileFolderId: realmFileFolderIdSchema,\n creatorUid: userIdSchema,\n // For the per-file steward canon toggle + download (updateWorkFileRealmCanon takes these).\n workProjectId: workProjectIdSchema,\n workFileId: z.string(),\n}).strict();\nexport type RealmSharedFileProjection = z.infer<typeof RealmSharedFileProjectionSchema>;\n\n/** A Realm shared-file folder as the gallery sees it. Pure container — no access lists, no\n * stored counts (counts derive from the files in the same response, so a count can never\n * disagree with the files actually served). */\nexport const RealmFileFolderProjectionSchema = z.object({\n realmFileFolderId: realmFileFolderIdSchema,\n name: z.string(),\n}).strict();\nexport type RealmFileFolderProjection = z.infer<typeof RealmFileFolderProjectionSchema>;\n\n// Paginated: the pre-approval-gate query was unbounded. `limit` is bounded by the ONE named\n// page constant the server also clamps to, and `cursor` is an OPAQUE server-minted token —\n// the client never constructs or interprets it, so the ordering fields stay a server detail.\nexport const GetRealmSharedFilesInputSchema = z.object({\n realmId: workRealmIdSchema,\n limit: z.number().int().min(1).max(REALM_SHARED_FILES_PAGE_LIMIT).optional(),\n cursor: z.string().min(1).optional(),\n}).strict();\nexport type GetRealmSharedFilesInput = z.infer<typeof GetRealmSharedFilesInputSchema>;\n\n/** `{ files }` is preserved as-is; `folders` and `nextCursor` are ADDITIVE. `folders` is the\n * Realm's complete folder set (bounded by MAX_REALM_FILE_FOLDERS), not a page — the gallery\n * must be able to render an empty folder, and the steward must see one to move files into.\n * `nextCursor` is absent/null on the last page. */\nexport const GetRealmSharedFilesResponseSchema = z.object({\n files: z.array(RealmSharedFileProjectionSchema),\n folders: z.array(RealmFileFolderProjectionSchema),\n nextCursor: z.string().min(1).nullable().optional(),\n}).strict();\nexport type GetRealmSharedFilesResponse = z.infer<typeof GetRealmSharedFilesResponseSchema>;\n\n// ---- realm-file promotion queue (steward / full admin) ---------------------------------\n// A SEPARATE bounded projection rather than an `includePending` flag on the artisan gallery:\n// a caller-controlled flag would put \"may this caller see pending rows\" in the client's\n// hands. Ordinary artisans can never enumerate pending requests.\n\n/** One AWAITING-DECISION request. Accepts only the pending-approval standing (via\n * RealmFilePendingApprovalStatusSchema) — an approved or unshared row is structurally\n * inexpressible in the queue. */\nexport const RealmFilePromotionQueueRowSchema = z.object({\n mediaAssetId: mediaAssetIdSchema,\n mediaKind: ContentMediaKindSchema,\n realmFileCanonStatus: RealmFilePendingApprovalStatusSchema,\n /** The Work file's own name — the steward decides on a named file, not a thumbnail. */\n name: z.string(),\n creatorUid: userIdSchema,\n workProjectId: workProjectIdSchema,\n workFileId: z.string(),\n /** Echoed so the approve/decline call can carry the exact observed request id; a stale tab\n * deciding a superseded request is then a visible conflict, not a silent overwrite. */\n realmFileShareRequestId: realmFileShareRequestIdSchema,\n /** The RECORDED requester — the resolution notification is addressed from this, never\n * guessed from the uploader. */\n realmFileShareRequestedByUid: userIdSchema,\n realmFileShareRequestedAt: z.number(),\n}).strict();\nexport type RealmFilePromotionQueueRow = z.infer<typeof RealmFilePromotionQueueRowSchema>;\n\nexport const GetRealmFilePromotionQueueInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n limit: z.number().int().min(1).max(REALM_FILE_PROMOTION_QUEUE_PAGE_LIMIT).optional(),\n cursor: z.string().min(1).optional(),\n}).strict();\nexport type GetRealmFilePromotionQueueInput = z.infer<typeof GetRealmFilePromotionQueueInputSchema>;\n\n/** `folders` rides along so the approval UI can offer the folder picker (and detect the\n * \"no folders yet\" state) without a second round-trip. */\nexport const GetRealmFilePromotionQueueResponseSchema = z.object({\n requests: z.array(RealmFilePromotionQueueRowSchema),\n folders: z.array(RealmFileFolderProjectionSchema),\n nextCursor: z.string().min(1).nullable().optional(),\n}).strict();\nexport type GetRealmFilePromotionQueueResponse = z.infer<typeof GetRealmFilePromotionQueueResponseSchema>;\n\nconst baseFields = {\n workingTitle: z.string().min(1).max(MAX_WORK_PROJECT_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_PROJECT_DESCRIPTION_LENGTH),\n workProjectType: workProjectTypeSchema,\n hallWingType: hallWingTypeSchema,\n};\n\n// A Realm working title is reserved under `reservedRealmNames/{UPPER(title)}` — the\n// UPPERCASED title IS the Firestore doc ID (runCreateWorkRealm.reservedRealmNameRef).\n// Firestore doc IDs cannot contain `/` and cannot be exactly `.` or `..`, so a title\n// that would produce an invalid/ambiguous doc ID must be rejected at the callable\n// boundary (both the create transaction and the soft availability check) rather than\n// hard-failing with an opaque `internal` error deep inside ref construction. Length\n// derives from MAX_WORK_REALM_TITLE_LENGTH; only the doc-ID-breaking characters are\n// forbidden. Keep CheckRealmNameAvailableInputSchema in lockstep so a valid-at-create\n// name is never rejected at form time (and vice-versa).\nexport const realmWorkingTitleSchema = z\n .string()\n .min(1)\n .max(MAX_WORK_REALM_TITLE_LENGTH)\n .refine((v) => !v.includes('/'), { message: 'Realm name cannot contain a slash (/).' })\n .refine((v) => v !== '.' && v !== '..', { message: 'Realm name cannot be \".\" or \"..\".' });\n\nexport const RealmCreationModeSchema = z.enum([\n 'newPublicRealm',\n 'newStandaloneRealm',\n 'existingPublicRealm',\n]);\nexport type RealmCreationMode = z.infer<typeof RealmCreationModeSchema>;\n\nexport const CreateWorkProjectInputSchema = z.discriminatedUnion('realmCreationMode', [\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('newPublicRealm'),\n realmWorkingTitle: realmWorkingTitleSchema,\n realmWorkingDescription: z.string().min(1).max(MAX_WORK_REALM_DESCRIPTION_LENGTH),\n }).strict(),\n // Standalone realms are background plumbing (DJ ruling 2026-07-19): the user enters NO\n // realm information — the backend creates the realm shell with a synthetic unique\n // title/description (the generated workRealmId), so nothing user-authored exists on it\n // and no human realm name is consumed from the reservedRealmNames namespace.\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('newStandaloneRealm'),\n }).strict(),\n z.object({\n ...baseFields,\n realmCreationMode: z.literal('existingPublicRealm'),\n workRealmId: z.string().min(1),\n }).strict(),\n]);\nexport type CreateWorkProjectInput = z.infer<typeof CreateWorkProjectInputSchema>;\n\n// Identified by the workAssets subcollection doc id — never by URL parsing\n// (no delete path may depend on a URL; see media-assets-and-protected-serving.md).\nexport const DeleteWorkAssetInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workAssetId: z.string().min(1),\n}).strict();\nexport type DeleteWorkAssetInput = z.infer<typeof DeleteWorkAssetInputSchema>;\n\nexport const InviteSourceSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('standalone'),\n }).strict(),\n z.object({\n type: z.literal('craftSkill'),\n data: z.object({\n craftSkillId: craftSkillIdSchema,\n craftSkillOwnerUserId: userIdSchema,\n craftSkillName: z.string().min(1).max(MAX_CRAFT_SKILL_NAME_LENGTH),\n }).strict(),\n }).strict(),\n z.object({\n type: z.literal('commission'),\n // Titles are NOT snapshotted here (Display Identity Invariant — client display text\n // must be re-sourced at render by id). `postingStakeSharesOffered` is not display text;\n // the server re-sources it from the posting doc in the invite transaction (never trusts\n // the client copy) — kept so the shape stays server-writable.\n data: z.object({\n commissionListingId: commissionListingIdSchema,\n commissionProposalId: commissionProposalIdSchema,\n proposalArtisanUserId: userIdSchema,\n postingStakeSharesOffered: z.number().int().min(1),\n }).strict(),\n }).strict(),\n z.object({\n type: z.literal('audition'),\n data: z.object({\n auditionId: auditionIdSchema,\n auditionEntryId: auditionEntryIdSchema,\n respondentUserId: userIdSchema,\n postingStakeSharesOffered: z.number().int().min(1),\n }).strict(),\n }).strict(),\n]);\nexport type InviteSource = z.infer<typeof InviteSourceSchema>;\nexport type InviteSourceType = InviteSource['type'];\n\nexport const InviteUserToGuildInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n inviteeUid: userIdSchema,\n message: z.string().min(1).max(MAX_GUILD_INVITE_MESSAGE_LENGTH),\n stakeSharesOffered: z.number().int().min(1),\n source: InviteSourceSchema,\n}).strict();\nexport type InviteUserToGuildInput = z.infer<typeof InviteUserToGuildInputSchema>;\n\n// `finalized` is the terminal SUCCESS state (`accepted` is a transient state a trigger\n// consumes within seconds). Managers must be able to list finalized invites to see the\n// guild's actual recruitment history — not only failures and in-flight items. Derives from\n// the ONE canonical status enum (schemas/atoms.ts), never a re-declared literal.\nexport const ListGuildInvitesInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n statuses: z.array(guildInviteConversationStatusSchema).min(1),\n}).strict();\nexport type ListGuildInvitesInput = z.infer<typeof ListGuildInvitesInputSchema>;\n\nexport const UpdateGuildmateTradeProfessionsInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n userId: userIdSchema,\n tradeProfession: z.enum(TRADE_PROFESSION_VALUES),\n action: addRemoveActionSchema,\n}).strict();\nexport type UpdateGuildmateTradeProfessionsInput = z.infer<typeof UpdateGuildmateTradeProfessionsInputSchema>;\n\nconst GUILD_STANDING_VALUES_ENUM = GUILD_STANDING_VALUES as [typeof GUILD_STANDING_VALUES[number], ...typeof GUILD_STANDING_VALUES[number][]];\n\nexport const UpdateGuildmateStandingInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n userId: userIdSchema,\n guildStanding: z.enum(GUILD_STANDING_VALUES_ENUM),\n action: addRemoveActionSchema,\n}).strict();\nexport type UpdateGuildmateStandingInput = z.infer<typeof UpdateGuildmateStandingInputSchema>;\n\n// Member self-leave (leaveWorkProject). The leaver is ALWAYS request.auth.uid — never a\n// client-supplied uid (invariant 3) — so the input carries only the workProjectId. The\n// callable composes the internal `depart` stake-share operation for ctx.uid.\nexport const LeaveWorkProjectInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n}).strict();\nexport type LeaveWorkProjectInput = z.infer<typeof LeaveWorkProjectInputSchema>;\n\nexport const UpdatePublicWorkProjectDetailsInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workingTitle: z.string().min(1).max(MAX_WORK_PROJECT_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_PROJECT_DESCRIPTION_LENGTH),\n}).strict();\nexport type UpdatePublicWorkProjectDetailsInput = z.infer<typeof UpdatePublicWorkProjectDetailsInputSchema>;\n\nexport const UpdateWorkRealmDetailsInputSchema = z.object({\n workRealmId: z.string().min(1),\n workingTitle: z.string().min(1).max(MAX_WORK_REALM_TITLE_LENGTH),\n workingDescription: z.string().min(1).max(MAX_WORK_REALM_DESCRIPTION_LENGTH),\n}).strict();\nexport type UpdateWorkRealmDetailsInput = z.infer<typeof UpdateWorkRealmDetailsInputSchema>;\n\n// Unauthenticated soft-check for a Realm working title. Must match the authoritative\n// realmWorkingTitle contract in CreateWorkProjectInputSchema (realmWorkingTitleSchema:\n// MAX_WORK_REALM_TITLE_LENGTH, rejecting the doc-ID-breaking `/` and reserved `.`/`..`). Never be\n// stricter than the create transaction or a valid-at-create name would be rejected at\n// form time — reuse the SAME schema so the two can never drift.\nexport const CheckRealmNameAvailableInputSchema = z.object({\n workingTitle: realmWorkingTitleSchema,\n}).strict();\nexport type CheckRealmNameAvailableInput = z.infer<typeof CheckRealmNameAvailableInputSchema>;\n\n// ---- work-project file folders (S7) ---------------------------------------------------\n// The default \"All Guildmates\" folder is immutable; custom-folder access is by trade\n// profession. All four callables require a file-admin standing via assertCanManageFolders.\n\nconst tradeProfessionListSchema = z\n .array(z.enum(TRADE_PROFESSION_VALUES))\n .max(TRADE_PROFESSION_OPTIONS.length);\n\nexport const CreateFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n canViewTradeProfessions: tradeProfessionListSchema,\n canUploadTradeProfessions: tradeProfessionListSchema,\n canDeleteTradeProfessions: tradeProfessionListSchema,\n}).strict();\nexport type CreateFileFolderInput = z.infer<typeof CreateFileFolderInputSchema>;\n\nexport const RenameFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type RenameFileFolderInput = z.infer<typeof RenameFileFolderInputSchema>;\n\nexport const UpdateFolderProfessionsInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n canViewTradeProfessions: tradeProfessionListSchema,\n canUploadTradeProfessions: tradeProfessionListSchema,\n canDeleteTradeProfessions: tradeProfessionListSchema,\n}).strict();\nexport type UpdateFolderProfessionsInput = z.infer<typeof UpdateFolderProfessionsInputSchema>;\n\nexport const DeleteFileFolderInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n}).strict();\nexport type DeleteFileFolderInput = z.infer<typeof DeleteFileFolderInputSchema>;\n\n// ---- realm shared files ---------------------------------------------------------------\n\n// Delete a single work file (by folder + file id). File-admin authz is enforced in the\n// callable/core transaction.\nexport const DeleteWorkFileInputSchema = z.object({\n workProjectId: z.string().min(1),\n folderId: z.string().min(1),\n workFileId: z.string().min(1),\n}).strict();\nexport type DeleteWorkFileInput = z.infer<typeof DeleteWorkFileInputSchema>;\n\n// Set canon status on a realm shared file. Realm-steward-only authz is enforced inside the\n// core's transaction against workRealms/{workRealmId}.workStewardUid.\nexport const UpdateWorkFileRealmCanonInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n canon: z.boolean(),\n}).strict();\nexport type UpdateWorkFileRealmCanonInput = z.infer<typeof UpdateWorkFileRealmCanonInputSchema>;\n\n// ---- the promotion approval gate -------------------------------------------------------\n// Promotion is a REQUEST, not an instant share: the Work file admin asks, and the REALM\n// steward approves (choosing the folder) or declines. Nothing is served to the Realm until\n// approval — a requested file stays `scoped` and invisible to the member gallery.\n//\n// Every one of these carries the `requestId` so a decision always names the exact request it\n// observed. Realm-side authority (steward, public + non-hidden Realm) is derived from the\n// Realm document inside each core's transaction; these shapes carry no authority hints.\n\n// REQUEST promotion of a work file into its Realm's shared-file pool. File-admin authz\n// (`workFile.promoteToRealm`) is enforced inside the core's transaction.\n// `requestId` is CLIENT-generated and stable: replaying the same id is an idempotent success\n// (no second audit event, no second notification), while a DIFFERENT id arriving while one\n// request is already pending is a conflict — never a silent overwrite.\nexport const UpdateWorkFileRealmShareInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type UpdateWorkFileRealmShareInput = z.infer<typeof UpdateWorkFileRealmShareInputSchema>;\n\n// WITHDRAW a still-pending request (the requesting Work's file admin). Realm-share\n// permanence begins at APPROVAL — before a steward decides, an accidental request must be\n// correctable by the side that made it. Addressed by Work coordinates like the request\n// itself, and compares `requestId` so a withdrawal can never cancel a newer re-request.\nexport const WithdrawRealmFilePromotionRequestInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workFileId: z.string().min(1),\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type WithdrawRealmFilePromotionRequestInput = z.infer<typeof WithdrawRealmFilePromotionRequestInputSchema>;\n\n// APPROVE a pending request (Realm steward). Approval assigns the folder — there is no\n// default folder, so `realmFileFolderId` is REQUIRED and the core verifies the folder is\n// under this exact Realm before flipping the file to `nonCanon` + the artisan tier.\nexport const ApproveRealmFilePromotionInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type ApproveRealmFilePromotionInput = z.infer<typeof ApproveRealmFilePromotionInputSchema>;\n\n// DECLINE a pending request (Realm steward). Returns the file to `none` and clears the Realm\n// + request fields. No folder is involved — a declined file never entered the pool.\nexport const DeclineRealmFilePromotionInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n requestId: realmFileShareRequestIdSchema,\n}).strict();\nexport type DeclineRealmFilePromotionInput = z.infer<typeof DeclineRealmFilePromotionInputSchema>;\n\n// ADMIN un-share of an ALREADY-APPROVED realm file (`adminUpdateWorkFileRealmUnshare`).\n// Once a steward approves, sharing is PERMANENT for members — the only way out is an admin\n// acting on a support thread. This is its own input rather than a reuse of the share/request\n// shape: an approved file has NO pending request, so `requestId` is meaningless here and\n// requiring one would make the callable unusable against exactly the state it exists to\n// unwind. It carries the ORIGINAL two-field Work-coordinate shape the share input had before\n// the approval gate; the core resolves the file by collection-group query on\n// (`workProjectId`, `workFileId`). Admin authority is asserted at the callable's admin gate\n// and re-asserted in the core (which rejects any non-`adminOverride` actor) — never inferred\n// from anything in this payload.\nexport const AdminUpdateWorkFileRealmUnshareInputSchema = z.object({\n workProjectId: workProjectIdSchema,\n workFileId: z.string().min(1),\n}).strict();\nexport type AdminUpdateWorkFileRealmUnshareInput = z.infer<typeof AdminUpdateWorkFileRealmUnshareInputSchema>;\n\n// ---- realm shared-file folders (steward-managed) ---------------------------------------\n// Mirrors the Work-side folder CRUD shapes, minus the trade-profession access lists: Realm\n// folders are organizational only (Realm-level visibility is the whole access model at\n// launch). Names reuse the ONE platform folder-name bound; the server derives\n// `name_lowercase` and enforces case-insensitive uniqueness within the Realm.\n\nexport const CreateRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type CreateRealmFileFolderInput = z.infer<typeof CreateRealmFileFolderInputSchema>;\n\n/** Rename. `update*` per BACKEND-305 — it modifies an existing doc in place. */\nexport const UpdateRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n name: z.string().min(1).max(MAX_FILE_FOLDER_NAME_LENGTH),\n}).strict();\nexport type UpdateRealmFileFolderInput = z.infer<typeof UpdateRealmFileFolderInputSchema>;\n\n/** Delete requires the folder to be EMPTY (the steward moves files out first) — no surprise\n * data moves and no reassignment-target picker at launch. Emptiness is proven by an\n * in-transaction query for ANY asset carrying this folder id, regardless of serving/hidden/\n * canon state: a hidden file still occupies its folder. */\nexport const DeleteRealmFileFolderInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n}).strict();\nexport type DeleteRealmFileFolderInput = z.infer<typeof DeleteRealmFileFolderInputSchema>;\n\n/** Move an approved shared file between folders. `expectedRealmFileFolderId` is a\n * compare-and-set precondition — a steward acting on a stale view must not silently undo a\n * move made from another tab. */\nexport const UpdateRealmFileFolderAssignmentInputSchema = z.object({\n workRealmId: workRealmIdSchema,\n mediaAssetId: mediaAssetIdSchema,\n expectedRealmFileFolderId: realmFileFolderIdSchema,\n realmFileFolderId: realmFileFolderIdSchema,\n}).strict();\nexport type UpdateRealmFileFolderAssignmentInput = z.infer<typeof UpdateRealmFileFolderAssignmentInputSchema>;\n\n\n"]}
|