@ttt-productions/ttt-core 0.79.6 → 0.79.8

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.
Files changed (73) hide show
  1. package/dist/constants/admin-labels.d.ts +9 -0
  2. package/dist/constants/admin-labels.d.ts.map +1 -1
  3. package/dist/constants/admin-labels.js +24 -0
  4. package/dist/constants/admin-labels.js.map +1 -1
  5. package/dist/constants/options.d.ts +21 -0
  6. package/dist/constants/options.d.ts.map +1 -1
  7. package/dist/constants/options.js +23 -0
  8. package/dist/constants/options.js.map +1 -1
  9. package/dist/doc-schemas/chat-sync.d.ts +2 -2
  10. package/dist/doc-schemas/commissions.d.ts +3 -3
  11. package/dist/doc-schemas/media-activation-jobs.d.ts +12 -12
  12. package/dist/doc-schemas/media-assets.d.ts +40 -40
  13. package/dist/doc-schemas/messaging.d.ts +0 -6
  14. package/dist/doc-schemas/messaging.d.ts.map +1 -1
  15. package/dist/doc-schemas/messaging.js +12 -9
  16. package/dist/doc-schemas/messaging.js.map +1 -1
  17. package/dist/doc-schemas/moderation.d.ts +8 -8
  18. package/dist/doc-schemas/ncii/allegations.d.ts +6 -15
  19. package/dist/doc-schemas/ncii/allegations.d.ts.map +1 -1
  20. package/dist/doc-schemas/ncii/cases.d.ts +3 -7
  21. package/dist/doc-schemas/ncii/cases.d.ts.map +1 -1
  22. package/dist/doc-schemas/ncii/holds.d.ts +0 -4
  23. package/dist/doc-schemas/ncii/holds.d.ts.map +1 -1
  24. package/dist/doc-schemas/ncii/removal.d.ts +3 -7
  25. package/dist/doc-schemas/ncii/removal.d.ts.map +1 -1
  26. package/dist/doc-schemas/ncii/requests.d.ts +10 -15
  27. package/dist/doc-schemas/ncii/requests.d.ts.map +1 -1
  28. package/dist/doc-schemas/notification-ledger.d.ts +1 -1
  29. package/dist/doc-schemas/operational.d.ts +1 -1
  30. package/dist/doc-schemas/payments.d.ts +1 -1
  31. package/dist/doc-schemas/registry.d.ts +155 -200
  32. package/dist/doc-schemas/registry.d.ts.map +1 -1
  33. package/dist/doc-schemas/safety/case.d.ts +0 -4
  34. package/dist/doc-schemas/safety/case.d.ts.map +1 -1
  35. package/dist/doc-schemas/safety/evidence.d.ts +10 -10
  36. package/dist/doc-schemas/safety/foundation.d.ts +31 -38
  37. package/dist/doc-schemas/safety/foundation.d.ts.map +1 -1
  38. package/dist/doc-schemas/safety/foundation.js +6 -17
  39. package/dist/doc-schemas/safety/foundation.js.map +1 -1
  40. package/dist/doc-schemas/safety/holds.d.ts +8 -9
  41. package/dist/doc-schemas/safety/holds.d.ts.map +1 -1
  42. package/dist/doc-schemas/safety/report.d.ts +30 -43
  43. package/dist/doc-schemas/safety/report.d.ts.map +1 -1
  44. package/dist/doc-schemas/work-project.d.ts +1 -1
  45. package/dist/media/domain-events-admin.d.ts +4 -4
  46. package/dist/media/domain-events.d.ts +4 -4
  47. package/dist/media/file-origin.d.ts +4 -4
  48. package/dist/media/pending-media.d.ts +120 -120
  49. package/dist/media/start-upload.d.ts +4 -4
  50. package/dist/media/upload-tray-display.d.ts.map +1 -1
  51. package/dist/media/upload-tray-display.js +4 -1
  52. package/dist/media/upload-tray-display.js.map +1 -1
  53. package/dist/report/report-config-values.d.ts.map +1 -1
  54. package/dist/report/report-config-values.js +0 -2
  55. package/dist/report/report-config-values.js.map +1 -1
  56. package/dist/safety/ncii-intake-derivations.d.ts.map +1 -1
  57. package/dist/safety/ncii-intake-derivations.js +0 -4
  58. package/dist/safety/ncii-intake-derivations.js.map +1 -1
  59. package/dist/schemas/admin.d.ts +62 -21
  60. package/dist/schemas/admin.d.ts.map +1 -1
  61. package/dist/schemas/admin.js +72 -8
  62. package/dist/schemas/admin.js.map +1 -1
  63. package/dist/schemas/chat.d.ts +0 -5
  64. package/dist/schemas/chat.d.ts.map +1 -1
  65. package/dist/schemas/chat.js +3 -2
  66. package/dist/schemas/chat.js.map +1 -1
  67. package/dist/schemas/commissions.d.ts +1 -1
  68. package/dist/schemas/ncii.d.ts +18 -21
  69. package/dist/schemas/ncii.d.ts.map +1 -1
  70. package/dist/schemas/notification.d.ts +6 -7
  71. package/dist/schemas/notification.d.ts.map +1 -1
  72. package/dist/schemas/utility.d.ts +1 -1
  73. package/package.json +1 -2
@@ -1,4 +1,5 @@
1
1
  import type { UserAccountStatus } from '../doc-schemas/user.js';
2
+ import type { FeedbackType } from './business-admin.js';
2
3
  import type { ReportDisposition } from '../doc-schemas/safety/foundation.js';
3
4
  import type { BroadcastAudienceSelector } from '../schemas/notification.js';
4
5
  import type { DeadLetterCollection } from '../schemas/admin.js';
@@ -6,6 +7,12 @@ import type { DeadLetterCollection } from '../schemas/admin.js';
6
7
  export declare const USER_ACCOUNT_STATUS_LABELS: Record<UserAccountStatus, string>;
7
8
  /** Broadcast audience selector labels (announcement composer). */
8
9
  export declare const BROADCAST_AUDIENCE_KIND_LABELS: Record<BroadcastAudienceSelector['kind'], string>;
10
+ /** Human labels for the canonical feedback types — the admin feedback-suggestions views and
11
+ * the user-facing feedback-submission surface render these instead of restating copy. Keyed
12
+ * by FeedbackType, so a new FEEDBACK_TYPES member fails the build until its label exists.
13
+ * UI copy uses the SHORT settled terms (Trade → "Trades", Craft → "Craft Tags", Genre →
14
+ * "<Kind> Genres"), never the compound code identifiers (ARCH-107). */
15
+ export declare const FEEDBACK_TYPE_LABELS: Record<FeedbackType, string>;
9
16
  /** Human labels for the dead-letter replay ledgers (Ops Repairs dead-letter table). */
10
17
  export declare const DEAD_LETTER_COLLECTION_LABELS: Record<DeadLetterCollection, string>;
11
18
  /** Operator-settable report dispositions with their console copy. 'undetermined' is the
@@ -29,4 +36,6 @@ export interface UserFacingReasonOption {
29
36
  export declare const USER_FACING_REASON_OPTIONS: readonly UserFacingReasonOption[];
30
37
  /** The user-facing label for a reason code (undefined when the code is unknown/absent). */
31
38
  export declare function userFacingReasonLabel(code: string | undefined): string | undefined;
39
+ export declare const WORK_PROJECT_TYPE_RULE_GROUP_TITLE = "Work Type Rules";
40
+ export declare const HALL_WING_TYPE_RULE_GROUP_TITLE = "Hall Wing Rules";
32
41
  //# sourceMappingURL=admin-labels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-labels.d.ts","sourceRoot":"","sources":["../../src/constants/admin-labels.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAIxE,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,CAM5F,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAc9E,CAAC;AAEF;4EAC4E;AAC5E,eAAO,MAAM,0BAA0B,EAAE,SAAS;IAChD,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,EAiBA,CAAC;AAEF,gGAAgG;AAChG,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;0BAI0B;AAC1B,eAAO,MAAM,0BAA0B,EAAE,SAAS,sBAAsB,EAW9D,CAAC;AAEX,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAElF"}
1
+ {"version":3,"file":"admin-labels.d.ts","sourceRoot":"","sources":["../../src/constants/admin-labels.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAIxE,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,CAM5F,CAAC;AAEF;;;;uEAIuE;AACvE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAM7D,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAc9E,CAAC;AAEF;4EAC4E;AAC5E,eAAO,MAAM,0BAA0B,EAAE,SAAS;IAChD,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,EAiBA,CAAC;AAEF,gGAAgG;AAChG,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;0BAI0B;AAC1B,eAAO,MAAM,0BAA0B,EAAE,SAAS,sBAAsB,EAW9D,CAAC;AAEX,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAElF;AASD,eAAO,MAAM,kCAAkC,oBAAoB,CAAC;AACpE,eAAO,MAAM,+BAA+B,oBAAoB,CAAC"}
@@ -4,6 +4,10 @@
4
4
  // the former component-local maps in ttt-prod (admin-user-management-view,
5
5
  // admin-announcements-view, guided-resolution-flow). Any client (web, phone,
6
6
  // TV, admin app) renders the same labels by importing these.
7
+ //
8
+ // A few entries here are copy for ADMIN-MANAGED content that a PUBLIC surface also
9
+ // renders (the rules-page group titles at the bottom of this file). The organizing
10
+ // principle is one declaration, not one consumer.
7
11
  // ============================================================================
8
12
  /** Moderation status labels (user-management view, status badges). */
9
13
  export const USER_ACCOUNT_STATUS_LABELS = {
@@ -19,6 +23,18 @@ export const BROADCAST_AUDIENCE_KIND_LABELS = {
19
23
  workMembers: "A Work's guild members",
20
24
  realmMembers: "A Realm's members",
21
25
  };
26
+ /** Human labels for the canonical feedback types — the admin feedback-suggestions views and
27
+ * the user-facing feedback-submission surface render these instead of restating copy. Keyed
28
+ * by FeedbackType, so a new FEEDBACK_TYPES member fails the build until its label exists.
29
+ * UI copy uses the SHORT settled terms (Trade → "Trades", Craft → "Craft Tags", Genre →
30
+ * "<Kind> Genres"), never the compound code identifiers (ARCH-107). */
31
+ export const FEEDBACK_TYPE_LABELS = {
32
+ tradeProfessionSuggestions: 'Trades',
33
+ craftSkillTagSuggestions: 'Craft Tags',
34
+ talesWorkGenreSuggestions: 'Tales Genres',
35
+ tunesWorkGenreSuggestions: 'Tunes Genres',
36
+ televisionWorkGenreSuggestions: 'Television Genres',
37
+ };
22
38
  /** Human labels for the dead-letter replay ledgers (Ops Repairs dead-letter table). */
23
39
  export const DEAD_LETTER_COLLECTION_LABELS = {
24
40
  chatSyncEvents: 'Chat sync event',
@@ -75,4 +91,12 @@ export const USER_FACING_REASON_OPTIONS = [
75
91
  export function userFacingReasonLabel(code) {
76
92
  return USER_FACING_REASON_OPTIONS.find((o) => o.code === code)?.label;
77
93
  }
94
+ // --- Rules-surface group titles ---
95
+ // The two rule-GROUP headings for the platform rules content (`Rule.group`
96
+ // 'workProjectType' / 'hallWingType' — see schemas/admin.ts). BOTH the admin rules editor
97
+ // and the public rules page render these, so they are declared once here instead of being
98
+ // restated as literals on each surface (ENG-002). Copy uses the short settled terms Work /
99
+ // Hall / Wing (ARCH-107).
100
+ export const WORK_PROJECT_TYPE_RULE_GROUP_TITLE = 'Work Type Rules';
101
+ export const HALL_WING_TYPE_RULE_GROUP_TITLE = 'Hall Wing Rules';
78
102
  //# sourceMappingURL=admin-labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-labels.js","sourceRoot":"","sources":["../../src/constants/admin-labels.ts"],"names":[],"mappings":"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","sourcesContent":["// ============================================================================\n// ADMIN-SURFACE DISPLAY LABELS — the ONE home for business display copy keyed\n// by canonical ttt-core enums (ARCH-102, extended 2026-07-13). Consolidated from\n// the former component-local maps in ttt-prod (admin-user-management-view,\n// admin-announcements-view, guided-resolution-flow). Any client (web, phone,\n// TV, admin app) renders the same labels by importing these.\n// ============================================================================\n\nimport type { UserAccountStatus } from '../doc-schemas/user.js';\nimport type { ReportDisposition } from '../doc-schemas/safety/foundation.js';\nimport type { BroadcastAudienceSelector } from '../schemas/notification.js';\nimport type { DeadLetterCollection } from '../schemas/admin.js';\n\n/** Moderation status labels (user-management view, status badges). */\nexport const USER_ACCOUNT_STATUS_LABELS: Record<UserAccountStatus, string> = {\n active: 'Active',\n suspended: 'Suspended',\n banned: 'Banned',\n};\n\n/** Broadcast audience selector labels (announcement composer). */\nexport const BROADCAST_AUDIENCE_KIND_LABELS: Record<BroadcastAudienceSelector['kind'], string> = {\n allActiveUsers: 'All active users',\n allArtisans: 'All artisan creators',\n explicitUids: 'Specific users (paste uids)',\n workMembers: \"A Work's guild members\",\n realmMembers: \"A Realm's members\",\n};\n\n/** Human labels for the dead-letter replay ledgers (Ops Repairs dead-letter table). */\nexport const DEAD_LETTER_COLLECTION_LABELS: Record<DeadLetterCollection, string> = {\n chatSyncEvents: 'Chat sync event',\n chatAdminActionCommands: 'Chat moderation command',\n notificationDeliveries: 'Notification delivery',\n chatMessageOutbox: 'Chat message publish',\n squareAnnouncementJobs: 'Square announcement',\n chatSyncFanoutJobs: 'Chat access fanout',\n mediaAssets: 'Media authority sync',\n quarantineSagaJobs: 'Quarantine saga',\n nciiRemovalJobs: 'NCII removal',\n safetyEvidenceJobs: 'Safety evidence job',\n accountActionCommands: 'Account safety action',\n activeReportGroups: 'Report edge sync',\n hallSubItemEdgeSync: 'Hall sub-item edge sync',\n};\n\n/** Operator-settable report dispositions with their console copy. 'undetermined' is the\n * initial state, never a settable target, so it carries no option entry. */\nexport const REPORT_DISPOSITION_OPTIONS: readonly {\n value: Exclude<ReportDisposition, 'undetermined'>;\n label: string;\n description: string;\n}[] = [\n {\n value: 'reportRequired',\n label: 'Report required (NCMEC)',\n description:\n 'Apparent CSAM — a report is legally required. Establishes actual knowledge + arms the clock.',\n },\n {\n value: 'notRequired',\n label: 'No report required',\n description: 'No reporting obligation ever arose. Disallowed once there is a validated match.',\n },\n {\n value: 'correctedNoApparentViolation',\n label: 'False positive — correct it',\n description: 'There was a triggering signal but on review it is a false positive.',\n },\n];\n\n/** One user-facing reason option (shown to the affected user for any user-affecting action). */\nexport interface UserFacingReasonOption {\n code: string;\n label: string;\n description: string;\n}\n\n/** User-facing reason picklist for the guided case-resolution flow — the affected user sees the\n * label for any user-affecting action. Canonical home (ARCH-102): the codes ARE this list's own\n * enumeration, so every client (web, phone, TV, admin app) renders the same options + labels by\n * importing from here. Final user-/legal-facing wording is subject to lawyer review; these are\n * functional defaults. */\nexport const USER_FACING_REASON_OPTIONS: readonly UserFacingReasonOption[] = [\n { code: 'harassment', label: 'Harassment or bullying', description: 'Targeted abuse, threats, or sustained harassment of a person.' },\n { code: 'hate', label: 'Hate speech', description: 'Attacks on people based on a protected characteristic.' },\n { code: 'adult-content', label: 'Explicit / adult content', description: 'Sexual or graphic content not allowed on the platform.' },\n { code: 'violence', label: 'Violence or threats', description: 'Threats of violence, or content glorifying or inciting it.' },\n { code: 'spam', label: 'Spam or scam', description: 'Unsolicited bulk content, deceptive links, or fraud.' },\n { code: 'impersonation', label: 'Impersonation', description: 'Pretending to be another person, brand, or entity.' },\n { code: 'ip', label: 'Intellectual property', description: 'Use of someone else’s work without the right to do so.' },\n { code: 'nonconsensual', label: 'Nonconsensual intimate imagery', description: 'Intimate or sexual imagery shared without the subject’s consent.' },\n { code: 'safety', label: 'Safety violation', description: 'A serious safety violation handled under our safety policies.' },\n { code: 'other', label: 'Other (explain)', description: 'A policy violation not covered above — describe it in the detail box.' },\n] as const;\n\n/** The user-facing label for a reason code (undefined when the code is unknown/absent). */\nexport function userFacingReasonLabel(code: string | undefined): string | undefined {\n return USER_FACING_REASON_OPTIONS.find((o) => o.code === code)?.label;\n}\n"]}
1
+ {"version":3,"file":"admin-labels.js","sourceRoot":"","sources":["../../src/constants/admin-labels.ts"],"names":[],"mappings":"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","sourcesContent":["// ============================================================================\n// ADMIN-SURFACE DISPLAY LABELS — the ONE home for business display copy keyed\n// by canonical ttt-core enums (ARCH-102, extended 2026-07-13). Consolidated from\n// the former component-local maps in ttt-prod (admin-user-management-view,\n// admin-announcements-view, guided-resolution-flow). Any client (web, phone,\n// TV, admin app) renders the same labels by importing these.\n//\n// A few entries here are copy for ADMIN-MANAGED content that a PUBLIC surface also\n// renders (the rules-page group titles at the bottom of this file). The organizing\n// principle is one declaration, not one consumer.\n// ============================================================================\n\nimport type { UserAccountStatus } from '../doc-schemas/user.js';\nimport type { FeedbackType } from './business-admin.js';\nimport type { ReportDisposition } from '../doc-schemas/safety/foundation.js';\nimport type { BroadcastAudienceSelector } from '../schemas/notification.js';\nimport type { DeadLetterCollection } from '../schemas/admin.js';\n\n/** Moderation status labels (user-management view, status badges). */\nexport const USER_ACCOUNT_STATUS_LABELS: Record<UserAccountStatus, string> = {\n active: 'Active',\n suspended: 'Suspended',\n banned: 'Banned',\n};\n\n/** Broadcast audience selector labels (announcement composer). */\nexport const BROADCAST_AUDIENCE_KIND_LABELS: Record<BroadcastAudienceSelector['kind'], string> = {\n allActiveUsers: 'All active users',\n allArtisans: 'All artisan creators',\n explicitUids: 'Specific users (paste uids)',\n workMembers: \"A Work's guild members\",\n realmMembers: \"A Realm's members\",\n};\n\n/** Human labels for the canonical feedback types — the admin feedback-suggestions views and\n * the user-facing feedback-submission surface render these instead of restating copy. Keyed\n * by FeedbackType, so a new FEEDBACK_TYPES member fails the build until its label exists.\n * UI copy uses the SHORT settled terms (Trade → \"Trades\", Craft → \"Craft Tags\", Genre →\n * \"<Kind> Genres\"), never the compound code identifiers (ARCH-107). */\nexport const FEEDBACK_TYPE_LABELS: Record<FeedbackType, string> = {\n tradeProfessionSuggestions: 'Trades',\n craftSkillTagSuggestions: 'Craft Tags',\n talesWorkGenreSuggestions: 'Tales Genres',\n tunesWorkGenreSuggestions: 'Tunes Genres',\n televisionWorkGenreSuggestions: 'Television Genres',\n};\n\n/** Human labels for the dead-letter replay ledgers (Ops Repairs dead-letter table). */\nexport const DEAD_LETTER_COLLECTION_LABELS: Record<DeadLetterCollection, string> = {\n chatSyncEvents: 'Chat sync event',\n chatAdminActionCommands: 'Chat moderation command',\n notificationDeliveries: 'Notification delivery',\n chatMessageOutbox: 'Chat message publish',\n squareAnnouncementJobs: 'Square announcement',\n chatSyncFanoutJobs: 'Chat access fanout',\n mediaAssets: 'Media authority sync',\n quarantineSagaJobs: 'Quarantine saga',\n nciiRemovalJobs: 'NCII removal',\n safetyEvidenceJobs: 'Safety evidence job',\n accountActionCommands: 'Account safety action',\n activeReportGroups: 'Report edge sync',\n hallSubItemEdgeSync: 'Hall sub-item edge sync',\n};\n\n/** Operator-settable report dispositions with their console copy. 'undetermined' is the\n * initial state, never a settable target, so it carries no option entry. */\nexport const REPORT_DISPOSITION_OPTIONS: readonly {\n value: Exclude<ReportDisposition, 'undetermined'>;\n label: string;\n description: string;\n}[] = [\n {\n value: 'reportRequired',\n label: 'Report required (NCMEC)',\n description:\n 'Apparent CSAM — a report is legally required. Establishes actual knowledge + arms the clock.',\n },\n {\n value: 'notRequired',\n label: 'No report required',\n description: 'No reporting obligation ever arose. Disallowed once there is a validated match.',\n },\n {\n value: 'correctedNoApparentViolation',\n label: 'False positive — correct it',\n description: 'There was a triggering signal but on review it is a false positive.',\n },\n];\n\n/** One user-facing reason option (shown to the affected user for any user-affecting action). */\nexport interface UserFacingReasonOption {\n code: string;\n label: string;\n description: string;\n}\n\n/** User-facing reason picklist for the guided case-resolution flow — the affected user sees the\n * label for any user-affecting action. Canonical home (ARCH-102): the codes ARE this list's own\n * enumeration, so every client (web, phone, TV, admin app) renders the same options + labels by\n * importing from here. Final user-/legal-facing wording is subject to lawyer review; these are\n * functional defaults. */\nexport const USER_FACING_REASON_OPTIONS: readonly UserFacingReasonOption[] = [\n { code: 'harassment', label: 'Harassment or bullying', description: 'Targeted abuse, threats, or sustained harassment of a person.' },\n { code: 'hate', label: 'Hate speech', description: 'Attacks on people based on a protected characteristic.' },\n { code: 'adult-content', label: 'Explicit / adult content', description: 'Sexual or graphic content not allowed on the platform.' },\n { code: 'violence', label: 'Violence or threats', description: 'Threats of violence, or content glorifying or inciting it.' },\n { code: 'spam', label: 'Spam or scam', description: 'Unsolicited bulk content, deceptive links, or fraud.' },\n { code: 'impersonation', label: 'Impersonation', description: 'Pretending to be another person, brand, or entity.' },\n { code: 'ip', label: 'Intellectual property', description: 'Use of someone else’s work without the right to do so.' },\n { code: 'nonconsensual', label: 'Nonconsensual intimate imagery', description: 'Intimate or sexual imagery shared without the subject’s consent.' },\n { code: 'safety', label: 'Safety violation', description: 'A serious safety violation handled under our safety policies.' },\n { code: 'other', label: 'Other (explain)', description: 'A policy violation not covered above — describe it in the detail box.' },\n] as const;\n\n/** The user-facing label for a reason code (undefined when the code is unknown/absent). */\nexport function userFacingReasonLabel(code: string | undefined): string | undefined {\n return USER_FACING_REASON_OPTIONS.find((o) => o.code === code)?.label;\n}\n\n// --- Rules-surface group titles ---\n// The two rule-GROUP headings for the platform rules content (`Rule.group`\n// 'workProjectType' / 'hallWingType' — see schemas/admin.ts). BOTH the admin rules editor\n// and the public rules page render these, so they are declared once here instead of being\n// restated as literals on each surface (ENG-002). Copy uses the short settled terms Work /\n// Hall / Wing (ARCH-107).\n\nexport const WORK_PROJECT_TYPE_RULE_GROUP_TITLE = 'Work Type Rules';\nexport const HALL_WING_TYPE_RULE_GROUP_TITLE = 'Hall Wing Rules';\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { HallWingType, WorkProjectType } from '../types/content.js';
2
+ import type { AuditionType } from '../types/commissions.js';
2
3
  /**
3
4
  * Trade professions (20) — role-shaped labels used for guild roles, commission
4
5
  * requests, and file-folder permission keys. Display strings are stored/validated
@@ -47,6 +48,19 @@ export declare const WORK_PROJECT_TYPES: Record<WorkProjectType, {
47
48
  label: string;
48
49
  description: string;
49
50
  }>;
51
+ /** Audition type display info. Used on the audition board's type chips/filters and on
52
+ * audition headers. Record-keyed by the canonical AuditionType union, so adding an
53
+ * audition type fails the build here until its label + description exist. */
54
+ export declare const AUDITION_TYPES: Record<AuditionType, {
55
+ label: string;
56
+ description: string;
57
+ }>;
58
+ /** The audition board's "every type" filter sentinel — the ONE declaration (it was
59
+ * previously hand-rolled app-locally). It doubles as the chip's own display label. */
60
+ export declare const AUDITION_TYPE_FILTER_ALL = "All";
61
+ /** Audition-board type-filter state: one canonical audition type, or the ALL sentinel.
62
+ * Filter state derives this instead of being typed `string`. */
63
+ export type AuditionTypeFilter = AuditionType | typeof AUDITION_TYPE_FILTER_ALL;
50
64
  /** Sort options shown on the audition feeds, keyed by feed type. */
51
65
  export declare const AUDITION_SORT_OPTIONS: {
52
66
  readonly default: {
@@ -118,6 +132,13 @@ export declare const AUDITION_SORT_OPTIONS: {
118
132
  };
119
133
  };
120
134
  };
135
+ /** Every sort key any audition feed offers, DERIVED from AUDITION_SORT_OPTIONS above — a new
136
+ * sort option widens the union automatically, so sort state is never typed `string`. */
137
+ export type AuditionSortKey = {
138
+ [F in keyof typeof AUDITION_SORT_OPTIONS]: keyof (typeof AUDITION_SORT_OPTIONS)[F];
139
+ }[keyof typeof AUDITION_SORT_OPTIONS];
140
+ /** The audition board's initial sort selection. Every feed type offers this key. */
141
+ export declare const DEFAULT_AUDITION_SORT: AuditionSortKey;
121
142
  /** Sort options shown on the hallLibrary feed. */
122
143
  export declare const HALL_LIBRARY_SORT_OPTIONS: Record<string, {
123
144
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAQzE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,4TAyB3B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,2bA8B1B,CAAC;AAEX,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;gFACgF;AAChF,eAAO,MAAM,uBAAuB,EAA0C,CAC5E,iBAAiB,EACjB,GAAG,iBAAiB,EAAE,CACvB,CAAC;AAEF;oFACoF;AACpF,eAAO,MAAM,sBAAsB,EAAyC,CAC1E,eAAe,EACf,GAAG,eAAe,EAAE,CACrB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAyB3F,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;CAiD/B,CAAC;AAIX,mEAAmE;AACnE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAaxF,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAa9F,CAAC;AAIF,oEAAoE;AACpE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBxB,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAK5D,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQ5D;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,4TAyB3B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,2bA8B1B,CAAC;AAEX,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;gFACgF;AAChF,eAAO,MAAM,uBAAuB,EAA0C,CAC5E,iBAAiB,EACjB,GAAG,iBAAiB,EAAE,CACvB,CAAC;AAEF;oFACoF;AACpF,eAAO,MAAM,sBAAsB,EAAyC,CAC1E,eAAe,EACf,GAAG,eAAe,EAAE,CACrB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAyB3F,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;CAiD/B,CAAC;AAIX,mEAAmE;AACnE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAaxF,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAa9F,CAAC;AAIF;;6EAE6E;AAC7E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAavF,CAAC;AAEF;sFACsF;AACtF,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;gEACgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,OAAO,wBAAwB,CAAC;AAIhF,oEAAoE;AACpE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBxB,CAAC;AAEX;wFACwF;AACxF,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,MAAM,OAAO,qBAAqB,GAAG,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACnF,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEtC,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,EAAE,eAA0B,CAAC;AAE/D,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAC5C,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAK5D,CAAC"}
@@ -194,6 +194,27 @@ export const WORK_PROJECT_TYPES = {
194
194
  description: 'Video and TV content',
195
195
  },
196
196
  };
197
+ // --- Audition Type Display + Board Filter ---
198
+ /** Audition type display info. Used on the audition board's type chips/filters and on
199
+ * audition headers. Record-keyed by the canonical AuditionType union, so adding an
200
+ * audition type fails the build here until its label + description exist. */
201
+ export const AUDITION_TYPES = {
202
+ platformAudition: {
203
+ label: 'Platform',
204
+ description: 'Run by TTT admins to gather community feedback.',
205
+ },
206
+ sponsoredAudition: {
207
+ label: 'Sponsored',
208
+ description: 'Backed by funding — votes decide where the money goes.',
209
+ },
210
+ workAudition: {
211
+ label: 'Work',
212
+ description: "Created by a Work's Guildmates seeking feedback.",
213
+ },
214
+ };
215
+ /** The audition board's "every type" filter sentinel — the ONE declaration (it was
216
+ * previously hand-rolled app-locally). It doubles as the chip's own display label. */
217
+ export const AUDITION_TYPE_FILTER_ALL = 'All';
197
218
  // --- Sort Options ---
198
219
  /** Sort options shown on the audition feeds, keyed by feed type. */
199
220
  export const AUDITION_SORT_OPTIONS = {
@@ -218,6 +239,8 @@ export const AUDITION_SORT_OPTIONS = {
218
239
  lowestStakeShares: { label: 'Lowest Stakes', field: 'stakeSharesOffered', direction: 'asc' },
219
240
  },
220
241
  };
242
+ /** The audition board's initial sort selection. Every feed type offers this key. */
243
+ export const DEFAULT_AUDITION_SORT = 'newest';
221
244
  /** Sort options shown on the hallLibrary feed. */
222
245
  export const HALL_LIBRARY_SORT_OPTIONS = {
223
246
  newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"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","sourcesContent":["// UI option lists shared between frontend and backend admin tooling.\n\nimport type { HallWingType, WorkProjectType } from '../types/content.js';\n\n// --- WorkProject Guild Standings ---\n// WorkProject guild-standing IDs, labels, and assignment policy live in ../permissions/.\n// Keep guild-standing picker UIs backed by GUILD_STANDINGS instead of a duplicated option map.\n\n// --- Trade & Craft Options ---\n\n/**\n * Trade professions (20) — role-shaped labels used for guild roles, commission\n * requests, and file-folder permission keys. Display strings are stored/validated\n * directly (they double as the enum values in the callable input schemas that derive\n * from this constant). Kept in curated order; not alphabetized.\n */\nexport const TRADE_PROFESSION_OPTIONS = [\n // Performance\n 'Actor',\n 'Voice Actor',\n 'Singer',\n 'Musician',\n 'Dancer & Choreographer',\n // Story\n 'Writer',\n 'Editor',\n 'Director',\n 'Producer',\n // Camera & visual\n 'Cinematographer',\n 'Photographer',\n 'Animator',\n 'Artist',\n 'Graphic Designer',\n 'VFX Artist',\n 'Costume & Makeup Artist',\n 'Set & Prop Designer',\n // Audio\n 'Composer',\n 'Music Producer',\n 'Sound Designer',\n] as const;\n\n/**\n * Craft-skill discipline tags (23). Tags are Firestore doc IDs in the\n * `craftSkillsByTag/{tag}` index, so the STORED value is a machine-safe kebab-case ID\n * (`CRAFT_SKILL_TAG_OPTIONS`) — this is what the wire schema validates and what path\n * builders write. Human-readable labels (with spaces / ampersands) are mapped over the\n * IDs via `CRAFT_SKILL_TAG_LABELS`; render pickers/badges through that map. Kept in\n * curated discipline order (Performance → Writing → Visual → Film → Audio); not sorted.\n */\nexport const CRAFT_SKILL_TAG_OPTIONS = [\n // Performance\n 'acting',\n 'voice-over',\n 'singing',\n 'rapping',\n 'instrumental-performance',\n 'dance-choreography',\n 'stand-up-sketch-comedy',\n // Writing\n 'writing-storytelling',\n 'songwriting',\n 'poetry-spoken-word',\n // Visual arts\n 'drawing-illustration',\n 'painting',\n 'animation',\n 'graphic-design',\n 'photography',\n // Film & video\n 'cinematography-camera',\n 'video-editing',\n 'visual-effects',\n 'directing',\n 'costume-makeup',\n 'set-prop-design',\n // Audio\n 'music-production',\n 'composing-scoring',\n 'sound-design',\n] as const;\n\n/** The canonical tag-ID type — every tags field/param derives from this, never `string`. */\nexport type CraftSkillTagId = (typeof CRAFT_SKILL_TAG_OPTIONS)[number];\n\n/** The canonical trade-profession ID type. */\nexport type TradeProfessionId = (typeof TRADE_PROFESSION_OPTIONS)[number];\n\n/** TRADE_PROFESSION_OPTIONS as a non-empty tuple for `z.enum(...)` consumers — the ONE\n * cast, here beside the declaration (never re-cast locally in schema files). */\nexport const TRADE_PROFESSION_VALUES = TRADE_PROFESSION_OPTIONS as unknown as [\n TradeProfessionId,\n ...TradeProfessionId[],\n];\n\n/** The same allowlist as a non-empty tuple for `z.enum(...)` consumers — the ONE cast,\n * here beside the declaration (schema files import this, never re-cast locally). */\nexport const CRAFT_SKILL_TAG_VALUES = CRAFT_SKILL_TAG_OPTIONS as unknown as [\n CraftSkillTagId,\n ...CraftSkillTagId[],\n];\n\n/** Human display labels for each craft-skill tag ID. Keyed by the machine-safe ID. */\nexport const CRAFT_SKILL_TAG_LABELS: Record<(typeof CRAFT_SKILL_TAG_OPTIONS)[number], string> = {\n 'acting': 'Acting',\n 'voice-over': 'Voice Over',\n 'singing': 'Singing',\n 'rapping': 'Rapping',\n 'instrumental-performance': 'Instrumental Performance',\n 'dance-choreography': 'Dance & Choreography',\n 'stand-up-sketch-comedy': 'Stand-Up & Sketch Comedy',\n 'writing-storytelling': 'Writing & Storytelling',\n 'songwriting': 'Songwriting',\n 'poetry-spoken-word': 'Poetry & Spoken Word',\n 'drawing-illustration': 'Drawing & Illustration',\n 'painting': 'Painting',\n 'animation': 'Animation',\n 'graphic-design': 'Graphic Design',\n 'photography': 'Photography',\n 'cinematography-camera': 'Cinematography & Camera',\n 'video-editing': 'Video Editing',\n 'visual-effects': 'Visual Effects',\n 'directing': 'Directing',\n 'costume-makeup': 'Costume & Makeup',\n 'set-prop-design': 'Set & Prop Design',\n 'music-production': 'Music Production',\n 'composing-scoring': 'Composing & Scoring',\n 'sound-design': 'Sound Design',\n};\n\n// --- WorkProject-Specific Genres ---\n\n/**\n * Genres shown for each workProject type. Curated final lists (kept in the doc's order,\n * not alphabetized). \"Spooky\" (not \"Horror\") is deliberate for V1: the name carries the\n * all-ages ceiling; \"Horror\" is the natural mature sibling if mature content ever ships.\n */\nexport const WORK_PROJECT_SPECIFIC_GENRES = {\n Tales: [\n 'Adventure',\n 'Comedy',\n 'Drama',\n 'Fantasy',\n 'Fairy Tale & Fable',\n 'Historical',\n 'Mystery',\n 'Romance',\n 'Sci-Fi',\n 'Slice of Life',\n 'Spooky',\n 'Thriller',\n ],\n Tunes: [\n 'Audiobook & Spoken Word',\n 'Blues',\n 'Classical',\n 'Country',\n 'Electronic',\n 'Folk',\n 'Hip Hop & Rap',\n 'Jazz',\n 'Metal',\n 'Podcast',\n 'Pop',\n 'R&B & Soul',\n 'Reggae',\n 'Rock',\n 'Soundtrack & Score',\n ],\n Television: [\n 'Action',\n 'Animation',\n 'Comedy',\n 'Documentary',\n 'Drama',\n 'Fantasy',\n 'Kids & Family',\n 'Music Video',\n 'Mystery',\n 'Reality',\n 'Sci-Fi',\n 'Sketch & Variety',\n 'Spooky',\n 'Talk Show',\n 'Thriller',\n ],\n} as const;\n\n// --- HallLibrary / WorkProject Type Display Maps ---\n\n/** HallLibrary type display info. Used in dropdowns and badges. */\nexport const HALL_WING_TYPES: Record<HallWingType, { label: string; description: string }> = {\n entertainment: {\n label: 'Entertainment',\n description: 'Fun and engaging content',\n },\n educational: {\n label: 'Educational',\n description: 'Learning materials and resources',\n },\n newsPolitical: {\n label: 'News/Political',\n description: 'Current events and political content',\n },\n};\n\n/** WorkProject type display info. Used in dropdowns and headers. */\nexport const WORK_PROJECT_TYPES: Record<WorkProjectType, { label: string; description: string }> = {\n Tales: {\n label: 'Tales',\n description: 'Stories and narratives',\n },\n Tunes: {\n label: 'Tunes',\n description: 'Music and audio content',\n },\n Television: {\n label: 'Television',\n description: 'Video and TV content',\n },\n};\n\n// --- Sort Options ---\n\n/** Sort options shown on the audition feeds, keyed by feed type. */\nexport const AUDITION_SORT_OPTIONS = {\n default: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n },\n platformAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n },\n sponsoredAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n highestPrice: { label: 'Highest Price', field: 'sponsoredAuditionAmountUSD', direction: 'desc' },\n lowestPrice: { label: 'Lowest Price', field: 'sponsoredAuditionAmountUSD', direction: 'asc' },\n },\n workAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n highestStakeShares: { label: 'Highest Stakes', field: 'stakeSharesOffered', direction: 'desc' },\n lowestStakeShares: { label: 'Lowest Stakes', field: 'stakeSharesOffered', direction: 'asc' },\n },\n} as const;\n\n/** Sort options shown on the hallLibrary feed. */\nexport const HALL_LIBRARY_SORT_OPTIONS: Record<\n string,\n { label: string; field: string; direction: 'asc' | 'desc' }\n> = {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n oldest: { label: 'Oldest First', field: 'createdOn', direction: 'asc' },\n most_followed: { label: 'Most Followed', field: 'followerCount', direction: 'desc' },\n};\n\n\n\n"]}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"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","sourcesContent":["// UI option lists shared between frontend and backend admin tooling.\n\nimport type { HallWingType, WorkProjectType } from '../types/content.js';\nimport type { AuditionType } from '../types/commissions.js';\n\n// --- WorkProject Guild Standings ---\n// WorkProject guild-standing IDs, labels, and assignment policy live in ../permissions/.\n// Keep guild-standing picker UIs backed by GUILD_STANDINGS instead of a duplicated option map.\n\n// --- Trade & Craft Options ---\n\n/**\n * Trade professions (20) — role-shaped labels used for guild roles, commission\n * requests, and file-folder permission keys. Display strings are stored/validated\n * directly (they double as the enum values in the callable input schemas that derive\n * from this constant). Kept in curated order; not alphabetized.\n */\nexport const TRADE_PROFESSION_OPTIONS = [\n // Performance\n 'Actor',\n 'Voice Actor',\n 'Singer',\n 'Musician',\n 'Dancer & Choreographer',\n // Story\n 'Writer',\n 'Editor',\n 'Director',\n 'Producer',\n // Camera & visual\n 'Cinematographer',\n 'Photographer',\n 'Animator',\n 'Artist',\n 'Graphic Designer',\n 'VFX Artist',\n 'Costume & Makeup Artist',\n 'Set & Prop Designer',\n // Audio\n 'Composer',\n 'Music Producer',\n 'Sound Designer',\n] as const;\n\n/**\n * Craft-skill discipline tags (23). Tags are Firestore doc IDs in the\n * `craftSkillsByTag/{tag}` index, so the STORED value is a machine-safe kebab-case ID\n * (`CRAFT_SKILL_TAG_OPTIONS`) — this is what the wire schema validates and what path\n * builders write. Human-readable labels (with spaces / ampersands) are mapped over the\n * IDs via `CRAFT_SKILL_TAG_LABELS`; render pickers/badges through that map. Kept in\n * curated discipline order (Performance → Writing → Visual → Film → Audio); not sorted.\n */\nexport const CRAFT_SKILL_TAG_OPTIONS = [\n // Performance\n 'acting',\n 'voice-over',\n 'singing',\n 'rapping',\n 'instrumental-performance',\n 'dance-choreography',\n 'stand-up-sketch-comedy',\n // Writing\n 'writing-storytelling',\n 'songwriting',\n 'poetry-spoken-word',\n // Visual arts\n 'drawing-illustration',\n 'painting',\n 'animation',\n 'graphic-design',\n 'photography',\n // Film & video\n 'cinematography-camera',\n 'video-editing',\n 'visual-effects',\n 'directing',\n 'costume-makeup',\n 'set-prop-design',\n // Audio\n 'music-production',\n 'composing-scoring',\n 'sound-design',\n] as const;\n\n/** The canonical tag-ID type — every tags field/param derives from this, never `string`. */\nexport type CraftSkillTagId = (typeof CRAFT_SKILL_TAG_OPTIONS)[number];\n\n/** The canonical trade-profession ID type. */\nexport type TradeProfessionId = (typeof TRADE_PROFESSION_OPTIONS)[number];\n\n/** TRADE_PROFESSION_OPTIONS as a non-empty tuple for `z.enum(...)` consumers — the ONE\n * cast, here beside the declaration (never re-cast locally in schema files). */\nexport const TRADE_PROFESSION_VALUES = TRADE_PROFESSION_OPTIONS as unknown as [\n TradeProfessionId,\n ...TradeProfessionId[],\n];\n\n/** The same allowlist as a non-empty tuple for `z.enum(...)` consumers — the ONE cast,\n * here beside the declaration (schema files import this, never re-cast locally). */\nexport const CRAFT_SKILL_TAG_VALUES = CRAFT_SKILL_TAG_OPTIONS as unknown as [\n CraftSkillTagId,\n ...CraftSkillTagId[],\n];\n\n/** Human display labels for each craft-skill tag ID. Keyed by the machine-safe ID. */\nexport const CRAFT_SKILL_TAG_LABELS: Record<(typeof CRAFT_SKILL_TAG_OPTIONS)[number], string> = {\n 'acting': 'Acting',\n 'voice-over': 'Voice Over',\n 'singing': 'Singing',\n 'rapping': 'Rapping',\n 'instrumental-performance': 'Instrumental Performance',\n 'dance-choreography': 'Dance & Choreography',\n 'stand-up-sketch-comedy': 'Stand-Up & Sketch Comedy',\n 'writing-storytelling': 'Writing & Storytelling',\n 'songwriting': 'Songwriting',\n 'poetry-spoken-word': 'Poetry & Spoken Word',\n 'drawing-illustration': 'Drawing & Illustration',\n 'painting': 'Painting',\n 'animation': 'Animation',\n 'graphic-design': 'Graphic Design',\n 'photography': 'Photography',\n 'cinematography-camera': 'Cinematography & Camera',\n 'video-editing': 'Video Editing',\n 'visual-effects': 'Visual Effects',\n 'directing': 'Directing',\n 'costume-makeup': 'Costume & Makeup',\n 'set-prop-design': 'Set & Prop Design',\n 'music-production': 'Music Production',\n 'composing-scoring': 'Composing & Scoring',\n 'sound-design': 'Sound Design',\n};\n\n// --- WorkProject-Specific Genres ---\n\n/**\n * Genres shown for each workProject type. Curated final lists (kept in the doc's order,\n * not alphabetized). \"Spooky\" (not \"Horror\") is deliberate for V1: the name carries the\n * all-ages ceiling; \"Horror\" is the natural mature sibling if mature content ever ships.\n */\nexport const WORK_PROJECT_SPECIFIC_GENRES = {\n Tales: [\n 'Adventure',\n 'Comedy',\n 'Drama',\n 'Fantasy',\n 'Fairy Tale & Fable',\n 'Historical',\n 'Mystery',\n 'Romance',\n 'Sci-Fi',\n 'Slice of Life',\n 'Spooky',\n 'Thriller',\n ],\n Tunes: [\n 'Audiobook & Spoken Word',\n 'Blues',\n 'Classical',\n 'Country',\n 'Electronic',\n 'Folk',\n 'Hip Hop & Rap',\n 'Jazz',\n 'Metal',\n 'Podcast',\n 'Pop',\n 'R&B & Soul',\n 'Reggae',\n 'Rock',\n 'Soundtrack & Score',\n ],\n Television: [\n 'Action',\n 'Animation',\n 'Comedy',\n 'Documentary',\n 'Drama',\n 'Fantasy',\n 'Kids & Family',\n 'Music Video',\n 'Mystery',\n 'Reality',\n 'Sci-Fi',\n 'Sketch & Variety',\n 'Spooky',\n 'Talk Show',\n 'Thriller',\n ],\n} as const;\n\n// --- HallLibrary / WorkProject Type Display Maps ---\n\n/** HallLibrary type display info. Used in dropdowns and badges. */\nexport const HALL_WING_TYPES: Record<HallWingType, { label: string; description: string }> = {\n entertainment: {\n label: 'Entertainment',\n description: 'Fun and engaging content',\n },\n educational: {\n label: 'Educational',\n description: 'Learning materials and resources',\n },\n newsPolitical: {\n label: 'News/Political',\n description: 'Current events and political content',\n },\n};\n\n/** WorkProject type display info. Used in dropdowns and headers. */\nexport const WORK_PROJECT_TYPES: Record<WorkProjectType, { label: string; description: string }> = {\n Tales: {\n label: 'Tales',\n description: 'Stories and narratives',\n },\n Tunes: {\n label: 'Tunes',\n description: 'Music and audio content',\n },\n Television: {\n label: 'Television',\n description: 'Video and TV content',\n },\n};\n\n// --- Audition Type Display + Board Filter ---\n\n/** Audition type display info. Used on the audition board's type chips/filters and on\n * audition headers. Record-keyed by the canonical AuditionType union, so adding an\n * audition type fails the build here until its label + description exist. */\nexport const AUDITION_TYPES: Record<AuditionType, { label: string; description: string }> = {\n platformAudition: {\n label: 'Platform',\n description: 'Run by TTT admins to gather community feedback.',\n },\n sponsoredAudition: {\n label: 'Sponsored',\n description: 'Backed by funding — votes decide where the money goes.',\n },\n workAudition: {\n label: 'Work',\n description: \"Created by a Work's Guildmates seeking feedback.\",\n },\n};\n\n/** The audition board's \"every type\" filter sentinel — the ONE declaration (it was\n * previously hand-rolled app-locally). It doubles as the chip's own display label. */\nexport const AUDITION_TYPE_FILTER_ALL = 'All';\n\n/** Audition-board type-filter state: one canonical audition type, or the ALL sentinel.\n * Filter state derives this instead of being typed `string`. */\nexport type AuditionTypeFilter = AuditionType | typeof AUDITION_TYPE_FILTER_ALL;\n\n// --- Sort Options ---\n\n/** Sort options shown on the audition feeds, keyed by feed type. */\nexport const AUDITION_SORT_OPTIONS = {\n default: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n },\n platformAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n },\n sponsoredAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n highestPrice: { label: 'Highest Price', field: 'sponsoredAuditionAmountUSD', direction: 'desc' },\n lowestPrice: { label: 'Lowest Price', field: 'sponsoredAuditionAmountUSD', direction: 'asc' },\n },\n workAudition: {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n endingSoon: { label: 'Ending Soon', field: 'openTill', direction: 'asc' },\n highestStakeShares: { label: 'Highest Stakes', field: 'stakeSharesOffered', direction: 'desc' },\n lowestStakeShares: { label: 'Lowest Stakes', field: 'stakeSharesOffered', direction: 'asc' },\n },\n} as const;\n\n/** Every sort key any audition feed offers, DERIVED from AUDITION_SORT_OPTIONS above — a new\n * sort option widens the union automatically, so sort state is never typed `string`. */\nexport type AuditionSortKey = {\n [F in keyof typeof AUDITION_SORT_OPTIONS]: keyof (typeof AUDITION_SORT_OPTIONS)[F];\n}[keyof typeof AUDITION_SORT_OPTIONS];\n\n/** The audition board's initial sort selection. Every feed type offers this key. */\nexport const DEFAULT_AUDITION_SORT: AuditionSortKey = 'newest';\n\n/** Sort options shown on the hallLibrary feed. */\nexport const HALL_LIBRARY_SORT_OPTIONS: Record<\n string,\n { label: string; field: string; direction: 'asc' | 'desc' }\n> = {\n newest: { label: 'Newest First', field: 'createdOn', direction: 'desc' },\n oldest: { label: 'Oldest First', field: 'createdOn', direction: 'asc' },\n most_followed: { label: 'Most Followed', field: 'followerCount', direction: 'desc' },\n};\n\n\n\n"]}
@@ -90,8 +90,8 @@ export declare const ChatSyncFanoutJobSchema: z.ZodObject<{
90
90
  revision: z.ZodNumber;
91
91
  status: z.ZodEnum<{
92
92
  pending: "pending";
93
- complete: "complete";
94
93
  deadLetter: "deadLetter";
94
+ complete: "complete";
95
95
  }>;
96
96
  attemptCount: z.ZodNumber;
97
97
  nextAttemptAt: z.ZodNumber;
@@ -147,9 +147,9 @@ export declare const ChatAdminActionCommandSchema: z.ZodObject<{
147
147
  expectedMessageRevision: z.ZodNumber;
148
148
  payloadHash: z.ZodString;
149
149
  state: z.ZodEnum<{
150
- failed: "failed";
151
150
  applied: "applied";
152
151
  deadLetter: "deadLetter";
152
+ failed: "failed";
153
153
  queued: "queued";
154
154
  delivering: "delivering";
155
155
  safetyRepair: "safetyRepair";
@@ -59,9 +59,9 @@ export declare const CommissionProposalSchema: z.ZodObject<{
59
59
  createdOn: z.ZodNumber;
60
60
  status: z.ZodEnum<{
61
61
  accepted: "accepted";
62
- rejected: "rejected";
63
62
  open: "open";
64
63
  invited: "invited";
64
+ rejected: "rejected";
65
65
  }>;
66
66
  guildInviteId: z.ZodOptional<z.ZodString>;
67
67
  invitedOn: z.ZodOptional<z.ZodNumber>;
@@ -87,9 +87,9 @@ export declare const CreateCommissionProposalTextResultSchema: z.ZodObject<{
87
87
  createdOn: z.ZodNumber;
88
88
  status: z.ZodEnum<{
89
89
  accepted: "accepted";
90
- rejected: "rejected";
91
90
  open: "open";
92
91
  invited: "invited";
92
+ rejected: "rejected";
93
93
  }>;
94
94
  guildInviteId: z.ZodOptional<z.ZodString>;
95
95
  invitedOn: z.ZodOptional<z.ZodNumber>;
@@ -129,10 +129,10 @@ export declare const AuditionSchema: z.ZodObject<{
129
129
  curated: "curated";
130
130
  }>>;
131
131
  curatedAssemblyStatus: z.ZodOptional<z.ZodEnum<{
132
- failed: "failed";
133
132
  closed: "closed";
134
133
  assembling: "assembling";
135
134
  ready: "ready";
135
+ failed: "failed";
136
136
  }>>;
137
137
  expectedOptionCount: z.ZodOptional<z.ZodNumber>;
138
138
  curatedFailureReason: z.ZodOptional<z.ZodString>;
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  export declare const MediaActivationJobStatusSchema: z.ZodEnum<{
3
3
  pending: "pending";
4
- complete: "complete";
5
4
  deadLetter: "deadLetter";
5
+ complete: "complete";
6
6
  authorityApplied: "authorityApplied";
7
7
  }>;
8
8
  export type MediaActivationJobStatus = z.infer<typeof MediaActivationJobStatusSchema>;
@@ -12,15 +12,13 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
12
12
  assetId: z.ZodString;
13
13
  pendingMediaId: z.ZodString;
14
14
  fileOrigin: z.ZodEnum<{
15
- "commission-proposal": "commission-proposal";
16
15
  "profile-picture": "profile-picture";
17
- "conversation-file": "conversation-file";
18
- "audition-entry": "audition-entry";
19
- "work-asset": "work-asset";
20
16
  "craft-skill-media": "craft-skill-media";
21
17
  squareStreetz: "squareStreetz";
22
18
  "commission-posting": "commission-posting";
19
+ "commission-proposal": "commission-proposal";
23
20
  "audition-prompt": "audition-prompt";
21
+ "audition-entry": "audition-entry";
24
22
  "admin-audition-prompt": "admin-audition-prompt";
25
23
  "hallLibrary-cover-square": "hallLibrary-cover-square";
26
24
  "hallLibrary-cover-poster": "hallLibrary-cover-poster";
@@ -31,6 +29,8 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
31
29
  "tune-track-audio": "tune-track-audio";
32
30
  "television-episode-photo": "television-episode-photo";
33
31
  "television-episode-video": "television-episode-video";
32
+ "conversation-file": "conversation-file";
33
+ "work-asset": "work-asset";
34
34
  "ncii-evidence": "ncii-evidence";
35
35
  }>;
36
36
  authorityVersion: z.ZodNumber;
@@ -55,16 +55,16 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
55
55
  }>;
56
56
  ownerType: z.ZodEnum<{
57
57
  workProject: "workProject";
58
- audition: "audition";
59
- hallItem: "hallItem";
58
+ userProfile: "userProfile";
60
59
  craftSkill: "craftSkill";
60
+ squareStreetzPost: "squareStreetzPost";
61
+ workContent: "workContent";
62
+ hallItem: "hallItem";
61
63
  commissionListing: "commissionListing";
62
64
  commissionProposal: "commissionProposal";
65
+ audition: "audition";
63
66
  auditionEntry: "auditionEntry";
64
67
  conversationFile: "conversationFile";
65
- userProfile: "userProfile";
66
- squareStreetzPost: "squareStreetzPost";
67
- workContent: "workContent";
68
68
  realmFile: "realmFile";
69
69
  safetyEvidence: "safetyEvidence";
70
70
  }>;
@@ -94,10 +94,10 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
94
94
  updatedAtMs: z.ZodNumber;
95
95
  }, z.core.$strict>;
96
96
  publicationKind: z.ZodEnum<{
97
- workAsset: "workAsset";
98
97
  conversationFile: "conversationFile";
99
98
  profilePicture: "profilePicture";
100
99
  squarePostMedia: "squarePostMedia";
100
+ workAsset: "workAsset";
101
101
  hallCover: "hallCover";
102
102
  realmCover: "realmCover";
103
103
  workContentMedia: "workContentMedia";
@@ -109,8 +109,8 @@ export declare const MediaActivationJobSchema: z.ZodObject<{
109
109
  publicationArgs: z.ZodUnknown;
110
110
  status: z.ZodEnum<{
111
111
  pending: "pending";
112
- complete: "complete";
113
112
  deadLetter: "deadLetter";
113
+ complete: "complete";
114
114
  authorityApplied: "authorityApplied";
115
115
  }>;
116
116
  attemptCount: z.ZodNumber;
@@ -21,16 +21,16 @@ export type MediaServingStatus = z.infer<typeof MediaServingStatusSchema>;
21
21
  * owned by the destination surface. */
22
22
  export declare const MediaAssetOwnerTypeSchema: z.ZodEnum<{
23
23
  workProject: "workProject";
24
- audition: "audition";
25
- hallItem: "hallItem";
24
+ userProfile: "userProfile";
26
25
  craftSkill: "craftSkill";
26
+ squareStreetzPost: "squareStreetzPost";
27
+ workContent: "workContent";
28
+ hallItem: "hallItem";
27
29
  commissionListing: "commissionListing";
28
30
  commissionProposal: "commissionProposal";
31
+ audition: "audition";
29
32
  auditionEntry: "auditionEntry";
30
33
  conversationFile: "conversationFile";
31
- userProfile: "userProfile";
32
- squareStreetzPost: "squareStreetzPost";
33
- workContent: "workContent";
34
34
  realmFile: "realmFile";
35
35
  safetyEvidence: "safetyEvidence";
36
36
  }>;
@@ -111,16 +111,16 @@ export declare const MediaOriginLineageV1Schema: z.ZodObject<{
111
111
  }>;
112
112
  createdFromOwnerType: z.ZodOptional<z.ZodEnum<{
113
113
  workProject: "workProject";
114
- audition: "audition";
115
- hallItem: "hallItem";
114
+ userProfile: "userProfile";
116
115
  craftSkill: "craftSkill";
116
+ squareStreetzPost: "squareStreetzPost";
117
+ workContent: "workContent";
118
+ hallItem: "hallItem";
117
119
  commissionListing: "commissionListing";
118
120
  commissionProposal: "commissionProposal";
121
+ audition: "audition";
119
122
  auditionEntry: "auditionEntry";
120
123
  conversationFile: "conversationFile";
121
- userProfile: "userProfile";
122
- squareStreetzPost: "squareStreetzPost";
123
- workContent: "workContent";
124
124
  realmFile: "realmFile";
125
125
  safetyEvidence: "safetyEvidence";
126
126
  }>>;
@@ -128,16 +128,16 @@ export declare const MediaOriginLineageV1Schema: z.ZodObject<{
128
128
  copyActorUid: z.ZodOptional<z.ZodString>;
129
129
  currentOwnerType: z.ZodEnum<{
130
130
  workProject: "workProject";
131
- audition: "audition";
132
- hallItem: "hallItem";
131
+ userProfile: "userProfile";
133
132
  craftSkill: "craftSkill";
133
+ squareStreetzPost: "squareStreetzPost";
134
+ workContent: "workContent";
135
+ hallItem: "hallItem";
134
136
  commissionListing: "commissionListing";
135
137
  commissionProposal: "commissionProposal";
138
+ audition: "audition";
136
139
  auditionEntry: "auditionEntry";
137
140
  conversationFile: "conversationFile";
138
- userProfile: "userProfile";
139
- squareStreetzPost: "squareStreetzPost";
140
- workContent: "workContent";
141
141
  realmFile: "realmFile";
142
142
  safetyEvidence: "safetyEvidence";
143
143
  }>;
@@ -225,10 +225,10 @@ export type MediaServingScope = z.infer<typeof MediaServingScopeSchema>;
225
225
  * and performs the idempotent owner write. Every kind is a Firestore-owner adapter.
226
226
  */
227
227
  export declare const MediaPublicationKindSchema: z.ZodEnum<{
228
- workAsset: "workAsset";
229
228
  conversationFile: "conversationFile";
230
229
  profilePicture: "profilePicture";
231
230
  squarePostMedia: "squarePostMedia";
231
+ workAsset: "workAsset";
232
232
  hallCover: "hallCover";
233
233
  realmCover: "realmCover";
234
234
  workContentMedia: "workContentMedia";
@@ -265,16 +265,16 @@ export declare const MediaServingAuthorityRecordSchema: z.ZodObject<{
265
265
  }>;
266
266
  ownerType: z.ZodEnum<{
267
267
  workProject: "workProject";
268
- audition: "audition";
269
- hallItem: "hallItem";
268
+ userProfile: "userProfile";
270
269
  craftSkill: "craftSkill";
270
+ squareStreetzPost: "squareStreetzPost";
271
+ workContent: "workContent";
272
+ hallItem: "hallItem";
271
273
  commissionListing: "commissionListing";
272
274
  commissionProposal: "commissionProposal";
275
+ audition: "audition";
273
276
  auditionEntry: "auditionEntry";
274
277
  conversationFile: "conversationFile";
275
- userProfile: "userProfile";
276
- squareStreetzPost: "squareStreetzPost";
277
- workContent: "workContent";
278
278
  realmFile: "realmFile";
279
279
  safetyEvidence: "safetyEvidence";
280
280
  }>;
@@ -312,15 +312,13 @@ export declare const MediaAssetSchema: z.ZodObject<{
312
312
  audio: "audio";
313
313
  }>;
314
314
  fileOrigin: z.ZodEnum<{
315
- "commission-proposal": "commission-proposal";
316
315
  "profile-picture": "profile-picture";
317
- "conversation-file": "conversation-file";
318
- "audition-entry": "audition-entry";
319
- "work-asset": "work-asset";
320
316
  "craft-skill-media": "craft-skill-media";
321
317
  squareStreetz: "squareStreetz";
322
318
  "commission-posting": "commission-posting";
319
+ "commission-proposal": "commission-proposal";
323
320
  "audition-prompt": "audition-prompt";
321
+ "audition-entry": "audition-entry";
324
322
  "admin-audition-prompt": "admin-audition-prompt";
325
323
  "hallLibrary-cover-square": "hallLibrary-cover-square";
326
324
  "hallLibrary-cover-poster": "hallLibrary-cover-poster";
@@ -331,20 +329,22 @@ export declare const MediaAssetSchema: z.ZodObject<{
331
329
  "tune-track-audio": "tune-track-audio";
332
330
  "television-episode-photo": "television-episode-photo";
333
331
  "television-episode-video": "television-episode-video";
332
+ "conversation-file": "conversation-file";
333
+ "work-asset": "work-asset";
334
334
  "ncii-evidence": "ncii-evidence";
335
335
  }>;
336
336
  ownerType: z.ZodEnum<{
337
337
  workProject: "workProject";
338
- audition: "audition";
339
- hallItem: "hallItem";
338
+ userProfile: "userProfile";
340
339
  craftSkill: "craftSkill";
340
+ squareStreetzPost: "squareStreetzPost";
341
+ workContent: "workContent";
342
+ hallItem: "hallItem";
341
343
  commissionListing: "commissionListing";
342
344
  commissionProposal: "commissionProposal";
345
+ audition: "audition";
343
346
  auditionEntry: "auditionEntry";
344
347
  conversationFile: "conversationFile";
345
- userProfile: "userProfile";
346
- squareStreetzPost: "squareStreetzPost";
347
- workContent: "workContent";
348
348
  realmFile: "realmFile";
349
349
  safetyEvidence: "safetyEvidence";
350
350
  }>;
@@ -410,16 +410,16 @@ export declare const MediaAssetSchema: z.ZodObject<{
410
410
  }>;
411
411
  createdFromOwnerType: z.ZodOptional<z.ZodEnum<{
412
412
  workProject: "workProject";
413
- audition: "audition";
414
- hallItem: "hallItem";
413
+ userProfile: "userProfile";
415
414
  craftSkill: "craftSkill";
415
+ squareStreetzPost: "squareStreetzPost";
416
+ workContent: "workContent";
417
+ hallItem: "hallItem";
416
418
  commissionListing: "commissionListing";
417
419
  commissionProposal: "commissionProposal";
420
+ audition: "audition";
418
421
  auditionEntry: "auditionEntry";
419
422
  conversationFile: "conversationFile";
420
- userProfile: "userProfile";
421
- squareStreetzPost: "squareStreetzPost";
422
- workContent: "workContent";
423
423
  realmFile: "realmFile";
424
424
  safetyEvidence: "safetyEvidence";
425
425
  }>>;
@@ -427,16 +427,16 @@ export declare const MediaAssetSchema: z.ZodObject<{
427
427
  copyActorUid: z.ZodOptional<z.ZodString>;
428
428
  currentOwnerType: z.ZodEnum<{
429
429
  workProject: "workProject";
430
- audition: "audition";
431
- hallItem: "hallItem";
430
+ userProfile: "userProfile";
432
431
  craftSkill: "craftSkill";
432
+ squareStreetzPost: "squareStreetzPost";
433
+ workContent: "workContent";
434
+ hallItem: "hallItem";
433
435
  commissionListing: "commissionListing";
434
436
  commissionProposal: "commissionProposal";
437
+ audition: "audition";
435
438
  auditionEntry: "auditionEntry";
436
439
  conversationFile: "conversationFile";
437
- userProfile: "userProfile";
438
- squareStreetzPost: "squareStreetzPost";
439
- workContent: "workContent";
440
440
  realmFile: "realmFile";
441
441
  safetyEvidence: "safetyEvidence";
442
442
  }>;
@@ -182,14 +182,8 @@ export declare const ChatMessageV1Schema: z.ZodObject<{
182
182
  threadId: z.ZodOptional<z.ZodString>;
183
183
  type: z.ZodOptional<z.ZodString>;
184
184
  guildInviteId: z.ZodOptional<z.ZodString>;
185
- replyTo: z.ZodOptional<z.ZodObject<{
186
- messageId: z.ZodString;
187
- senderId: z.ZodString;
188
- messagePreview: z.ZodString;
189
- }, z.core.$strict>>;
190
185
  isSystemMessage: z.ZodOptional<z.ZodBoolean>;
191
186
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
192
- hidden: z.ZodOptional<z.ZodBoolean>;
193
187
  }, z.core.$strip>;
194
188
  export type ChatMessageV1Doc = z.infer<typeof ChatMessageV1Schema>;
195
189
  //# sourceMappingURL=messaging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/messaging.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;iBAWjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;iBAwBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAQtE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAMpF,eAAO,MAAM,6BAA6B;;;;;;;;;;2BASxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,4BAA4B;;;EAAkC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAWhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;iBAoB9B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/messaging.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;iBAWjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;iBAwBjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAQtE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAMpF,eAAO,MAAM,6BAA6B;;;;;;;;;;2BASxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,eAAO,MAAM,4BAA4B;;;EAAkC,CAAC;AAC5E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAWhE,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAwB9B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}