@ttt-productions/ttt-core 0.79.13 → 0.79.15
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.
- package/dist/doc-schemas/account-deletion.d.ts +1 -0
- package/dist/doc-schemas/account-deletion.d.ts.map +1 -1
- package/dist/doc-schemas/account-deletion.js +19 -5
- package/dist/doc-schemas/account-deletion.js.map +1 -1
- package/dist/doc-schemas/moderation.d.ts +13 -0
- package/dist/doc-schemas/moderation.d.ts.map +1 -1
- package/dist/doc-schemas/registry.d.ts +120 -2
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/media/pending-media.d.ts +253 -6
- package/dist/media/pending-media.d.ts.map +1 -1
- package/dist/media/start-upload.d.ts +13 -0
- package/dist/media/start-upload.d.ts.map +1 -1
- package/dist/media/start-upload.js +8 -1
- package/dist/media/start-upload.js.map +1 -1
- package/dist/media/ttt-media-specs.d.ts.map +1 -1
- package/dist/media/ttt-media-specs.js +23 -5
- package/dist/media/ttt-media-specs.js.map +1 -1
- package/package.json +2 -2
|
@@ -92,6 +92,7 @@ export declare const AccountDeletionRequestV1Schema: z.ZodObject<{
|
|
|
92
92
|
scheduledScrubAt: z.ZodNumber;
|
|
93
93
|
graceDays: z.ZodNumber;
|
|
94
94
|
cancelledAt: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
tokenRevocationNextAttemptAt: z.ZodOptional<z.ZodNumber>;
|
|
95
96
|
tokensRevokedAt: z.ZodOptional<z.ZodNumber>;
|
|
96
97
|
scrubStartedAt: z.ZodOptional<z.ZodNumber>;
|
|
97
98
|
parkedReason: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-deletion.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/account-deletion.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gDAAgD;AAChD,eAAO,MAAM,kCAAkC;;;;;;;;EAU7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,iCAAiC;;;;;;;;CAQ2B,CAAC;AAEnE,0FAA0F;AAC1F,MAAM,MAAM,2BAA2B,GAAG;KACvC,CAAC,IAAI,4BAA4B,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK;CAC5G,CAAC,4BAA4B,CAAC,CAAC;AAEhC;;gFAEgF;AAChF,eAAO,MAAM,gCAAgC,EAAE,SAAS,2BAA2B,EAEmB,CAAC;AAEvG;;4FAE4F;AAC5F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,2BAA2B,CAE9F;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;kBAmBtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,8BAA8B
|
|
1
|
+
{"version":3,"file":"account-deletion.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/account-deletion.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gDAAgD;AAChD,eAAO,MAAM,kCAAkC;;;;;;;;EAU7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,iCAAiC;;;;;;;;CAQ2B,CAAC;AAEnE,0FAA0F;AAC1F,MAAM,MAAM,2BAA2B,GAAG;KACvC,CAAC,IAAI,4BAA4B,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK;CAC5G,CAAC,4BAA4B,CAAC,CAAC;AAEhC;;gFAEgF;AAChF,eAAO,MAAM,gCAAgC,EAAE,SAAS,2BAA2B,EAEmB,CAAC;AAEvG;;4FAE4F;AAC5F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,2BAA2B,CAE9F;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;kBAmBtB,CAAC;AACZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+ChC,CAAC;AACZ,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
|
|
@@ -118,12 +118,26 @@ export const AccountDeletionRequestV1Schema = z
|
|
|
118
118
|
scheduledScrubAt: z.number(),
|
|
119
119
|
graceDays: z.number(), // recorded for the audit/compliance trail (30 at launch)
|
|
120
120
|
cancelledAt: z.number().optional(),
|
|
121
|
+
// Token-revocation obligation — the request doc IS the durable ledger (BACKEND-302 /
|
|
122
|
+
// QUALITY-104); no separate queue, worker collection, or dead-letter state exists.
|
|
123
|
+
//
|
|
124
|
+
// `tokenRevocationNextAttemptAt` is the DRAIN KEY: present ⇔ the revocation is still
|
|
125
|
+
// OWED. Set to `now` when the request is created; the scheduled worker's revocation
|
|
126
|
+
// drain queries `tokenRevocationNextAttemptAt <= now` (single-field range — deliberately
|
|
127
|
+
// no status clause and no composite index; every terminal transition clears the field,
|
|
128
|
+
// and the drain clears it on any non-active doc it meets, so "owed" means exactly
|
|
129
|
+
// "field present"). A failed attempt moves it forward (bounded backoff); a successful
|
|
130
|
+
// revoke DELETES it and stamps `tokensRevokedAt` in the same fenced update.
|
|
131
|
+
//
|
|
132
|
+
// The stamp is GENERATION-FENCED on `requestedAt`: the revoker snapshots `requestedAt`
|
|
133
|
+
// before calling Auth and stamps transactionally only if the doc still carries that
|
|
134
|
+
// value with an active status — a delayed revoke from a cancelled request must never
|
|
135
|
+
// mark a newly reopened request satisfied. Revocation is idempotent, so a skipped or
|
|
136
|
+
// lost stamp merely causes one redundant re-revoke.
|
|
137
|
+
tokenRevocationNextAttemptAt: z.number().optional(),
|
|
121
138
|
// When the user's refresh tokens were revoked for THIS request ("account deletion signs
|
|
122
|
-
// the user out of every session everywhere").
|
|
123
|
-
// the
|
|
124
|
-
// immediate revoke is only the accelerator, and the scheduled scrub-worker drain
|
|
125
|
-
// re-revokes + stamps any ACTIVE request missing this field until it succeeds.
|
|
126
|
-
// Revocation is idempotent, so a lost stamp merely causes one redundant re-revoke.
|
|
139
|
+
// the user out of every session everywhere"). The callable's immediate revoke is only
|
|
140
|
+
// the accelerator (BACKEND-301); the worker drain above is the guarantee.
|
|
127
141
|
tokensRevokedAt: z.number().optional(),
|
|
128
142
|
scrubStartedAt: z.number().optional(),
|
|
129
143
|
// Why a scrub is parked (e.g. 'blocking safety hold over user data') — kept for
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-deletion.js","sourceRoot":"","sources":["../../src/doc-schemas/account-deletion.ts"],"names":[],"mappings":"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","sourcesContent":["// Account-deletion / GDPR-erasure request SCHEMA — `accountDeletionRequests/{uid}`.\n//\n// N3 data-deletion flow. A user clicks \"delete account\" on their profile → a\n// request doc is created (one per user, doc id = uid, create-if-absent) and the\n// account is immediately deactivated/locked out. The request runs a 30-day grace\n// window (logging back in CANCELS it). After the window, the scheduled scrub\n// worker checks for any BLOCKING safety hold over the user's data:\n// - no hold → anonymize-in-place (scrub PII, release reserved name, anonymize\n// chat history, tombstone memberships) → `completed`.\n// - hold → `parkedOnHold` (re-checked periodically): resumes + `completed`\n// once cleared, or → `superseded` if it becomes a ban-for-cause /\n// evidence-preservation outcome (the erasure is overridden and the\n// data retained as evidence).\n//\n// The scrub itself deletes/anonymizes data across many collections; this doc is\n// ONLY the request lifecycle + the worker's resumable cursor.\n//\n// [C-02] Erasure-vs-safety-hold race fence. The destructive scrub and a safety\n// hold landing mid-scrub race over the SAME account. The fence is an epoch LEASE\n// stamped on THIS doc (`erasureLease`): the scrub transactionally acquires the\n// lease ONLY when the account owns no active blocking hold; every destructive\n// write re-checks the SAME epoch in its own transaction; and `commitSafetyHold`\n// (the SINGLE shared hold authority) reads this doc's live lease and PARKS the\n// erasure (revoking the epoch) before committing a hold against a leased account.\n// A revoked epoch makes every still-running destructive step a no-op. The lease\n// lives HERE — not a parallel safety-only deletion subsystem — so the one shared\n// hold/destructive contract owns the fence (engineering-rules ARCH-001).\n\nimport { z } from 'zod';\n\n/** Lifecycle of an account-deletion request. */\nexport const AccountDeletionRequestStatusSchema = z.enum([\n 'pending', // grace window running; user can still cancel by logging in\n 'cancelled', // user cancelled (logged back in) before the window elapsed\n 'scrubbing', // the scrub worker has started the anonymize-in-place erasure\n // [C-02] the scrub holds an ACTIVE erasure lease and is mid-destruction. A hold\n // landing now revokes the lease (→ parkedOnHold) so the scrub aborts deterministically.\n 'leased',\n 'parkedOnHold', // erasure deferred — a blocking safety hold covers the user's data\n 'completed', // erasure finished\n 'superseded', // overridden by a ban-for-cause / evidence-preservation outcome\n]);\nexport type AccountDeletionRequestStatus = z.infer<typeof AccountDeletionRequestStatusSchema>;\n\n/**\n * ACTIVE = the request is still OPEN and still cancellable. This is the one predicate the\n * lifecycle's enforcement points share — `requestAccountDeletion`'s idempotent re-return of the\n * existing schedule, `cancelAccountDeletion`'s cancel gate, the scrub worker's due-request query,\n * and the client's live own-request read — each of which previously restated\n * `status === 'pending' || status === 'parkedOnHold'` locally (ARCH-102).\n *\n * Declared as an EXHAUSTIVE Record over the status union, not as a subset array: a subset array\n * only catches a REMOVED member, whereas adding a lifecycle status must be a compile error here\n * until that status is classified. A new status silently defaulting to \"not active\" is exactly the\n * drift this classification exists to prevent.\n *\n * `scrubbing` / `leased` are deliberately NOT active — the destructive erasure has already begun,\n * so there is no schedule left to re-offer and nothing left to cancel. `cancelled` / `completed` /\n * `superseded` are terminal.\n */\nconst DELETION_REQUEST_STATUS_IS_ACTIVE = {\n pending: true,\n cancelled: false,\n scrubbing: false,\n leased: false,\n parkedOnHold: true,\n completed: false,\n superseded: false,\n} as const satisfies Record<AccountDeletionRequestStatus, boolean>;\n\n/** The statuses classified ACTIVE above, as a literal union — derived, never restated. */\nexport type ActiveDeletionRequestStatus = {\n [K in AccountDeletionRequestStatus]: (typeof DELETION_REQUEST_STATUS_IS_ACTIVE)[K] extends true ? K : never;\n}[AccountDeletionRequestStatus];\n\n/** The ACTIVE (open, still-cancellable) deletion-request statuses, projected from the\n * classification above in union-declaration order — so it can also feed a Firestore\n * `where('status', 'in', ACTIVE_DELETION_REQUEST_STATUSES)` query directly. */\nexport const ACTIVE_DELETION_REQUEST_STATUSES: readonly ActiveDeletionRequestStatus[] = (\n Object.keys(DELETION_REQUEST_STATUS_IS_ACTIVE) as AccountDeletionRequestStatus[]\n).filter((status): status is ActiveDeletionRequestStatus => DELETION_REQUEST_STATUS_IS_ACTIVE[status]);\n\n/** True for an ACTIVE (open, still-cancellable) deletion request. Takes `unknown` because every\n * caller reads the status off an unvalidated Firestore doc: anything outside the canonical active\n * set — a terminal/mid-scrub status, an unrecognized value, a missing field — is false. */\nexport function isActiveDeletionRequest(status: unknown): status is ActiveDeletionRequestStatus {\n return typeof status === 'string' && (ACTIVE_DELETION_REQUEST_STATUSES as readonly string[]).includes(status);\n}\n\n/**\n * [C-02] The erasure LEASE / epoch token — the race fence between the destructive\n * scrub and a mid-scrub safety hold.\n *\n * The scrub acquires this transactionally ONLY when the account owns no active\n * blocking hold; it then re-verifies the SAME `epoch` inside every destructive\n * Firestore transaction and immediately before AND after each non-transactional\n * external delete (Auth/Storage). `commitSafetyHold` reads this lease and, when it\n * is `active`, REVOKES it (sets `revokedByHold`/`revokedAt`, status → `parkedOnHold`)\n * in the SAME transaction that commits the hold — so a hold deterministically wins\n * the race and the scrub, finding its epoch revoked on the next check, aborts into\n * a recoverable parked state without finishing the destruction.\n */\nexport const ErasureLeaseV1Schema = z\n .object({\n /** Monotonic acquisition token. The \"live lease\" identity: every destructive step\n * re-reads the doc and proceeds ONLY if this still equals the epoch it acquired. */\n epoch: z.number().int().nonnegative(),\n /** 'active' = the scrub holds the lease; 'revoked' = a hold reclaimed it mid-scrub\n * (the scrub must abort); 'released' = the scrub finished/relinquished cleanly. */\n state: z.enum(['active', 'revoked', 'released']),\n acquiredAt: z.number(),\n /** Staleness boundary. A still-`active` lease past this is presumed crashed and may\n * be safely superseded by a fresh acquisition (idempotent retry / crash recovery). */\n expiresAt: z.number(),\n /** Last destructive phase the scrub reached under this epoch (observability + recovery). */\n phase: z.string().optional(),\n /** Set when a hold revoked the lease — the caseId/refId of the winning hold (audit trail). */\n revokedByHoldRefId: z.string().min(1).optional(),\n revokedAt: z.number().optional(),\n releasedAt: z.number().optional(),\n })\n .strict();\nexport type ErasureLeaseV1 = z.infer<typeof ErasureLeaseV1Schema>;\n\n/** `accountDeletionRequests/{uid}` — one per user; doc id IS the uid. */\nexport const AccountDeletionRequestV1Schema = z\n .object({\n schemaVersion: z.literal(1),\n uid: z.string().min(1),\n status: AccountDeletionRequestStatusSchema,\n requestedAt: z.number(),\n // requestedAt + graceDays; the scrub worker queries status='pending' AND\n // scheduledScrubAt <= now (composite index, ttt-prod firestore.indexes.json).\n scheduledScrubAt: z.number(),\n graceDays: z.number(), // recorded for the audit/compliance trail (30 at launch)\n cancelledAt: z.number().optional(),\n // When the user's refresh tokens were revoked for THIS request (\"account deletion signs\n // the user out of every session everywhere\"). ABSENT = the obligation is still pending:\n // the request doc IS the durable state (BACKEND-302/QUALITY-104) — the callable's\n // immediate revoke is only the accelerator, and the scheduled scrub-worker drain\n // re-revokes + stamps any ACTIVE request missing this field until it succeeds.\n // Revocation is idempotent, so a lost stamp merely causes one redundant re-revoke.\n tokensRevokedAt: z.number().optional(),\n scrubStartedAt: z.number().optional(),\n // Why a scrub is parked (e.g. 'blocking safety hold over user data') — kept for\n // the GDPR compliance record so a deferred erasure is explainable.\n parkedReason: z.string().optional(),\n parkedAt: z.number().optional(),\n lastHoldCheckAt: z.number().optional(),\n completedAt: z.number().optional(),\n supersededAt: z.number().optional(),\n supersededReason: z.string().optional(),\n // [C-02] the erasure-vs-hold race fence (see ErasureLeaseV1). Absent until the\n // scrub first acquires the lease; thereafter it carries the live epoch + state.\n erasureLease: ErasureLeaseV1Schema.optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n })\n .strict();\nexport type AccountDeletionRequestV1 = z.infer<typeof AccountDeletionRequestV1Schema>;\n"]}
|
|
1
|
+
{"version":3,"file":"account-deletion.js","sourceRoot":"","sources":["../../src/doc-schemas/account-deletion.ts"],"names":[],"mappings":"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","sourcesContent":["// Account-deletion / GDPR-erasure request SCHEMA — `accountDeletionRequests/{uid}`.\n//\n// N3 data-deletion flow. A user clicks \"delete account\" on their profile → a\n// request doc is created (one per user, doc id = uid, create-if-absent) and the\n// account is immediately deactivated/locked out. The request runs a 30-day grace\n// window (logging back in CANCELS it). After the window, the scheduled scrub\n// worker checks for any BLOCKING safety hold over the user's data:\n// - no hold → anonymize-in-place (scrub PII, release reserved name, anonymize\n// chat history, tombstone memberships) → `completed`.\n// - hold → `parkedOnHold` (re-checked periodically): resumes + `completed`\n// once cleared, or → `superseded` if it becomes a ban-for-cause /\n// evidence-preservation outcome (the erasure is overridden and the\n// data retained as evidence).\n//\n// The scrub itself deletes/anonymizes data across many collections; this doc is\n// ONLY the request lifecycle + the worker's resumable cursor.\n//\n// [C-02] Erasure-vs-safety-hold race fence. The destructive scrub and a safety\n// hold landing mid-scrub race over the SAME account. The fence is an epoch LEASE\n// stamped on THIS doc (`erasureLease`): the scrub transactionally acquires the\n// lease ONLY when the account owns no active blocking hold; every destructive\n// write re-checks the SAME epoch in its own transaction; and `commitSafetyHold`\n// (the SINGLE shared hold authority) reads this doc's live lease and PARKS the\n// erasure (revoking the epoch) before committing a hold against a leased account.\n// A revoked epoch makes every still-running destructive step a no-op. The lease\n// lives HERE — not a parallel safety-only deletion subsystem — so the one shared\n// hold/destructive contract owns the fence (engineering-rules ARCH-001).\n\nimport { z } from 'zod';\n\n/** Lifecycle of an account-deletion request. */\nexport const AccountDeletionRequestStatusSchema = z.enum([\n 'pending', // grace window running; user can still cancel by logging in\n 'cancelled', // user cancelled (logged back in) before the window elapsed\n 'scrubbing', // the scrub worker has started the anonymize-in-place erasure\n // [C-02] the scrub holds an ACTIVE erasure lease and is mid-destruction. A hold\n // landing now revokes the lease (→ parkedOnHold) so the scrub aborts deterministically.\n 'leased',\n 'parkedOnHold', // erasure deferred — a blocking safety hold covers the user's data\n 'completed', // erasure finished\n 'superseded', // overridden by a ban-for-cause / evidence-preservation outcome\n]);\nexport type AccountDeletionRequestStatus = z.infer<typeof AccountDeletionRequestStatusSchema>;\n\n/**\n * ACTIVE = the request is still OPEN and still cancellable. This is the one predicate the\n * lifecycle's enforcement points share — `requestAccountDeletion`'s idempotent re-return of the\n * existing schedule, `cancelAccountDeletion`'s cancel gate, the scrub worker's due-request query,\n * and the client's live own-request read — each of which previously restated\n * `status === 'pending' || status === 'parkedOnHold'` locally (ARCH-102).\n *\n * Declared as an EXHAUSTIVE Record over the status union, not as a subset array: a subset array\n * only catches a REMOVED member, whereas adding a lifecycle status must be a compile error here\n * until that status is classified. A new status silently defaulting to \"not active\" is exactly the\n * drift this classification exists to prevent.\n *\n * `scrubbing` / `leased` are deliberately NOT active — the destructive erasure has already begun,\n * so there is no schedule left to re-offer and nothing left to cancel. `cancelled` / `completed` /\n * `superseded` are terminal.\n */\nconst DELETION_REQUEST_STATUS_IS_ACTIVE = {\n pending: true,\n cancelled: false,\n scrubbing: false,\n leased: false,\n parkedOnHold: true,\n completed: false,\n superseded: false,\n} as const satisfies Record<AccountDeletionRequestStatus, boolean>;\n\n/** The statuses classified ACTIVE above, as a literal union — derived, never restated. */\nexport type ActiveDeletionRequestStatus = {\n [K in AccountDeletionRequestStatus]: (typeof DELETION_REQUEST_STATUS_IS_ACTIVE)[K] extends true ? K : never;\n}[AccountDeletionRequestStatus];\n\n/** The ACTIVE (open, still-cancellable) deletion-request statuses, projected from the\n * classification above in union-declaration order — so it can also feed a Firestore\n * `where('status', 'in', ACTIVE_DELETION_REQUEST_STATUSES)` query directly. */\nexport const ACTIVE_DELETION_REQUEST_STATUSES: readonly ActiveDeletionRequestStatus[] = (\n Object.keys(DELETION_REQUEST_STATUS_IS_ACTIVE) as AccountDeletionRequestStatus[]\n).filter((status): status is ActiveDeletionRequestStatus => DELETION_REQUEST_STATUS_IS_ACTIVE[status]);\n\n/** True for an ACTIVE (open, still-cancellable) deletion request. Takes `unknown` because every\n * caller reads the status off an unvalidated Firestore doc: anything outside the canonical active\n * set — a terminal/mid-scrub status, an unrecognized value, a missing field — is false. */\nexport function isActiveDeletionRequest(status: unknown): status is ActiveDeletionRequestStatus {\n return typeof status === 'string' && (ACTIVE_DELETION_REQUEST_STATUSES as readonly string[]).includes(status);\n}\n\n/**\n * [C-02] The erasure LEASE / epoch token — the race fence between the destructive\n * scrub and a mid-scrub safety hold.\n *\n * The scrub acquires this transactionally ONLY when the account owns no active\n * blocking hold; it then re-verifies the SAME `epoch` inside every destructive\n * Firestore transaction and immediately before AND after each non-transactional\n * external delete (Auth/Storage). `commitSafetyHold` reads this lease and, when it\n * is `active`, REVOKES it (sets `revokedByHold`/`revokedAt`, status → `parkedOnHold`)\n * in the SAME transaction that commits the hold — so a hold deterministically wins\n * the race and the scrub, finding its epoch revoked on the next check, aborts into\n * a recoverable parked state without finishing the destruction.\n */\nexport const ErasureLeaseV1Schema = z\n .object({\n /** Monotonic acquisition token. The \"live lease\" identity: every destructive step\n * re-reads the doc and proceeds ONLY if this still equals the epoch it acquired. */\n epoch: z.number().int().nonnegative(),\n /** 'active' = the scrub holds the lease; 'revoked' = a hold reclaimed it mid-scrub\n * (the scrub must abort); 'released' = the scrub finished/relinquished cleanly. */\n state: z.enum(['active', 'revoked', 'released']),\n acquiredAt: z.number(),\n /** Staleness boundary. A still-`active` lease past this is presumed crashed and may\n * be safely superseded by a fresh acquisition (idempotent retry / crash recovery). */\n expiresAt: z.number(),\n /** Last destructive phase the scrub reached under this epoch (observability + recovery). */\n phase: z.string().optional(),\n /** Set when a hold revoked the lease — the caseId/refId of the winning hold (audit trail). */\n revokedByHoldRefId: z.string().min(1).optional(),\n revokedAt: z.number().optional(),\n releasedAt: z.number().optional(),\n })\n .strict();\nexport type ErasureLeaseV1 = z.infer<typeof ErasureLeaseV1Schema>;\n\n/** `accountDeletionRequests/{uid}` — one per user; doc id IS the uid. */\nexport const AccountDeletionRequestV1Schema = z\n .object({\n schemaVersion: z.literal(1),\n uid: z.string().min(1),\n status: AccountDeletionRequestStatusSchema,\n requestedAt: z.number(),\n // requestedAt + graceDays; the scrub worker queries status='pending' AND\n // scheduledScrubAt <= now (composite index, ttt-prod firestore.indexes.json).\n scheduledScrubAt: z.number(),\n graceDays: z.number(), // recorded for the audit/compliance trail (30 at launch)\n cancelledAt: z.number().optional(),\n // Token-revocation obligation — the request doc IS the durable ledger (BACKEND-302 /\n // QUALITY-104); no separate queue, worker collection, or dead-letter state exists.\n //\n // `tokenRevocationNextAttemptAt` is the DRAIN KEY: present ⇔ the revocation is still\n // OWED. Set to `now` when the request is created; the scheduled worker's revocation\n // drain queries `tokenRevocationNextAttemptAt <= now` (single-field range — deliberately\n // no status clause and no composite index; every terminal transition clears the field,\n // and the drain clears it on any non-active doc it meets, so \"owed\" means exactly\n // \"field present\"). A failed attempt moves it forward (bounded backoff); a successful\n // revoke DELETES it and stamps `tokensRevokedAt` in the same fenced update.\n //\n // The stamp is GENERATION-FENCED on `requestedAt`: the revoker snapshots `requestedAt`\n // before calling Auth and stamps transactionally only if the doc still carries that\n // value with an active status — a delayed revoke from a cancelled request must never\n // mark a newly reopened request satisfied. Revocation is idempotent, so a skipped or\n // lost stamp merely causes one redundant re-revoke.\n tokenRevocationNextAttemptAt: z.number().optional(),\n // When the user's refresh tokens were revoked for THIS request (\"account deletion signs\n // the user out of every session everywhere\"). The callable's immediate revoke is only\n // the accelerator (BACKEND-301); the worker drain above is the guarantee.\n tokensRevokedAt: z.number().optional(),\n scrubStartedAt: z.number().optional(),\n // Why a scrub is parked (e.g. 'blocking safety hold over user data') — kept for\n // the GDPR compliance record so a deferred erasure is explainable.\n parkedReason: z.string().optional(),\n parkedAt: z.number().optional(),\n lastHoldCheckAt: z.number().optional(),\n completedAt: z.number().optional(),\n supersededAt: z.number().optional(),\n supersededReason: z.string().optional(),\n // [C-02] the erasure-vs-hold race fence (see ErasureLeaseV1). Absent until the\n // scrub first acquires the lease; thereafter it carries the live epoch + state.\n erasureLease: ErasureLeaseV1Schema.optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n })\n .strict();\nexport type AccountDeletionRequestV1 = z.infer<typeof AccountDeletionRequestV1Schema>;\n"]}
|
|
@@ -60,6 +60,19 @@ export declare const ContentViolationSchema: z.ZodObject<{
|
|
|
60
60
|
surface: z.ZodString;
|
|
61
61
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
62
62
|
}, z.core.$strict>>;
|
|
63
|
+
clientMediaClaim: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
64
|
+
kind: z.ZodEnum<{
|
|
65
|
+
file: "file";
|
|
66
|
+
image: "image";
|
|
67
|
+
video: "video";
|
|
68
|
+
audio: "audio";
|
|
69
|
+
}>;
|
|
70
|
+
source: z.ZodEnum<{
|
|
71
|
+
"file-picker": "file-picker";
|
|
72
|
+
"camera-capture": "camera-capture";
|
|
73
|
+
"media-recorder": "media-recorder";
|
|
74
|
+
}>;
|
|
75
|
+
}, z.core.$strict>>>;
|
|
63
76
|
publicationState: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
64
77
|
notStarted: "notStarted";
|
|
65
78
|
activating: "activating";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/moderation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/moderation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+BjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,6BAA6B;;;;;EAAmE,CAAC;AAC9G,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,6BAA6B;;;;EAA4C,CAAC;AACvF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,wCAAwC;;;;;;EAMnD,CAAC;AACH,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wCAAwC,CAAC,CAAC;AAI1G,eAAO,MAAM,yCAAyC;;;EAAuC,CAAC;AAC9F,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yCAAyC,CAAC,CAAC;AAE5G,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;iBAU1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;iBAQ5C,CAAC;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC"}
|
|
@@ -1591,6 +1591,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
1591
1591
|
surface: z.ZodString;
|
|
1592
1592
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1593
1593
|
}, z.core.$strict>>;
|
|
1594
|
+
clientMediaClaim: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
1595
|
+
kind: z.ZodEnum<{
|
|
1596
|
+
file: "file";
|
|
1597
|
+
image: "image";
|
|
1598
|
+
video: "video";
|
|
1599
|
+
audio: "audio";
|
|
1600
|
+
}>;
|
|
1601
|
+
source: z.ZodEnum<{
|
|
1602
|
+
"file-picker": "file-picker";
|
|
1603
|
+
"camera-capture": "camera-capture";
|
|
1604
|
+
"media-recorder": "media-recorder";
|
|
1605
|
+
}>;
|
|
1606
|
+
}, z.core.$strict>>>;
|
|
1594
1607
|
publicationState: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
|
|
1595
1608
|
notStarted: "notStarted";
|
|
1596
1609
|
activating: "activating";
|
|
@@ -1809,6 +1822,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
1809
1822
|
surface: z.ZodString;
|
|
1810
1823
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1811
1824
|
}, z.core.$strict>;
|
|
1825
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1826
|
+
kind: z.ZodEnum<{
|
|
1827
|
+
file: "file";
|
|
1828
|
+
image: "image";
|
|
1829
|
+
video: "video";
|
|
1830
|
+
audio: "audio";
|
|
1831
|
+
}>;
|
|
1832
|
+
source: z.ZodEnum<{
|
|
1833
|
+
"file-picker": "file-picker";
|
|
1834
|
+
"camera-capture": "camera-capture";
|
|
1835
|
+
"media-recorder": "media-recorder";
|
|
1836
|
+
}>;
|
|
1837
|
+
}, z.core.$strict>>;
|
|
1812
1838
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1813
1839
|
notStarted: "notStarted";
|
|
1814
1840
|
activating: "activating";
|
|
@@ -1859,6 +1885,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
1859
1885
|
surface: z.ZodString;
|
|
1860
1886
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1861
1887
|
}, z.core.$strict>;
|
|
1888
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1889
|
+
kind: z.ZodEnum<{
|
|
1890
|
+
file: "file";
|
|
1891
|
+
image: "image";
|
|
1892
|
+
video: "video";
|
|
1893
|
+
audio: "audio";
|
|
1894
|
+
}>;
|
|
1895
|
+
source: z.ZodEnum<{
|
|
1896
|
+
"file-picker": "file-picker";
|
|
1897
|
+
"camera-capture": "camera-capture";
|
|
1898
|
+
"media-recorder": "media-recorder";
|
|
1899
|
+
}>;
|
|
1900
|
+
}, z.core.$strict>>;
|
|
1862
1901
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1863
1902
|
notStarted: "notStarted";
|
|
1864
1903
|
activating: "activating";
|
|
@@ -2220,6 +2259,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
2220
2259
|
surface: z.ZodString;
|
|
2221
2260
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2222
2261
|
}, z.core.$strict>;
|
|
2262
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2263
|
+
kind: z.ZodEnum<{
|
|
2264
|
+
file: "file";
|
|
2265
|
+
image: "image";
|
|
2266
|
+
video: "video";
|
|
2267
|
+
audio: "audio";
|
|
2268
|
+
}>;
|
|
2269
|
+
source: z.ZodEnum<{
|
|
2270
|
+
"file-picker": "file-picker";
|
|
2271
|
+
"camera-capture": "camera-capture";
|
|
2272
|
+
"media-recorder": "media-recorder";
|
|
2273
|
+
}>;
|
|
2274
|
+
}, z.core.$strict>>;
|
|
2223
2275
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2224
2276
|
notStarted: "notStarted";
|
|
2225
2277
|
activating: "activating";
|
|
@@ -2242,11 +2294,11 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
2242
2294
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
2243
2295
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
2244
2296
|
errorCategory: z.ZodEnum<{
|
|
2297
|
+
kind_mismatch: "kind_mismatch";
|
|
2245
2298
|
moderation: "moderation";
|
|
2246
2299
|
system: "system";
|
|
2247
2300
|
rate_limit: "rate_limit";
|
|
2248
2301
|
validation: "validation";
|
|
2249
|
-
kind_mismatch: "kind_mismatch";
|
|
2250
2302
|
storage: "storage";
|
|
2251
2303
|
}>;
|
|
2252
2304
|
errorMessage: z.ZodString;
|
|
@@ -2284,6 +2336,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
2284
2336
|
surface: z.ZodString;
|
|
2285
2337
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2286
2338
|
}, z.core.$strict>;
|
|
2339
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2340
|
+
kind: z.ZodEnum<{
|
|
2341
|
+
file: "file";
|
|
2342
|
+
image: "image";
|
|
2343
|
+
video: "video";
|
|
2344
|
+
audio: "audio";
|
|
2345
|
+
}>;
|
|
2346
|
+
source: z.ZodEnum<{
|
|
2347
|
+
"file-picker": "file-picker";
|
|
2348
|
+
"camera-capture": "camera-capture";
|
|
2349
|
+
"media-recorder": "media-recorder";
|
|
2350
|
+
}>;
|
|
2351
|
+
}, z.core.$strict>>;
|
|
2287
2352
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2288
2353
|
notStarted: "notStarted";
|
|
2289
2354
|
activating: "activating";
|
|
@@ -2650,6 +2715,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
2650
2715
|
surface: z.ZodString;
|
|
2651
2716
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2652
2717
|
}, z.core.$strict>;
|
|
2718
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2719
|
+
kind: z.ZodEnum<{
|
|
2720
|
+
file: "file";
|
|
2721
|
+
image: "image";
|
|
2722
|
+
video: "video";
|
|
2723
|
+
audio: "audio";
|
|
2724
|
+
}>;
|
|
2725
|
+
source: z.ZodEnum<{
|
|
2726
|
+
"file-picker": "file-picker";
|
|
2727
|
+
"camera-capture": "camera-capture";
|
|
2728
|
+
"media-recorder": "media-recorder";
|
|
2729
|
+
}>;
|
|
2730
|
+
}, z.core.$strict>>;
|
|
2653
2731
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2654
2732
|
notStarted: "notStarted";
|
|
2655
2733
|
activating: "activating";
|
|
@@ -3012,6 +3090,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
3012
3090
|
surface: z.ZodString;
|
|
3013
3091
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3014
3092
|
}, z.core.$strict>;
|
|
3093
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3094
|
+
kind: z.ZodEnum<{
|
|
3095
|
+
file: "file";
|
|
3096
|
+
image: "image";
|
|
3097
|
+
video: "video";
|
|
3098
|
+
audio: "audio";
|
|
3099
|
+
}>;
|
|
3100
|
+
source: z.ZodEnum<{
|
|
3101
|
+
"file-picker": "file-picker";
|
|
3102
|
+
"camera-capture": "camera-capture";
|
|
3103
|
+
"media-recorder": "media-recorder";
|
|
3104
|
+
}>;
|
|
3105
|
+
}, z.core.$strict>>;
|
|
3015
3106
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3016
3107
|
notStarted: "notStarted";
|
|
3017
3108
|
activating: "activating";
|
|
@@ -3034,11 +3125,11 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
3034
3125
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
3035
3126
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
3036
3127
|
errorCategory: z.ZodEnum<{
|
|
3128
|
+
kind_mismatch: "kind_mismatch";
|
|
3037
3129
|
moderation: "moderation";
|
|
3038
3130
|
system: "system";
|
|
3039
3131
|
rate_limit: "rate_limit";
|
|
3040
3132
|
validation: "validation";
|
|
3041
|
-
kind_mismatch: "kind_mismatch";
|
|
3042
3133
|
storage: "storage";
|
|
3043
3134
|
}>;
|
|
3044
3135
|
errorMessage: z.ZodString;
|
|
@@ -3077,6 +3168,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
3077
3168
|
surface: z.ZodString;
|
|
3078
3169
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3079
3170
|
}, z.core.$strict>;
|
|
3171
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3172
|
+
kind: z.ZodEnum<{
|
|
3173
|
+
file: "file";
|
|
3174
|
+
image: "image";
|
|
3175
|
+
video: "video";
|
|
3176
|
+
audio: "audio";
|
|
3177
|
+
}>;
|
|
3178
|
+
source: z.ZodEnum<{
|
|
3179
|
+
"file-picker": "file-picker";
|
|
3180
|
+
"camera-capture": "camera-capture";
|
|
3181
|
+
"media-recorder": "media-recorder";
|
|
3182
|
+
}>;
|
|
3183
|
+
}, z.core.$strict>>;
|
|
3080
3184
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3081
3185
|
notStarted: "notStarted";
|
|
3082
3186
|
activating: "activating";
|
|
@@ -3444,6 +3548,19 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
3444
3548
|
surface: z.ZodString;
|
|
3445
3549
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3446
3550
|
}, z.core.$strict>;
|
|
3551
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3552
|
+
kind: z.ZodEnum<{
|
|
3553
|
+
file: "file";
|
|
3554
|
+
image: "image";
|
|
3555
|
+
video: "video";
|
|
3556
|
+
audio: "audio";
|
|
3557
|
+
}>;
|
|
3558
|
+
source: z.ZodEnum<{
|
|
3559
|
+
"file-picker": "file-picker";
|
|
3560
|
+
"camera-capture": "camera-capture";
|
|
3561
|
+
"media-recorder": "media-recorder";
|
|
3562
|
+
}>;
|
|
3563
|
+
}, z.core.$strict>>;
|
|
3447
3564
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3448
3565
|
notStarted: "notStarted";
|
|
3449
3566
|
activating: "activating";
|
|
@@ -4193,6 +4310,7 @@ export declare const COLLECTION_SCHEMAS: {
|
|
|
4193
4310
|
scheduledScrubAt: z.ZodNumber;
|
|
4194
4311
|
graceDays: z.ZodNumber;
|
|
4195
4312
|
cancelledAt: z.ZodOptional<z.ZodNumber>;
|
|
4313
|
+
tokenRevocationNextAttemptAt: z.ZodOptional<z.ZodNumber>;
|
|
4196
4314
|
tokensRevokedAt: z.ZodOptional<z.ZodNumber>;
|
|
4197
4315
|
scrubStartedAt: z.ZodOptional<z.ZodNumber>;
|
|
4198
4316
|
parkedReason: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiM7B,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiM7B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6NkB,CAAC;AAElD,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,kBAAkB,CAAC;AAEvE;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;CAmBiC,CAAC;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAOvC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
2
|
export declare const PendingMediaErrorCategorySchema: z.ZodEnum<{
|
|
3
|
+
kind_mismatch: "kind_mismatch";
|
|
3
4
|
moderation: "moderation";
|
|
4
5
|
system: "system";
|
|
5
6
|
rate_limit: "rate_limit";
|
|
6
7
|
validation: "validation";
|
|
7
|
-
kind_mismatch: "kind_mismatch";
|
|
8
8
|
storage: "storage";
|
|
9
9
|
}>;
|
|
10
10
|
export declare const PendingMediaResultSchema: z.ZodObject<{
|
|
@@ -348,6 +348,19 @@ export declare const PendingMediaPendingSchema: z.ZodObject<{
|
|
|
348
348
|
surface: z.ZodString;
|
|
349
349
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
350
350
|
}, z.core.$strict>;
|
|
351
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
352
|
+
kind: z.ZodEnum<{
|
|
353
|
+
file: "file";
|
|
354
|
+
image: "image";
|
|
355
|
+
video: "video";
|
|
356
|
+
audio: "audio";
|
|
357
|
+
}>;
|
|
358
|
+
source: z.ZodEnum<{
|
|
359
|
+
"file-picker": "file-picker";
|
|
360
|
+
"camera-capture": "camera-capture";
|
|
361
|
+
"media-recorder": "media-recorder";
|
|
362
|
+
}>;
|
|
363
|
+
}, z.core.$strict>>;
|
|
351
364
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
352
365
|
notStarted: "notStarted";
|
|
353
366
|
activating: "activating";
|
|
@@ -399,6 +412,19 @@ export declare const PendingMediaProcessingSchema: z.ZodObject<{
|
|
|
399
412
|
surface: z.ZodString;
|
|
400
413
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
401
414
|
}, z.core.$strict>;
|
|
415
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
416
|
+
kind: z.ZodEnum<{
|
|
417
|
+
file: "file";
|
|
418
|
+
image: "image";
|
|
419
|
+
video: "video";
|
|
420
|
+
audio: "audio";
|
|
421
|
+
}>;
|
|
422
|
+
source: z.ZodEnum<{
|
|
423
|
+
"file-picker": "file-picker";
|
|
424
|
+
"camera-capture": "camera-capture";
|
|
425
|
+
"media-recorder": "media-recorder";
|
|
426
|
+
}>;
|
|
427
|
+
}, z.core.$strict>>;
|
|
402
428
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
403
429
|
notStarted: "notStarted";
|
|
404
430
|
activating: "activating";
|
|
@@ -761,6 +787,19 @@ export declare const PendingMediaCompletedSchema: z.ZodObject<{
|
|
|
761
787
|
surface: z.ZodString;
|
|
762
788
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
763
789
|
}, z.core.$strict>;
|
|
790
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
791
|
+
kind: z.ZodEnum<{
|
|
792
|
+
file: "file";
|
|
793
|
+
image: "image";
|
|
794
|
+
video: "video";
|
|
795
|
+
audio: "audio";
|
|
796
|
+
}>;
|
|
797
|
+
source: z.ZodEnum<{
|
|
798
|
+
"file-picker": "file-picker";
|
|
799
|
+
"camera-capture": "camera-capture";
|
|
800
|
+
"media-recorder": "media-recorder";
|
|
801
|
+
}>;
|
|
802
|
+
}, z.core.$strict>>;
|
|
764
803
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
765
804
|
notStarted: "notStarted";
|
|
766
805
|
activating: "activating";
|
|
@@ -784,11 +823,11 @@ export declare const PendingMediaFailedSchema: z.ZodObject<{
|
|
|
784
823
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
785
824
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
786
825
|
errorCategory: z.ZodEnum<{
|
|
826
|
+
kind_mismatch: "kind_mismatch";
|
|
787
827
|
moderation: "moderation";
|
|
788
828
|
system: "system";
|
|
789
829
|
rate_limit: "rate_limit";
|
|
790
830
|
validation: "validation";
|
|
791
|
-
kind_mismatch: "kind_mismatch";
|
|
792
831
|
storage: "storage";
|
|
793
832
|
}>;
|
|
794
833
|
errorMessage: z.ZodString;
|
|
@@ -826,6 +865,19 @@ export declare const PendingMediaFailedSchema: z.ZodObject<{
|
|
|
826
865
|
surface: z.ZodString;
|
|
827
866
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
828
867
|
}, z.core.$strict>;
|
|
868
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
869
|
+
kind: z.ZodEnum<{
|
|
870
|
+
file: "file";
|
|
871
|
+
image: "image";
|
|
872
|
+
video: "video";
|
|
873
|
+
audio: "audio";
|
|
874
|
+
}>;
|
|
875
|
+
source: z.ZodEnum<{
|
|
876
|
+
"file-picker": "file-picker";
|
|
877
|
+
"camera-capture": "camera-capture";
|
|
878
|
+
"media-recorder": "media-recorder";
|
|
879
|
+
}>;
|
|
880
|
+
}, z.core.$strict>>;
|
|
829
881
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
830
882
|
notStarted: "notStarted";
|
|
831
883
|
activating: "activating";
|
|
@@ -1193,6 +1245,19 @@ export declare const PendingMediaRejectedSchema: z.ZodObject<{
|
|
|
1193
1245
|
surface: z.ZodString;
|
|
1194
1246
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1195
1247
|
}, z.core.$strict>;
|
|
1248
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1249
|
+
kind: z.ZodEnum<{
|
|
1250
|
+
file: "file";
|
|
1251
|
+
image: "image";
|
|
1252
|
+
video: "video";
|
|
1253
|
+
audio: "audio";
|
|
1254
|
+
}>;
|
|
1255
|
+
source: z.ZodEnum<{
|
|
1256
|
+
"file-picker": "file-picker";
|
|
1257
|
+
"camera-capture": "camera-capture";
|
|
1258
|
+
"media-recorder": "media-recorder";
|
|
1259
|
+
}>;
|
|
1260
|
+
}, z.core.$strict>>;
|
|
1196
1261
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1197
1262
|
notStarted: "notStarted";
|
|
1198
1263
|
activating: "activating";
|
|
@@ -1243,6 +1308,19 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1243
1308
|
surface: z.ZodString;
|
|
1244
1309
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1245
1310
|
}, z.core.$strict>;
|
|
1311
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1312
|
+
kind: z.ZodEnum<{
|
|
1313
|
+
file: "file";
|
|
1314
|
+
image: "image";
|
|
1315
|
+
video: "video";
|
|
1316
|
+
audio: "audio";
|
|
1317
|
+
}>;
|
|
1318
|
+
source: z.ZodEnum<{
|
|
1319
|
+
"file-picker": "file-picker";
|
|
1320
|
+
"camera-capture": "camera-capture";
|
|
1321
|
+
"media-recorder": "media-recorder";
|
|
1322
|
+
}>;
|
|
1323
|
+
}, z.core.$strict>>;
|
|
1246
1324
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1247
1325
|
notStarted: "notStarted";
|
|
1248
1326
|
activating: "activating";
|
|
@@ -1293,6 +1371,19 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1293
1371
|
surface: z.ZodString;
|
|
1294
1372
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1295
1373
|
}, z.core.$strict>;
|
|
1374
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1375
|
+
kind: z.ZodEnum<{
|
|
1376
|
+
file: "file";
|
|
1377
|
+
image: "image";
|
|
1378
|
+
video: "video";
|
|
1379
|
+
audio: "audio";
|
|
1380
|
+
}>;
|
|
1381
|
+
source: z.ZodEnum<{
|
|
1382
|
+
"file-picker": "file-picker";
|
|
1383
|
+
"camera-capture": "camera-capture";
|
|
1384
|
+
"media-recorder": "media-recorder";
|
|
1385
|
+
}>;
|
|
1386
|
+
}, z.core.$strict>>;
|
|
1296
1387
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1297
1388
|
notStarted: "notStarted";
|
|
1298
1389
|
activating: "activating";
|
|
@@ -1654,6 +1745,19 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1654
1745
|
surface: z.ZodString;
|
|
1655
1746
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1656
1747
|
}, z.core.$strict>;
|
|
1748
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1749
|
+
kind: z.ZodEnum<{
|
|
1750
|
+
file: "file";
|
|
1751
|
+
image: "image";
|
|
1752
|
+
video: "video";
|
|
1753
|
+
audio: "audio";
|
|
1754
|
+
}>;
|
|
1755
|
+
source: z.ZodEnum<{
|
|
1756
|
+
"file-picker": "file-picker";
|
|
1757
|
+
"camera-capture": "camera-capture";
|
|
1758
|
+
"media-recorder": "media-recorder";
|
|
1759
|
+
}>;
|
|
1760
|
+
}, z.core.$strict>>;
|
|
1657
1761
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1658
1762
|
notStarted: "notStarted";
|
|
1659
1763
|
activating: "activating";
|
|
@@ -1676,11 +1780,11 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1676
1780
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
1677
1781
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
1678
1782
|
errorCategory: z.ZodEnum<{
|
|
1783
|
+
kind_mismatch: "kind_mismatch";
|
|
1679
1784
|
moderation: "moderation";
|
|
1680
1785
|
system: "system";
|
|
1681
1786
|
rate_limit: "rate_limit";
|
|
1682
1787
|
validation: "validation";
|
|
1683
|
-
kind_mismatch: "kind_mismatch";
|
|
1684
1788
|
storage: "storage";
|
|
1685
1789
|
}>;
|
|
1686
1790
|
errorMessage: z.ZodString;
|
|
@@ -1718,6 +1822,19 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
1718
1822
|
surface: z.ZodString;
|
|
1719
1823
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
1720
1824
|
}, z.core.$strict>;
|
|
1825
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
1826
|
+
kind: z.ZodEnum<{
|
|
1827
|
+
file: "file";
|
|
1828
|
+
image: "image";
|
|
1829
|
+
video: "video";
|
|
1830
|
+
audio: "audio";
|
|
1831
|
+
}>;
|
|
1832
|
+
source: z.ZodEnum<{
|
|
1833
|
+
"file-picker": "file-picker";
|
|
1834
|
+
"camera-capture": "camera-capture";
|
|
1835
|
+
"media-recorder": "media-recorder";
|
|
1836
|
+
}>;
|
|
1837
|
+
}, z.core.$strict>>;
|
|
1721
1838
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
1722
1839
|
notStarted: "notStarted";
|
|
1723
1840
|
activating: "activating";
|
|
@@ -2084,6 +2201,19 @@ export declare const PendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
2084
2201
|
surface: z.ZodString;
|
|
2085
2202
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2086
2203
|
}, z.core.$strict>;
|
|
2204
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2205
|
+
kind: z.ZodEnum<{
|
|
2206
|
+
file: "file";
|
|
2207
|
+
image: "image";
|
|
2208
|
+
video: "video";
|
|
2209
|
+
audio: "audio";
|
|
2210
|
+
}>;
|
|
2211
|
+
source: z.ZodEnum<{
|
|
2212
|
+
"file-picker": "file-picker";
|
|
2213
|
+
"camera-capture": "camera-capture";
|
|
2214
|
+
"media-recorder": "media-recorder";
|
|
2215
|
+
}>;
|
|
2216
|
+
}, z.core.$strict>>;
|
|
2087
2217
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2088
2218
|
notStarted: "notStarted";
|
|
2089
2219
|
activating: "activating";
|
|
@@ -2446,6 +2576,19 @@ export declare const ArchivedPendingMediaCompletedSchema: z.ZodObject<{
|
|
|
2446
2576
|
surface: z.ZodString;
|
|
2447
2577
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2448
2578
|
}, z.core.$strict>;
|
|
2579
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2580
|
+
kind: z.ZodEnum<{
|
|
2581
|
+
file: "file";
|
|
2582
|
+
image: "image";
|
|
2583
|
+
video: "video";
|
|
2584
|
+
audio: "audio";
|
|
2585
|
+
}>;
|
|
2586
|
+
source: z.ZodEnum<{
|
|
2587
|
+
"file-picker": "file-picker";
|
|
2588
|
+
"camera-capture": "camera-capture";
|
|
2589
|
+
"media-recorder": "media-recorder";
|
|
2590
|
+
}>;
|
|
2591
|
+
}, z.core.$strict>>;
|
|
2449
2592
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2450
2593
|
notStarted: "notStarted";
|
|
2451
2594
|
activating: "activating";
|
|
@@ -2469,11 +2612,11 @@ export declare const ArchivedPendingMediaFailedSchema: z.ZodObject<{
|
|
|
2469
2612
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
2470
2613
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
2471
2614
|
errorCategory: z.ZodEnum<{
|
|
2615
|
+
kind_mismatch: "kind_mismatch";
|
|
2472
2616
|
moderation: "moderation";
|
|
2473
2617
|
system: "system";
|
|
2474
2618
|
rate_limit: "rate_limit";
|
|
2475
2619
|
validation: "validation";
|
|
2476
|
-
kind_mismatch: "kind_mismatch";
|
|
2477
2620
|
storage: "storage";
|
|
2478
2621
|
}>;
|
|
2479
2622
|
errorMessage: z.ZodString;
|
|
@@ -2512,6 +2655,19 @@ export declare const ArchivedPendingMediaFailedSchema: z.ZodObject<{
|
|
|
2512
2655
|
surface: z.ZodString;
|
|
2513
2656
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2514
2657
|
}, z.core.$strict>;
|
|
2658
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
2659
|
+
kind: z.ZodEnum<{
|
|
2660
|
+
file: "file";
|
|
2661
|
+
image: "image";
|
|
2662
|
+
video: "video";
|
|
2663
|
+
audio: "audio";
|
|
2664
|
+
}>;
|
|
2665
|
+
source: z.ZodEnum<{
|
|
2666
|
+
"file-picker": "file-picker";
|
|
2667
|
+
"camera-capture": "camera-capture";
|
|
2668
|
+
"media-recorder": "media-recorder";
|
|
2669
|
+
}>;
|
|
2670
|
+
}, z.core.$strict>>;
|
|
2515
2671
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2516
2672
|
notStarted: "notStarted";
|
|
2517
2673
|
activating: "activating";
|
|
@@ -2880,6 +3036,19 @@ export declare const ArchivedPendingMediaRejectedSchema: z.ZodObject<{
|
|
|
2880
3036
|
surface: z.ZodString;
|
|
2881
3037
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2882
3038
|
}, z.core.$strict>;
|
|
3039
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3040
|
+
kind: z.ZodEnum<{
|
|
3041
|
+
file: "file";
|
|
3042
|
+
image: "image";
|
|
3043
|
+
video: "video";
|
|
3044
|
+
audio: "audio";
|
|
3045
|
+
}>;
|
|
3046
|
+
source: z.ZodEnum<{
|
|
3047
|
+
"file-picker": "file-picker";
|
|
3048
|
+
"camera-capture": "camera-capture";
|
|
3049
|
+
"media-recorder": "media-recorder";
|
|
3050
|
+
}>;
|
|
3051
|
+
}, z.core.$strict>>;
|
|
2883
3052
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
2884
3053
|
notStarted: "notStarted";
|
|
2885
3054
|
activating: "activating";
|
|
@@ -3242,6 +3411,19 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
3242
3411
|
surface: z.ZodString;
|
|
3243
3412
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3244
3413
|
}, z.core.$strict>;
|
|
3414
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3415
|
+
kind: z.ZodEnum<{
|
|
3416
|
+
file: "file";
|
|
3417
|
+
image: "image";
|
|
3418
|
+
video: "video";
|
|
3419
|
+
audio: "audio";
|
|
3420
|
+
}>;
|
|
3421
|
+
source: z.ZodEnum<{
|
|
3422
|
+
"file-picker": "file-picker";
|
|
3423
|
+
"camera-capture": "camera-capture";
|
|
3424
|
+
"media-recorder": "media-recorder";
|
|
3425
|
+
}>;
|
|
3426
|
+
}, z.core.$strict>>;
|
|
3245
3427
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3246
3428
|
notStarted: "notStarted";
|
|
3247
3429
|
activating: "activating";
|
|
@@ -3264,11 +3446,11 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
3264
3446
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
3265
3447
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
3266
3448
|
errorCategory: z.ZodEnum<{
|
|
3449
|
+
kind_mismatch: "kind_mismatch";
|
|
3267
3450
|
moderation: "moderation";
|
|
3268
3451
|
system: "system";
|
|
3269
3452
|
rate_limit: "rate_limit";
|
|
3270
3453
|
validation: "validation";
|
|
3271
|
-
kind_mismatch: "kind_mismatch";
|
|
3272
3454
|
storage: "storage";
|
|
3273
3455
|
}>;
|
|
3274
3456
|
errorMessage: z.ZodString;
|
|
@@ -3307,6 +3489,19 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
3307
3489
|
surface: z.ZodString;
|
|
3308
3490
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3309
3491
|
}, z.core.$strict>;
|
|
3492
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3493
|
+
kind: z.ZodEnum<{
|
|
3494
|
+
file: "file";
|
|
3495
|
+
image: "image";
|
|
3496
|
+
video: "video";
|
|
3497
|
+
audio: "audio";
|
|
3498
|
+
}>;
|
|
3499
|
+
source: z.ZodEnum<{
|
|
3500
|
+
"file-picker": "file-picker";
|
|
3501
|
+
"camera-capture": "camera-capture";
|
|
3502
|
+
"media-recorder": "media-recorder";
|
|
3503
|
+
}>;
|
|
3504
|
+
}, z.core.$strict>>;
|
|
3310
3505
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3311
3506
|
notStarted: "notStarted";
|
|
3312
3507
|
activating: "activating";
|
|
@@ -3674,6 +3869,19 @@ export declare const ArchivedPendingMediaSchema: z.ZodDiscriminatedUnion<[z.ZodO
|
|
|
3674
3869
|
surface: z.ZodString;
|
|
3675
3870
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
3676
3871
|
}, z.core.$strict>;
|
|
3872
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
3873
|
+
kind: z.ZodEnum<{
|
|
3874
|
+
file: "file";
|
|
3875
|
+
image: "image";
|
|
3876
|
+
video: "video";
|
|
3877
|
+
audio: "audio";
|
|
3878
|
+
}>;
|
|
3879
|
+
source: z.ZodEnum<{
|
|
3880
|
+
"file-picker": "file-picker";
|
|
3881
|
+
"camera-capture": "camera-capture";
|
|
3882
|
+
"media-recorder": "media-recorder";
|
|
3883
|
+
}>;
|
|
3884
|
+
}, z.core.$strict>>;
|
|
3677
3885
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
3678
3886
|
notStarted: "notStarted";
|
|
3679
3887
|
activating: "activating";
|
|
@@ -4041,6 +4249,19 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
|
|
|
4041
4249
|
surface: z.ZodString;
|
|
4042
4250
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
4043
4251
|
}, z.core.$strict>;
|
|
4252
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
4253
|
+
kind: z.ZodEnum<{
|
|
4254
|
+
file: "file";
|
|
4255
|
+
image: "image";
|
|
4256
|
+
video: "video";
|
|
4257
|
+
audio: "audio";
|
|
4258
|
+
}>;
|
|
4259
|
+
source: z.ZodEnum<{
|
|
4260
|
+
"file-picker": "file-picker";
|
|
4261
|
+
"camera-capture": "camera-capture";
|
|
4262
|
+
"media-recorder": "media-recorder";
|
|
4263
|
+
}>;
|
|
4264
|
+
}, z.core.$strict>>;
|
|
4044
4265
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
4045
4266
|
notStarted: "notStarted";
|
|
4046
4267
|
activating: "activating";
|
|
@@ -4063,11 +4284,11 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
|
|
|
4063
4284
|
uploadTraySeenAt: z.ZodOptional<z.ZodNumber>;
|
|
4064
4285
|
uploadTraySeenBy: z.ZodOptional<z.ZodString>;
|
|
4065
4286
|
errorCategory: z.ZodEnum<{
|
|
4287
|
+
kind_mismatch: "kind_mismatch";
|
|
4066
4288
|
moderation: "moderation";
|
|
4067
4289
|
system: "system";
|
|
4068
4290
|
rate_limit: "rate_limit";
|
|
4069
4291
|
validation: "validation";
|
|
4070
|
-
kind_mismatch: "kind_mismatch";
|
|
4071
4292
|
storage: "storage";
|
|
4072
4293
|
}>;
|
|
4073
4294
|
errorMessage: z.ZodString;
|
|
@@ -4106,6 +4327,19 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
|
|
|
4106
4327
|
surface: z.ZodString;
|
|
4107
4328
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
4108
4329
|
}, z.core.$strict>;
|
|
4330
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
4331
|
+
kind: z.ZodEnum<{
|
|
4332
|
+
file: "file";
|
|
4333
|
+
image: "image";
|
|
4334
|
+
video: "video";
|
|
4335
|
+
audio: "audio";
|
|
4336
|
+
}>;
|
|
4337
|
+
source: z.ZodEnum<{
|
|
4338
|
+
"file-picker": "file-picker";
|
|
4339
|
+
"camera-capture": "camera-capture";
|
|
4340
|
+
"media-recorder": "media-recorder";
|
|
4341
|
+
}>;
|
|
4342
|
+
}, z.core.$strict>>;
|
|
4109
4343
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
4110
4344
|
notStarted: "notStarted";
|
|
4111
4345
|
activating: "activating";
|
|
@@ -4473,6 +4707,19 @@ export declare const ArchivedPendingMediaDocSchema: z.ZodUnion<readonly [z.ZodDi
|
|
|
4473
4707
|
surface: z.ZodString;
|
|
4474
4708
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
4475
4709
|
}, z.core.$strict>;
|
|
4710
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
4711
|
+
kind: z.ZodEnum<{
|
|
4712
|
+
file: "file";
|
|
4713
|
+
image: "image";
|
|
4714
|
+
video: "video";
|
|
4715
|
+
audio: "audio";
|
|
4716
|
+
}>;
|
|
4717
|
+
source: z.ZodEnum<{
|
|
4718
|
+
"file-picker": "file-picker";
|
|
4719
|
+
"camera-capture": "camera-capture";
|
|
4720
|
+
"media-recorder": "media-recorder";
|
|
4721
|
+
}>;
|
|
4722
|
+
}, z.core.$strict>>;
|
|
4476
4723
|
publicationState: z.ZodOptional<z.ZodEnum<{
|
|
4477
4724
|
notStarted: "notStarted";
|
|
4478
4725
|
activating: "activating";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/media/pending-media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAS7B,eAAO,MAAM,+BAA+B;;;;;;;EAA0C,CAAC;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB
|
|
1
|
+
{"version":3,"file":"pending-media.d.ts","sourceRoot":"","sources":["../../src/media/pending-media.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAS7B,eAAO,MAAM,+BAA+B;;;;;;;EAA0C,CAAC;AACvF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAoC,CAAC;AAC3E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAuC,CAAC;AACjF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAsC,CAAC;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAmC,CAAC;AACzE,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAqC,CAAC;AAC7E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAA6B,CAAC;AAE7D,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA8C,CAAC;AAC/F,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA2C,CAAC;AACzF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAA6C,CAAC;AAC7F,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAAqC,CAAC;AAC7E,eAAO,MAAM,qCAAqC;;;;kBAAgD,CAAC;AACnG,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAAwC,CAAC;AAEnF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAE9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAE9E"}
|
|
@@ -30,6 +30,19 @@ export declare const StartUploadRequestSchema: z.ZodObject<{
|
|
|
30
30
|
surface: z.ZodString;
|
|
31
31
|
targetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
32
32
|
}, z.core.$strict>;
|
|
33
|
+
clientMediaClaim: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
kind: z.ZodEnum<{
|
|
35
|
+
file: "file";
|
|
36
|
+
image: "image";
|
|
37
|
+
video: "video";
|
|
38
|
+
audio: "audio";
|
|
39
|
+
}>;
|
|
40
|
+
source: z.ZodEnum<{
|
|
41
|
+
"file-picker": "file-picker";
|
|
42
|
+
"camera-capture": "camera-capture";
|
|
43
|
+
"media-recorder": "media-recorder";
|
|
44
|
+
}>;
|
|
45
|
+
}, z.core.$strict>>;
|
|
33
46
|
}, z.core.$strict>;
|
|
34
47
|
export declare const StartUploadResponseSchema: z.ZodObject<{
|
|
35
48
|
pendingMediaId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-upload.d.ts","sourceRoot":"","sources":["../../src/media/start-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"start-upload.d.ts","sourceRoot":"","sources":["../../src/media/start-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgB1B,CAAC;AAEZ,eAAO,MAAM,yBAAyB;;kBAI3B,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { ClientContextSchema } from "@ttt-productions/media-schemas";
|
|
2
|
+
import { ClientContextSchema, ClientMediaClaimSchema } from "@ttt-productions/media-schemas";
|
|
3
3
|
import { FileOriginSchema } from "./file-origin.js";
|
|
4
4
|
export const StartUploadRequestSchema = z
|
|
5
5
|
.object({
|
|
@@ -9,6 +9,13 @@ export const StartUploadRequestSchema = z
|
|
|
9
9
|
targetInfo: z.unknown().optional(),
|
|
10
10
|
textContent: z.string().optional(),
|
|
11
11
|
clientContext: ClientContextSchema,
|
|
12
|
+
// What the user actually DID (canonical-upload-content-classification):
|
|
13
|
+
// strong for recorder/camera actions, advisory for the picker. OPTIONAL for
|
|
14
|
+
// rolling-client compatibility; the server treats absence as "inspect-only"
|
|
15
|
+
// (bounded claim_missing reason) and NEVER falls back to MIME authority.
|
|
16
|
+
// Untrusted context — the server byte inspection is the one classification
|
|
17
|
+
// authority either way.
|
|
18
|
+
clientMediaClaim: ClientMediaClaimSchema.optional(),
|
|
12
19
|
})
|
|
13
20
|
.strict();
|
|
14
21
|
export const StartUploadResponseSchema = z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-upload.js","sourceRoot":"","sources":["../../src/media/start-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"start-upload.js","sourceRoot":"","sources":["../../src/media/start-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,mBAAmB;IAClC,wEAAwE;IACxE,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,2EAA2E;IAC3E,wBAAwB;IACxB,gBAAgB,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CACpD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAClC,CAAC;KACD,MAAM,EAAE,CAAC","sourcesContent":["import { z } from \"zod\";\nimport { ClientContextSchema, ClientMediaClaimSchema } from \"@ttt-productions/media-schemas\";\nimport { FileOriginSchema } from \"./file-origin.js\";\n\nexport const StartUploadRequestSchema = z\n .object({\n storagePath: z.string().min(1),\n originalFileName: z.string().min(1),\n fileOrigin: FileOriginSchema,\n targetInfo: z.unknown().optional(),\n textContent: z.string().optional(),\n clientContext: ClientContextSchema,\n // What the user actually DID (canonical-upload-content-classification):\n // strong for recorder/camera actions, advisory for the picker. OPTIONAL for\n // rolling-client compatibility; the server treats absence as \"inspect-only\"\n // (bounded claim_missing reason) and NEVER falls back to MIME authority.\n // Untrusted context — the server byte inspection is the one classification\n // authority either way.\n clientMediaClaim: ClientMediaClaimSchema.optional(),\n })\n .strict();\n\nexport const StartUploadResponseSchema = z\n .object({\n pendingMediaId: z.string().min(1),\n })\n .strict();\n\nexport type StartUploadRequest = z.infer<typeof StartUploadRequestSchema>;\nexport type StartUploadResponse = z.infer<typeof StartUploadResponseSchema>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttt-media-specs.d.ts","sourceRoot":"","sources":["../../src/media/ttt-media-specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ttt-media-specs.d.ts","sourceRoot":"","sources":["../../src/media/ttt-media-specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AA6EtE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,CAspB/D,CAAC"}
|
|
@@ -36,11 +36,29 @@ const ENTRY_VIDEO_WIDTH = byMode(360, 720);
|
|
|
36
36
|
const ENTRY_VIDEO_HEIGHT = byMode(640, 1280);
|
|
37
37
|
// --- Client recording caps ---
|
|
38
38
|
const RECORD_DURATION_SEC = SHORT_VIDEO_DURATION_SEC;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
// --- Enabled-format policy (canonical-upload-content-classification launch
|
|
40
|
+
// policy, DJ 2026-07-31): the picker advertises EXACTLY these and the server
|
|
41
|
+
// accepts only an INSPECTED formatId in the origin's list. Kind for the shared
|
|
42
|
+
// A/V containers (isobmff/webm/ogg) comes from stream inspection, never the
|
|
43
|
+
// entry. DELIBERATELY ABSENT at launch: svg (scriptable — needs a
|
|
44
|
+
// sanitize/rasterize design), heic/heif (no proven decode+PhotoDNA path in the
|
|
45
|
+
// deployed runtime), avif (present-capability unproven — enable only with a
|
|
46
|
+
// deployed-runtime decode+scan proof). Enabling any of them later is a policy
|
|
47
|
+
// edit HERE plus that format's processing/safety proof — never a MIME tweak.
|
|
48
|
+
const IMAGE_FORMATS = ['jpeg', 'png', 'gif', 'webp', 'bmp', 'tiff'];
|
|
49
|
+
const AUDIO_FORMATS = ['mp3', 'wav', 'flac', 'isobmff', 'webm', 'ogg'];
|
|
50
|
+
const VIDEO_FORMATS = ['isobmff', 'webm'];
|
|
51
|
+
const ACCEPT_IMAGE_ONLY = { kinds: ['image'], formats: [...IMAGE_FORMATS] };
|
|
52
|
+
const ACCEPT_VIDEO_ONLY = { kinds: ['video'], formats: [...VIDEO_FORMATS] };
|
|
53
|
+
const ACCEPT_AUDIO_ONLY = { kinds: ['audio'], formats: [...AUDIO_FORMATS] };
|
|
54
|
+
const ACCEPT_MEDIA_ALL = {
|
|
55
|
+
kinds: ['image', 'video', 'audio'],
|
|
56
|
+
formats: [...new Set([...IMAGE_FORMATS, ...VIDEO_FORMATS, ...AUDIO_FORMATS])],
|
|
57
|
+
};
|
|
58
|
+
const ACCEPT_IMAGE_VIDEO = {
|
|
59
|
+
kinds: ['image', 'video'],
|
|
60
|
+
formats: [...new Set([...IMAGE_FORMATS, ...VIDEO_FORMATS])],
|
|
61
|
+
};
|
|
44
62
|
// Variant `key` values below are USAGES of the ONE canonical variant-key set
|
|
45
63
|
// (`MEDIA_VARIANT_KEYS`, doc-schemas/media-assets.ts). The generic MediaOriginSpec
|
|
46
64
|
// types them as open strings, so the CI validation lives in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttt-media-specs.js","sourceRoot":"","sources":["../../src/media/ttt-media-specs.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileOrigin } from \"./file-origin.js\";\nimport type { MediaOriginSpec } from \"@ttt-productions/media-schemas\";\nimport { byMode } from \"../constants/app-mode.js\";\n\n// Mode-aware media-origin registry. Two distinct caps per origin (see\n// ttt-prod docs/design/charter-season-and-app-mode.md):\n// - `maxBytes` — the RAW-INPUT cap at the upload gate. Deliberately generous:\n// modern phones record high-bitrate by default and the user can't control\n// that; the pipeline absorbs it. This is an abuse bound, not the quality cap.\n// - processing `maxOutputBytes` / `maxDurationSec` — the PROCESSED-OUTPUT\n// spec the transcoder enforces. This is what actually gets stored/served.\n// Charter mode = lower durations/output quality; full mode raises them.\n// storage.rules `uploadMaxBytes` mirrors the raw caps — keep in sync (S6 test).\n\nconst MB = 1024 * 1024;\n\n// --- Raw-input caps (upload gate) ---\nconst IMAGE_RAW_BYTES = 25 * MB; // 48MP phone HEIC/JPEG fits comfortably\nconst VIDEO_RAW_BYTES = byMode(500 * MB, 1024 * MB);\nconst AUDIO_RAW_BYTES = byMode(100 * MB, 250 * MB);\nconst CONVERSATION_FILE_RAW_BYTES = byMode(250 * MB, 500 * MB);\n// [H-01/R10] NCII take-it-down evidence: 100MB. The scan trigger downloads the whole object into a\n// ~512MiB Function before scanning, so an allowed file must fit in memory. No mode variation (the\n// evidence is preserveOriginal — never transcoded). Mirrored by storage.rules `uploadMaxBytes` (caps\n// sync test) + NciiPolicyConfigV1.maxEvidenceFileBytes (104857600).\nconst NCII_EVIDENCE_RAW_BYTES = 100 * MB;\n\n// --- Output duration caps (seconds) ---\nconst SHORT_VIDEO_DURATION_SEC = byMode(60, 180);\nconst ADMIN_PROMPT_DURATION_SEC = byMode(120, 600);\nconst TELEVISION_DURATION_SEC = byMode(300, 1800);\nconst LONG_AUDIO_DURATION_SEC = byMode(600, 900);\nconst CONVERSATION_FILE_AUDIO_DURATION_SEC = byMode(60, 180);\n\n// --- Output size caps (post-transcode) ---\nconst SHORT_VIDEO_OUTPUT_BYTES = byMode(60 * MB, 300 * MB);\nconst TELEVISION_OUTPUT_BYTES = byMode(200 * MB, 1024 * MB);\nconst AUDIO_OUTPUT_BYTES = byMode(20 * MB, 60 * MB);\n\n// --- Output resolutions (full mode unlocks 1080p on the big surfaces) ---\nconst WIDE_VIDEO_WIDTH = byMode(1280, 1920);\nconst WIDE_VIDEO_HEIGHT = byMode(720, 1080);\nconst ENTRY_VIDEO_WIDTH = byMode(360, 720);\nconst ENTRY_VIDEO_HEIGHT = byMode(640, 1280);\n\n// --- Client recording caps ---\nconst RECORD_DURATION_SEC = SHORT_VIDEO_DURATION_SEC;\n\nconst ACCEPT_IMAGE_ONLY = { kinds: ['image' as const] };\nconst ACCEPT_VIDEO_ONLY = { kinds: ['video' as const] };\nconst ACCEPT_AUDIO_ONLY = { kinds: ['audio' as const] };\nconst ACCEPT_MEDIA_ALL = { kinds: ['image' as const, 'video' as const, 'audio' as const] };\nconst ACCEPT_IMAGE_VIDEO = { kinds: ['image' as const, 'video' as const] };\n\n// Variant `key` values below are USAGES of the ONE canonical variant-key set\n// (`MEDIA_VARIANT_KEYS`, doc-schemas/media-assets.ts). The generic MediaOriginSpec\n// types them as open strings, so the CI validation lives in\n// media-origin-lineage.test.ts: every declared key must parse against\n// MediaVariantKeySchema (and every schema member must be declared somewhere).\nexport const TTT_MEDIA_SPECS: Record<FileOrigin, MediaOriginSpec> = {\n\n 'profile-picture': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 200,\n outputHeight: 200,\n shape: 'round',\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 200, height: 200, gravity: 'center' }, format: 'jpeg', quality: 85 },\n { key: 'medium', crop: { width: 48, height: 48, gravity: 'center' }, format: 'jpeg', quality: 85 },\n { key: 'small', crop: { width: 32, height: 32, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'craft-skill-media': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'hallLibrary-cover-square': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 600,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 600, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n // Realm cover art — same square recipe as the Work square cover. One 'full'\n // variant; draft realms may lack a cover, release requires one.\n 'realm-cover': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 600,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 600, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'hallLibrary-cover-poster': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 2 / 3,\n outputWidth: 400,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '2:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'hallLibrary-cover-cinematic': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 16 / 9,\n outputWidth: 1280,\n outputHeight: 720,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '16:9',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 1280, height: 720, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'squareStreetz': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 16 / 9,\n outputWidth: 1280,\n outputHeight: 720,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '16:9',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 1280, maxHeight: 720, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'audition-prompt': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n requiredAspectRatio: 16 / 9,\n videoOrientation: 'horizontal' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'admin-audition-prompt': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: ADMIN_PROMPT_DURATION_SEC,\n requiredAspectRatio: 16 / 9,\n videoOrientation: 'horizontal' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: ADMIN_PROMPT_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: ADMIN_PROMPT_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'audition-entry': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n requiredAspectRatio: 9 / 16,\n videoOrientation: 'vertical' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n cameraFacingMode: 'user' as const,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: ENTRY_VIDEO_WIDTH,\n requiredHeight: ENTRY_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'commission-posting': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'commission-proposal': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'chapter-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'tune-track-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'television-episode-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'tune-track-audio': {\n kind: 'audio',\n accept: ACCEPT_AUDIO_ONLY,\n maxBytes: AUDIO_RAW_BYTES,\n maxDurationSec: LONG_AUDIO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: {\n maxDurationSec: LONG_AUDIO_DURATION_SEC,\n },\n },\n },\n },\n\n 'television-episode-video': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: TELEVISION_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: TELEVISION_DURATION_SEC,\n maxOutputBytes: TELEVISION_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n // Conversation Files (guild-invite + admin-support conversations). Same\n // image/video/audio processing recipe the removed chat-attachment origin used —\n // the replacement changed the OWNER of the published asset, not the pipeline.\n 'conversation-file': {\n kind: 'generic',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: CONVERSATION_FILE_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 800, maxHeight: 800, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: CONVERSATION_FILE_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'work-asset': {\n kind: 'generic',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 1280, maxHeight: 1280, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: {\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n },\n },\n },\n },\n\n // NCII / TAKE IT DOWN evidence: a take-it-down requester (App Check, no login)\n // uploads the actual image/video as evidence. Preserved BYTE-EXACT — NO\n // `processing` block, so the pipeline never transcodes/resizes it (legal\n // integrity + the hash). Never served — the evidence processor scans it, lands\n // the original in the admin-only nciiEvidence bucket, and stops.\n 'ncii-evidence': {\n kind: 'generic',\n accept: ACCEPT_IMAGE_VIDEO,\n // [H-01/R10] 100MB (was VIDEO_RAW_BYTES=500MB) — see NCII_EVIDENCE_RAW_BYTES.\n maxBytes: NCII_EVIDENCE_RAW_BYTES,\n // Byte-exact: scanned, but NEVER transcoded/resized (legal evidence integrity).\n // The explicit flag marks this no-`processing` origin as intentional, not forgotten.\n preserveOriginal: true,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n },\n\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ttt-media-specs.js","sourceRoot":"","sources":["../../src/media/ttt-media-specs.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FileOrigin } from \"./file-origin.js\";\nimport type { MediaOriginSpec } from \"@ttt-productions/media-schemas\";\nimport { byMode } from \"../constants/app-mode.js\";\n\n// Mode-aware media-origin registry. Two distinct caps per origin (see\n// ttt-prod docs/design/charter-season-and-app-mode.md):\n// - `maxBytes` — the RAW-INPUT cap at the upload gate. Deliberately generous:\n// modern phones record high-bitrate by default and the user can't control\n// that; the pipeline absorbs it. This is an abuse bound, not the quality cap.\n// - processing `maxOutputBytes` / `maxDurationSec` — the PROCESSED-OUTPUT\n// spec the transcoder enforces. This is what actually gets stored/served.\n// Charter mode = lower durations/output quality; full mode raises them.\n// storage.rules `uploadMaxBytes` mirrors the raw caps — keep in sync (S6 test).\n\nconst MB = 1024 * 1024;\n\n// --- Raw-input caps (upload gate) ---\nconst IMAGE_RAW_BYTES = 25 * MB; // 48MP phone HEIC/JPEG fits comfortably\nconst VIDEO_RAW_BYTES = byMode(500 * MB, 1024 * MB);\nconst AUDIO_RAW_BYTES = byMode(100 * MB, 250 * MB);\nconst CONVERSATION_FILE_RAW_BYTES = byMode(250 * MB, 500 * MB);\n// [H-01/R10] NCII take-it-down evidence: 100MB. The scan trigger downloads the whole object into a\n// ~512MiB Function before scanning, so an allowed file must fit in memory. No mode variation (the\n// evidence is preserveOriginal — never transcoded). Mirrored by storage.rules `uploadMaxBytes` (caps\n// sync test) + NciiPolicyConfigV1.maxEvidenceFileBytes (104857600).\nconst NCII_EVIDENCE_RAW_BYTES = 100 * MB;\n\n// --- Output duration caps (seconds) ---\nconst SHORT_VIDEO_DURATION_SEC = byMode(60, 180);\nconst ADMIN_PROMPT_DURATION_SEC = byMode(120, 600);\nconst TELEVISION_DURATION_SEC = byMode(300, 1800);\nconst LONG_AUDIO_DURATION_SEC = byMode(600, 900);\nconst CONVERSATION_FILE_AUDIO_DURATION_SEC = byMode(60, 180);\n\n// --- Output size caps (post-transcode) ---\nconst SHORT_VIDEO_OUTPUT_BYTES = byMode(60 * MB, 300 * MB);\nconst TELEVISION_OUTPUT_BYTES = byMode(200 * MB, 1024 * MB);\nconst AUDIO_OUTPUT_BYTES = byMode(20 * MB, 60 * MB);\n\n// --- Output resolutions (full mode unlocks 1080p on the big surfaces) ---\nconst WIDE_VIDEO_WIDTH = byMode(1280, 1920);\nconst WIDE_VIDEO_HEIGHT = byMode(720, 1080);\nconst ENTRY_VIDEO_WIDTH = byMode(360, 720);\nconst ENTRY_VIDEO_HEIGHT = byMode(640, 1280);\n\n// --- Client recording caps ---\nconst RECORD_DURATION_SEC = SHORT_VIDEO_DURATION_SEC;\n\n// --- Enabled-format policy (canonical-upload-content-classification launch\n// policy, DJ 2026-07-31): the picker advertises EXACTLY these and the server\n// accepts only an INSPECTED formatId in the origin's list. Kind for the shared\n// A/V containers (isobmff/webm/ogg) comes from stream inspection, never the\n// entry. DELIBERATELY ABSENT at launch: svg (scriptable — needs a\n// sanitize/rasterize design), heic/heif (no proven decode+PhotoDNA path in the\n// deployed runtime), avif (present-capability unproven — enable only with a\n// deployed-runtime decode+scan proof). Enabling any of them later is a policy\n// edit HERE plus that format's processing/safety proof — never a MIME tweak.\nconst IMAGE_FORMATS = ['jpeg', 'png', 'gif', 'webp', 'bmp', 'tiff'] as const;\nconst AUDIO_FORMATS = ['mp3', 'wav', 'flac', 'isobmff', 'webm', 'ogg'] as const;\nconst VIDEO_FORMATS = ['isobmff', 'webm'] as const;\n\nconst ACCEPT_IMAGE_ONLY = { kinds: ['image' as const], formats: [...IMAGE_FORMATS] };\nconst ACCEPT_VIDEO_ONLY = { kinds: ['video' as const], formats: [...VIDEO_FORMATS] };\nconst ACCEPT_AUDIO_ONLY = { kinds: ['audio' as const], formats: [...AUDIO_FORMATS] };\nconst ACCEPT_MEDIA_ALL = {\n kinds: ['image' as const, 'video' as const, 'audio' as const],\n formats: [...new Set([...IMAGE_FORMATS, ...VIDEO_FORMATS, ...AUDIO_FORMATS])],\n};\nconst ACCEPT_IMAGE_VIDEO = {\n kinds: ['image' as const, 'video' as const],\n formats: [...new Set([...IMAGE_FORMATS, ...VIDEO_FORMATS])],\n};\n\n// Variant `key` values below are USAGES of the ONE canonical variant-key set\n// (`MEDIA_VARIANT_KEYS`, doc-schemas/media-assets.ts). The generic MediaOriginSpec\n// types them as open strings, so the CI validation lives in\n// media-origin-lineage.test.ts: every declared key must parse against\n// MediaVariantKeySchema (and every schema member must be declared somewhere).\nexport const TTT_MEDIA_SPECS: Record<FileOrigin, MediaOriginSpec> = {\n\n 'profile-picture': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 200,\n outputHeight: 200,\n shape: 'round',\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 200, height: 200, gravity: 'center' }, format: 'jpeg', quality: 85 },\n { key: 'medium', crop: { width: 48, height: 48, gravity: 'center' }, format: 'jpeg', quality: 85 },\n { key: 'small', crop: { width: 32, height: 32, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'craft-skill-media': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'hallLibrary-cover-square': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 600,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 600, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n // Realm cover art — same square recipe as the Work square cover. One 'full'\n // variant; draft realms may lack a cover, release requires one.\n 'realm-cover': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 600,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 600, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'hallLibrary-cover-poster': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 2 / 3,\n outputWidth: 400,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '2:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'hallLibrary-cover-cinematic': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 16 / 9,\n outputWidth: 1280,\n outputHeight: 720,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '16:9',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 1280, height: 720, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'squareStreetz': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 16 / 9,\n outputWidth: 1280,\n outputHeight: 720,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '16:9',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 1280, maxHeight: 720, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'audition-prompt': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n requiredAspectRatio: 16 / 9,\n videoOrientation: 'horizontal' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'admin-audition-prompt': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: ADMIN_PROMPT_DURATION_SEC,\n requiredAspectRatio: 16 / 9,\n videoOrientation: 'horizontal' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: ADMIN_PROMPT_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: ADMIN_PROMPT_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'audition-entry': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n requiredAspectRatio: 9 / 16,\n videoOrientation: 'vertical' as const,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n cameraFacingMode: 'user' as const,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: ENTRY_VIDEO_WIDTH,\n requiredHeight: ENTRY_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n 'commission-posting': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'commission-proposal': {\n kind: 'image',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n imageCrop: {\n aspectRatio: 4 / 3,\n outputWidth: 800,\n outputHeight: 600,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '4:3',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', crop: { width: 800, height: 600, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: LONG_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'chapter-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'tune-track-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'television-episode-photo': {\n kind: 'image',\n accept: ACCEPT_IMAGE_ONLY,\n maxBytes: IMAGE_RAW_BYTES,\n imageCrop: {\n aspectRatio: 1,\n outputWidth: 400,\n outputHeight: 400,\n format: 'jpeg',\n quality: 85,\n aspectRatioDisplay: '1:1',\n },\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'full', crop: { width: 400, height: 400, gravity: 'center' }, format: 'jpeg', quality: 85 },\n ],\n },\n },\n },\n },\n\n 'tune-track-audio': {\n kind: 'audio',\n accept: ACCEPT_AUDIO_ONLY,\n maxBytes: AUDIO_RAW_BYTES,\n maxDurationSec: LONG_AUDIO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: {\n maxDurationSec: LONG_AUDIO_DURATION_SEC,\n },\n },\n },\n },\n\n 'television-episode-video': {\n kind: 'video',\n accept: ACCEPT_VIDEO_ONLY,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: TELEVISION_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: true,\n allowRecordAudio: false,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: TELEVISION_DURATION_SEC,\n maxOutputBytes: TELEVISION_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n },\n },\n\n // Conversation Files (guild-invite + admin-support conversations). Same\n // image/video/audio processing recipe the removed chat-attachment origin used —\n // the replacement changed the OWNER of the published asset, not the pipeline.\n 'conversation-file': {\n kind: 'generic',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: CONVERSATION_FILE_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 800, maxHeight: 800, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: 800,\n requiredHeight: 600,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: { maxDurationSec: CONVERSATION_FILE_AUDIO_DURATION_SEC },\n },\n },\n },\n\n 'work-asset': {\n kind: 'generic',\n accept: ACCEPT_MEDIA_ALL,\n maxBytes: VIDEO_RAW_BYTES,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n client: {\n allowPick: true,\n allowCapturePhoto: true,\n allowRecordVideo: true,\n allowRecordAudio: true,\n maxRecordDurationSec: RECORD_DURATION_SEC,\n },\n processing: {\n image: {\n kind: 'image',\n image: {\n variants: [\n { key: 'main', maxWidth: 1280, maxHeight: 1280, format: 'jpeg', quality: 85 },\n ],\n },\n },\n video: {\n kind: 'video',\n requiredWidth: WIDE_VIDEO_WIDTH,\n requiredHeight: WIDE_VIDEO_HEIGHT,\n allowAutoFormat: true,\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n maxOutputBytes: SHORT_VIDEO_OUTPUT_BYTES,\n video: { scaleMode: 'fit', preset: 'veryfast', crf: 28 },\n },\n audio: {\n kind: 'audio',\n maxOutputBytes: AUDIO_OUTPUT_BYTES,\n audio: {\n maxDurationSec: SHORT_VIDEO_DURATION_SEC,\n },\n },\n },\n },\n\n // NCII / TAKE IT DOWN evidence: a take-it-down requester (App Check, no login)\n // uploads the actual image/video as evidence. Preserved BYTE-EXACT — NO\n // `processing` block, so the pipeline never transcodes/resizes it (legal\n // integrity + the hash). Never served — the evidence processor scans it, lands\n // the original in the admin-only nciiEvidence bucket, and stops.\n 'ncii-evidence': {\n kind: 'generic',\n accept: ACCEPT_IMAGE_VIDEO,\n // [H-01/R10] 100MB (was VIDEO_RAW_BYTES=500MB) — see NCII_EVIDENCE_RAW_BYTES.\n maxBytes: NCII_EVIDENCE_RAW_BYTES,\n // Byte-exact: scanned, but NEVER transcoded/resized (legal evidence integrity).\n // The explicit flag marks this no-`processing` origin as intentional, not forgotten.\n preserveOriginal: true,\n client: {\n allowPick: true,\n allowCapturePhoto: false,\n allowRecordVideo: false,\n allowRecordAudio: false,\n },\n },\n\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttt-productions/ttt-core",
|
|
3
|
-
"version": "0.79.
|
|
3
|
+
"version": "0.79.15",
|
|
4
4
|
"description": "Core types, Firestore path constants, and shared constants for TTT Productions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"dependencies": {
|
|
116
116
|
"@ttt-productions/audit-core": "^0.7.1",
|
|
117
117
|
"@ttt-productions/edge-protocol-core": "^0.1.5",
|
|
118
|
-
"@ttt-productions/media-schemas": "^0.14.
|
|
118
|
+
"@ttt-productions/media-schemas": "^0.14.5",
|
|
119
119
|
"@ttt-productions/notification-core": "^0.15.5",
|
|
120
120
|
"@ttt-productions/report-core": "^0.16.8",
|
|
121
121
|
"zod": "^4.4.3"
|