@ttt-productions/ttt-core 0.77.2 → 0.78.1

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 (174) hide show
  1. package/dist/capabilities/capability-registry.d.ts +39 -0
  2. package/dist/capabilities/capability-registry.d.ts.map +1 -0
  3. package/dist/capabilities/capability-registry.js +123 -0
  4. package/dist/capabilities/capability-registry.js.map +1 -0
  5. package/dist/capabilities/index.d.ts +3 -0
  6. package/dist/capabilities/index.d.ts.map +1 -0
  7. package/dist/capabilities/index.js +3 -0
  8. package/dist/capabilities/index.js.map +1 -0
  9. package/dist/capabilities/messaging-surfaces.d.ts +17 -0
  10. package/dist/capabilities/messaging-surfaces.d.ts.map +1 -0
  11. package/dist/capabilities/messaging-surfaces.js +44 -0
  12. package/dist/capabilities/messaging-surfaces.js.map +1 -0
  13. package/dist/constants/admin-labels.d.ts +15 -0
  14. package/dist/constants/admin-labels.d.ts.map +1 -0
  15. package/dist/constants/admin-labels.js +41 -0
  16. package/dist/constants/admin-labels.js.map +1 -0
  17. package/dist/constants/business-admin.d.ts +9 -0
  18. package/dist/constants/business-admin.d.ts.map +1 -1
  19. package/dist/constants/business-admin.js +13 -0
  20. package/dist/constants/business-admin.js.map +1 -1
  21. package/dist/constants/business-content.d.ts +5 -0
  22. package/dist/constants/business-content.d.ts.map +1 -1
  23. package/dist/constants/business-content.js +5 -0
  24. package/dist/constants/business-content.js.map +1 -1
  25. package/dist/constants/craft-skill-statements.d.ts +10 -0
  26. package/dist/constants/craft-skill-statements.d.ts.map +1 -0
  27. package/dist/constants/craft-skill-statements.js +33 -0
  28. package/dist/constants/craft-skill-statements.js.map +1 -0
  29. package/dist/constants/index.d.ts +4 -0
  30. package/dist/constants/index.d.ts.map +1 -1
  31. package/dist/constants/index.js +4 -0
  32. package/dist/constants/index.js.map +1 -1
  33. package/dist/constants/options.d.ts +10 -0
  34. package/dist/constants/options.d.ts.map +1 -1
  35. package/dist/constants/options.js +6 -0
  36. package/dist/constants/options.js.map +1 -1
  37. package/dist/constants/publish-attestations.d.ts +3 -0
  38. package/dist/constants/publish-attestations.d.ts.map +1 -0
  39. package/dist/constants/publish-attestations.js +13 -0
  40. package/dist/constants/publish-attestations.js.map +1 -0
  41. package/dist/constants/safety-telemetry-patterns.d.ts +9 -0
  42. package/dist/constants/safety-telemetry-patterns.d.ts.map +1 -0
  43. package/dist/constants/safety-telemetry-patterns.js +51 -0
  44. package/dist/constants/safety-telemetry-patterns.js.map +1 -0
  45. package/dist/doc-schemas/commissions.d.ts +1 -1
  46. package/dist/doc-schemas/content.d.ts +17 -0
  47. package/dist/doc-schemas/content.d.ts.map +1 -1
  48. package/dist/doc-schemas/content.js +8 -1
  49. package/dist/doc-schemas/content.js.map +1 -1
  50. package/dist/doc-schemas/media-assets.d.ts +16 -8
  51. package/dist/doc-schemas/media-assets.d.ts.map +1 -1
  52. package/dist/doc-schemas/media-assets.js +11 -8
  53. package/dist/doc-schemas/media-assets.js.map +1 -1
  54. package/dist/doc-schemas/messaging.d.ts +1 -0
  55. package/dist/doc-schemas/messaging.d.ts.map +1 -1
  56. package/dist/doc-schemas/messaging.js +7 -1
  57. package/dist/doc-schemas/messaging.js.map +1 -1
  58. package/dist/doc-schemas/ncii/allegations.d.ts +9 -0
  59. package/dist/doc-schemas/ncii/allegations.d.ts.map +1 -1
  60. package/dist/doc-schemas/ncii/cases.d.ts +6 -2
  61. package/dist/doc-schemas/ncii/cases.d.ts.map +1 -1
  62. package/dist/doc-schemas/ncii/holds.d.ts +4 -0
  63. package/dist/doc-schemas/ncii/holds.d.ts.map +1 -1
  64. package/dist/doc-schemas/ncii/removal.d.ts +4 -0
  65. package/dist/doc-schemas/ncii/removal.d.ts.map +1 -1
  66. package/dist/doc-schemas/ncii/requests.d.ts +5 -0
  67. package/dist/doc-schemas/ncii/requests.d.ts.map +1 -1
  68. package/dist/doc-schemas/operational.d.ts.map +1 -1
  69. package/dist/doc-schemas/operational.js +2 -1
  70. package/dist/doc-schemas/operational.js.map +1 -1
  71. package/dist/doc-schemas/registry.d.ts +151 -11
  72. package/dist/doc-schemas/registry.d.ts.map +1 -1
  73. package/dist/doc-schemas/safety/case.d.ts +7 -3
  74. package/dist/doc-schemas/safety/case.d.ts.map +1 -1
  75. package/dist/doc-schemas/safety/foundation.d.ts +16 -0
  76. package/dist/doc-schemas/safety/foundation.d.ts.map +1 -1
  77. package/dist/doc-schemas/safety/foundation.js +37 -0
  78. package/dist/doc-schemas/safety/foundation.js.map +1 -1
  79. package/dist/doc-schemas/safety/holds.d.ts +1 -0
  80. package/dist/doc-schemas/safety/holds.d.ts.map +1 -1
  81. package/dist/doc-schemas/safety/report.d.ts +13 -0
  82. package/dist/doc-schemas/safety/report.d.ts.map +1 -1
  83. package/dist/doc-schemas/social.d.ts +19 -0
  84. package/dist/doc-schemas/social.d.ts.map +1 -1
  85. package/dist/doc-schemas/social.js +9 -1
  86. package/dist/doc-schemas/social.js.map +1 -1
  87. package/dist/doc-schemas/user.d.ts +113 -4
  88. package/dist/doc-schemas/user.d.ts.map +1 -1
  89. package/dist/doc-schemas/user.js +13 -5
  90. package/dist/doc-schemas/user.js.map +1 -1
  91. package/dist/doc-schemas/work-project.d.ts +2 -2
  92. package/dist/index.d.ts +2 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/media/edge-serving-contract.d.ts +90 -0
  97. package/dist/media/edge-serving-contract.d.ts.map +1 -0
  98. package/dist/media/edge-serving-contract.js +15 -0
  99. package/dist/media/edge-serving-contract.js.map +1 -0
  100. package/dist/media/index.d.ts +1 -0
  101. package/dist/media/index.d.ts.map +1 -1
  102. package/dist/media/index.js +1 -0
  103. package/dist/media/index.js.map +1 -1
  104. package/dist/media/target-info.d.ts +20 -1
  105. package/dist/media/target-info.d.ts.map +1 -1
  106. package/dist/media/target-info.js +7 -6
  107. package/dist/media/target-info.js.map +1 -1
  108. package/dist/media/ttt-media-specs.d.ts.map +1 -1
  109. package/dist/media/ttt-media-specs.js +5 -0
  110. package/dist/media/ttt-media-specs.js.map +1 -1
  111. package/dist/report/chat-report-channel-ref.d.ts +18 -0
  112. package/dist/report/chat-report-channel-ref.d.ts.map +1 -0
  113. package/dist/report/chat-report-channel-ref.js +40 -0
  114. package/dist/report/chat-report-channel-ref.js.map +1 -0
  115. package/dist/report/index.d.ts +3 -0
  116. package/dist/report/index.d.ts.map +1 -0
  117. package/dist/report/index.js +3 -0
  118. package/dist/report/index.js.map +1 -0
  119. package/dist/report/report-config-values.d.ts +35 -0
  120. package/dist/report/report-config-values.d.ts.map +1 -0
  121. package/dist/report/report-config-values.js +163 -0
  122. package/dist/report/report-config-values.js.map +1 -0
  123. package/dist/schemas/admin.d.ts +60 -4
  124. package/dist/schemas/admin.d.ts.map +1 -1
  125. package/dist/schemas/admin.js +46 -10
  126. package/dist/schemas/admin.js.map +1 -1
  127. package/dist/schemas/atoms.d.ts +8 -0
  128. package/dist/schemas/atoms.d.ts.map +1 -1
  129. package/dist/schemas/atoms.js +15 -1
  130. package/dist/schemas/atoms.js.map +1 -1
  131. package/dist/schemas/commissions.d.ts +1 -1
  132. package/dist/schemas/craft-skills.d.ts +24 -1
  133. package/dist/schemas/craft-skills.d.ts.map +1 -1
  134. package/dist/schemas/craft-skills.js +1 -2
  135. package/dist/schemas/craft-skills.js.map +1 -1
  136. package/dist/schemas/ncii.d.ts +3 -0
  137. package/dist/schemas/ncii.d.ts.map +1 -1
  138. package/dist/schemas/notification.d.ts +18 -1
  139. package/dist/schemas/notification.d.ts.map +1 -1
  140. package/dist/schemas/notification.js +10 -7
  141. package/dist/schemas/notification.js.map +1 -1
  142. package/dist/schemas/safety.d.ts +7 -7
  143. package/dist/schemas/safety.d.ts.map +1 -1
  144. package/dist/schemas/safety.js +9 -14
  145. package/dist/schemas/safety.js.map +1 -1
  146. package/dist/schemas/users.d.ts +3 -0
  147. package/dist/schemas/users.d.ts.map +1 -1
  148. package/dist/schemas/users.js +12 -16
  149. package/dist/schemas/users.js.map +1 -1
  150. package/dist/schemas/work-project-management.d.ts +141 -8
  151. package/dist/schemas/work-project-management.d.ts.map +1 -1
  152. package/dist/schemas/work-project-management.js +9 -8
  153. package/dist/schemas/work-project-management.js.map +1 -1
  154. package/dist/types/admin-ops.d.ts +48 -0
  155. package/dist/types/admin-ops.d.ts.map +1 -0
  156. package/dist/types/admin-ops.js +7 -0
  157. package/dist/types/admin-ops.js.map +1 -0
  158. package/dist/types/index.d.ts +1 -0
  159. package/dist/types/index.d.ts.map +1 -1
  160. package/dist/types/index.js +1 -0
  161. package/dist/types/index.js.map +1 -1
  162. package/dist/types/social.d.ts +16 -5
  163. package/dist/types/social.d.ts.map +1 -1
  164. package/dist/upload-variables/create-admin-audition-variables.d.ts.map +1 -1
  165. package/dist/upload-variables/create-admin-audition-variables.js +2 -2
  166. package/dist/upload-variables/create-admin-audition-variables.js.map +1 -1
  167. package/dist/upload-variables/create-commission-variables.d.ts +20 -1
  168. package/dist/upload-variables/create-commission-variables.d.ts.map +1 -1
  169. package/dist/upload-variables/create-commission-variables.js +1 -2
  170. package/dist/upload-variables/create-commission-variables.js.map +1 -1
  171. package/dist/upload-variables/create-work-project-audition-variables.d.ts.map +1 -1
  172. package/dist/upload-variables/create-work-project-audition-variables.js +2 -2
  173. package/dist/upload-variables/create-work-project-audition-variables.js.map +1 -1
  174. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ import type { FileOrigin } from '../media/file-origin.js';
2
+ /** Every age/eligibility-gated capability id. Past-tense/imperative-neutral,
3
+ * dotted-namespace. Adding a value here REQUIRES adding it to CAPABILITY_REGISTRY
4
+ * (the exhaustive test enforces the 1:1). */
5
+ export type CapabilityId = 'account.becomeArtisan' | 'square.post' | 'square.acceptAgreements' | 'pledge.create' | 'messaging.guildInvite' | 'messaging.send' | 'messaging.attachment' | 'collaboration.commissionProposal' | 'collaboration.auditionEntry' | 'stakeShares.hold' | 'upload.origin';
6
+ /** The age requirement a capability imposes. */
7
+ export type CapabilityAgeRequirement = 'adult18Plus' | 'none';
8
+ export interface CapabilityDefinition {
9
+ id: CapabilityId;
10
+ /** Human-facing summary (admin/debug only; not user copy). */
11
+ description: string;
12
+ /** The age gate. `adult18Plus` capabilities are server-enforced; the claim is
13
+ * NOT the sole authority (accountCapabilityVersion + privateData re-check). */
14
+ ageRequirement: CapabilityAgeRequirement;
15
+ /** When true, BOTH ends must satisfy the requirement (no-minor-messaging). */
16
+ bilateral: boolean;
17
+ /** Upload origins this capability governs (for the startUpload gate). Empty
18
+ * unless the capability is `upload.origin`-adjacent. */
19
+ uploadOrigins: readonly FileOrigin[];
20
+ }
21
+ /** Upload origins that require an 18+ account to initiate (origin-level gate, not
22
+ * just the create callable — Phase 6 item 3). Origins tied to artisan-only
23
+ * surfaces (collaboration, hall publication, work assets) are 18+ because only
24
+ * 18+ accounts can be artisan creators / hold stake shares. */
25
+ export declare const ADULT_ONLY_UPLOAD_ORIGINS: readonly ["squareStreetz", "commission-posting", "commission-proposal", "audition-prompt", "audition-entry", "hallLibrary-cover-square", "hallLibrary-cover-poster", "hallLibrary-cover-cinematic", "realm-cover", "chapter-photo", "tune-track-photo", "tune-track-audio", "television-episode-photo", "television-episode-video", "guild-chat-message-attachment", "work-asset"];
26
+ export declare const CAPABILITY_REGISTRY: Record<CapabilityId, CapabilityDefinition>;
27
+ /** All capability ids (for exhaustiveness tests + iteration). */
28
+ export declare const ALL_CAPABILITY_IDS: CapabilityId[];
29
+ /** The actor's age-relevant view, derived server-side from privateData (the
30
+ * claim is corroborating, never sole authority). */
31
+ export interface AgeCapabilityContext {
32
+ is18Plus: boolean;
33
+ accountCapabilityVersion: number;
34
+ }
35
+ /** Does this context satisfy a capability's age requirement? */
36
+ export declare function contextSatisfies(capability: CapabilityId, ctx: AgeCapabilityContext): boolean;
37
+ /** Is the given upload origin 18+-gated? */
38
+ export declare function uploadOriginRequires18Plus(origin: string): boolean;
39
+ //# sourceMappingURL=capability-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/capability-registry.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;6CAE6C;AAC7C,MAAM,MAAM,YAAY,GACpB,uBAAuB,GACvB,aAAa,GACb,yBAAyB,GACzB,eAAe,GACf,uBAAuB,GACvB,gBAAgB,GAChB,sBAAsB,GACtB,kCAAkC,GAClC,6BAA6B,GAC7B,kBAAkB,GAClB,eAAe,CAAC;AAEpB,gDAAgD;AAChD,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,MAAM,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,YAAY,CAAC;IACjB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB;mFAC+E;IAC/E,cAAc,EAAE,wBAAwB,CAAC;IACzC,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;IACnB;4DACwD;IACxD,aAAa,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC;AAED;;;+DAG+D;AAC/D,eAAO,MAAM,yBAAyB,oXAiBI,CAAC;AAE3C,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,oBAAoB,CA8E1E,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,kBAAkB,EAAuC,YAAY,EAAE,CAAC;AAErF;oDACoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,YAAY,EACxB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAIT;AAED,4CAA4C;AAC5C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElE"}
@@ -0,0 +1,123 @@
1
+ // ============================================================================
2
+ // CAPABILITY REGISTRY — the ONE declaration of the age/eligibility capability
3
+ // model (Phase 6). Consolidated here 2026-07-13 from the former byte-for-byte
4
+ // mirrors in ttt-prod `src/lib/capabilities/capability-registry.ts` and
5
+ // `functions/src/shared/capability-registry.ts` (both trees now import this;
6
+ // the two-tree sync tests are deleted). Upload origins are compile-linked to
7
+ // the canonical `FileOrigin` union — an origin rename fails the build here.
8
+ // ============================================================================
9
+ /** Upload origins that require an 18+ account to initiate (origin-level gate, not
10
+ * just the create callable — Phase 6 item 3). Origins tied to artisan-only
11
+ * surfaces (collaboration, hall publication, work assets) are 18+ because only
12
+ * 18+ accounts can be artisan creators / hold stake shares. */
13
+ export const ADULT_ONLY_UPLOAD_ORIGINS = [
14
+ 'squareStreetz',
15
+ 'commission-posting',
16
+ 'commission-proposal',
17
+ 'audition-prompt',
18
+ 'audition-entry',
19
+ 'hallLibrary-cover-square',
20
+ 'hallLibrary-cover-poster',
21
+ 'hallLibrary-cover-cinematic',
22
+ 'realm-cover',
23
+ 'chapter-photo',
24
+ 'tune-track-photo',
25
+ 'tune-track-audio',
26
+ 'television-episode-photo',
27
+ 'television-episode-video',
28
+ 'guild-chat-message-attachment',
29
+ 'work-asset',
30
+ ];
31
+ export const CAPABILITY_REGISTRY = {
32
+ 'account.becomeArtisan': {
33
+ id: 'account.becomeArtisan',
34
+ description: 'Become an artisan creator (privilege + stake-share eligibility).',
35
+ ageRequirement: 'adult18Plus',
36
+ bilateral: false,
37
+ uploadOrigins: [],
38
+ },
39
+ 'square.post': {
40
+ id: 'square.post',
41
+ description: 'Create a Square Streetz post.',
42
+ ageRequirement: 'adult18Plus',
43
+ bilateral: false,
44
+ uploadOrigins: ['squareStreetz'],
45
+ },
46
+ 'square.acceptAgreements': {
47
+ id: 'square.acceptAgreements',
48
+ description: 'Accept the Square Streetz posting agreements.',
49
+ ageRequirement: 'adult18Plus',
50
+ bilateral: false,
51
+ uploadOrigins: [],
52
+ },
53
+ 'pledge.create': {
54
+ id: 'pledge.create',
55
+ description: 'Create a pledge / payment (18+ only, pledge-only payments).',
56
+ ageRequirement: 'adult18Plus',
57
+ bilateral: false,
58
+ uploadOrigins: [],
59
+ },
60
+ 'messaging.guildInvite': {
61
+ id: 'messaging.guildInvite',
62
+ description: 'Send a guild invite (opens an invite-conversation thread).',
63
+ ageRequirement: 'adult18Plus',
64
+ bilateral: true,
65
+ uploadOrigins: [],
66
+ },
67
+ 'messaging.send': {
68
+ id: 'messaging.send',
69
+ description: 'Send a chat / invite-thread message.',
70
+ ageRequirement: 'adult18Plus',
71
+ bilateral: true,
72
+ uploadOrigins: [],
73
+ },
74
+ 'messaging.attachment': {
75
+ id: 'messaging.attachment',
76
+ description: 'Attach media to a chat / invite message.',
77
+ ageRequirement: 'adult18Plus',
78
+ bilateral: true,
79
+ uploadOrigins: ['guild-chat-message-attachment'],
80
+ },
81
+ 'collaboration.commissionProposal': {
82
+ id: 'collaboration.commissionProposal',
83
+ description: 'Submit a commission proposal (artisan collaboration surface).',
84
+ ageRequirement: 'adult18Plus',
85
+ bilateral: false,
86
+ uploadOrigins: ['commission-proposal'],
87
+ },
88
+ 'collaboration.auditionEntry': {
89
+ id: 'collaboration.auditionEntry',
90
+ description: 'Submit an audition entry (artisan collaboration surface).',
91
+ ageRequirement: 'adult18Plus',
92
+ bilateral: false,
93
+ uploadOrigins: ['audition-entry'],
94
+ },
95
+ 'stakeShares.hold': {
96
+ id: 'stakeShares.hold',
97
+ description: 'Hold stake shares (guild membership / revenue).',
98
+ ageRequirement: 'adult18Plus',
99
+ bilateral: false,
100
+ uploadOrigins: [],
101
+ },
102
+ 'upload.origin': {
103
+ id: 'upload.origin',
104
+ description: 'Initiate an upload for an adult-only origin (startUpload gate).',
105
+ ageRequirement: 'adult18Plus',
106
+ bilateral: false,
107
+ uploadOrigins: ADULT_ONLY_UPLOAD_ORIGINS,
108
+ },
109
+ };
110
+ /** All capability ids (for exhaustiveness tests + iteration). */
111
+ export const ALL_CAPABILITY_IDS = Object.keys(CAPABILITY_REGISTRY);
112
+ /** Does this context satisfy a capability's age requirement? */
113
+ export function contextSatisfies(capability, ctx) {
114
+ const def = CAPABILITY_REGISTRY[capability];
115
+ if (def.ageRequirement === 'none')
116
+ return true;
117
+ return ctx.is18Plus === true;
118
+ }
119
+ /** Is the given upload origin 18+-gated? */
120
+ export function uploadOriginRequires18Plus(origin) {
121
+ return ADULT_ONLY_UPLOAD_ORIGINS.includes(origin);
122
+ }
123
+ //# sourceMappingURL=capability-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../src/capabilities/capability-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './capability-registry.js';
2
+ export * from './messaging-surfaces.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './capability-registry.js';
2
+ export * from './messaging-surfaces.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CapabilityId } from './capability-registry.js';
2
+ export interface MessagingSurface {
3
+ /** Stable id for the entry point. */
4
+ id: string;
5
+ /** The backend callable / worker that owns this surface. */
6
+ callable: string;
7
+ /** The messaging capability that gates it (MUST be a bilateral capability). */
8
+ capability: CapabilityId;
9
+ /** Whether the recipient is checked at GRANT time (e.g. invite creation). */
10
+ checksRecipientAtGrant: boolean;
11
+ /** Whether the recipient is (re)checked at SEND time. */
12
+ checksRecipientAtSend: boolean;
13
+ }
14
+ export declare const MESSAGING_SURFACES: readonly MessagingSurface[];
15
+ /** Surface ids (for the exhaustiveness test). */
16
+ export declare const ALL_MESSAGING_SURFACE_IDS: string[];
17
+ //# sourceMappingURL=messaging-surfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-surfaces.d.ts","sourceRoot":"","sources":["../../src/capabilities/messaging-surfaces.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,EAAE,YAAY,CAAC;IACzB,6EAA6E;IAC7E,sBAAsB,EAAE,OAAO,CAAC;IAChC,yDAAyD;IACzD,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAiChD,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,UAAsC,CAAC"}
@@ -0,0 +1,44 @@
1
+ // ============================================================================
2
+ // NO-MINOR-MESSAGING — the ONE route/entry-point inventory. Consolidated here
3
+ // 2026-07-13 from the former byte-for-byte mirrors in ttt-prod
4
+ // `src/lib/capabilities/messaging-surfaces.ts` and
5
+ // `functions/src/shared/messaging-surfaces.ts` (both trees now import this;
6
+ // the two-tree sync tests are deleted).
7
+ // ============================================================================
8
+ export const MESSAGING_SURFACES = [
9
+ {
10
+ id: 'guildInvite.send',
11
+ callable: 'inviteUserToGuild',
12
+ capability: 'messaging.guildInvite',
13
+ checksRecipientAtGrant: true,
14
+ checksRecipientAtSend: true,
15
+ },
16
+ {
17
+ // Realtime via the chat Worker DOs: the no-minor (18+) check is at CONNECT/GRANT time in
18
+ // `mintChatGrant` (`authorizeChannelScope` → assertCapability('messaging.send')) per peer, NOT
19
+ // re-checked per message; an access revoke closes the live socket. `sendGuildChatMessage` is
20
+ // admin-support-only now.
21
+ id: 'guildChat.send',
22
+ callable: 'mintChatGrant',
23
+ capability: 'messaging.send',
24
+ checksRecipientAtGrant: true,
25
+ checksRecipientAtSend: false,
26
+ },
27
+ {
28
+ id: 'guildChat.attachment',
29
+ callable: 'mintChatGrant',
30
+ capability: 'messaging.attachment',
31
+ checksRecipientAtGrant: true,
32
+ checksRecipientAtSend: false,
33
+ },
34
+ {
35
+ id: 'inviteConversation.send',
36
+ callable: 'mintChatGrant',
37
+ capability: 'messaging.send',
38
+ checksRecipientAtGrant: true,
39
+ checksRecipientAtSend: false,
40
+ },
41
+ ];
42
+ /** Surface ids (for the exhaustiveness test). */
43
+ export const ALL_MESSAGING_SURFACE_IDS = MESSAGING_SURFACES.map((s) => s.id);
44
+ //# sourceMappingURL=messaging-surfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-surfaces.js","sourceRoot":"","sources":["../../src/capabilities/messaging-surfaces.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,+DAA+D;AAC/D,mDAAmD;AACnD,4EAA4E;AAC5E,wCAAwC;AACxC,+EAA+E;AAiB/E,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,mBAAmB;QAC7B,UAAU,EAAE,uBAAuB;QACnC,sBAAsB,EAAE,IAAI;QAC5B,qBAAqB,EAAE,IAAI;KAC5B;IACD;QACE,yFAAyF;QACzF,+FAA+F;QAC/F,6FAA6F;QAC7F,0BAA0B;QAC1B,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,gBAAgB;QAC5B,sBAAsB,EAAE,IAAI;QAC5B,qBAAqB,EAAE,KAAK;KAC7B;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,sBAAsB;QAClC,sBAAsB,EAAE,IAAI;QAC5B,qBAAqB,EAAE,KAAK;KAC7B;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,QAAQ,EAAE,eAAe;QACzB,UAAU,EAAE,gBAAgB;QAC5B,sBAAsB,EAAE,IAAI;QAC5B,qBAAqB,EAAE,KAAK;KAC7B;CACO,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { UserAccountStatus } from '../doc-schemas/user.js';
2
+ import type { ReportDisposition } from '../doc-schemas/safety/foundation.js';
3
+ import type { BroadcastAudienceSelector } from '../schemas/notification.js';
4
+ /** Moderation status labels (user-management view, status badges). */
5
+ export declare const USER_ACCOUNT_STATUS_LABELS: Record<UserAccountStatus, string>;
6
+ /** Broadcast audience selector labels (announcement composer). */
7
+ export declare const BROADCAST_AUDIENCE_KIND_LABELS: Record<BroadcastAudienceSelector['kind'], string>;
8
+ /** Operator-settable report dispositions with their console copy. 'undetermined' is the
9
+ * initial state, never a settable target, so it carries no option entry. */
10
+ export declare const REPORT_DISPOSITION_OPTIONS: readonly {
11
+ value: Exclude<ReportDisposition, 'undetermined'>;
12
+ label: string;
13
+ description: string;
14
+ }[];
15
+ //# sourceMappingURL=admin-labels.d.ts.map
@@ -0,0 +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;AAE5E,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;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"}
@@ -0,0 +1,41 @@
1
+ // ============================================================================
2
+ // ADMIN-SURFACE DISPLAY LABELS — the ONE home for business display copy keyed
3
+ // by canonical ttt-core enums (Rule 36, extended 2026-07-13). Consolidated from
4
+ // the former component-local maps in ttt-prod (admin-user-management-view,
5
+ // admin-announcements-view, guided-resolution-flow). Any client (web, phone,
6
+ // TV, admin app) renders the same labels by importing these.
7
+ // ============================================================================
8
+ /** Moderation status labels (user-management view, status badges). */
9
+ export const USER_ACCOUNT_STATUS_LABELS = {
10
+ active: 'Active',
11
+ suspended: 'Suspended',
12
+ banned: 'Banned',
13
+ };
14
+ /** Broadcast audience selector labels (announcement composer). */
15
+ export const BROADCAST_AUDIENCE_KIND_LABELS = {
16
+ allActiveUsers: 'All active users',
17
+ allArtisans: 'All artisan creators',
18
+ explicitUids: 'Specific users (paste uids)',
19
+ workMembers: "A Work's guild members",
20
+ realmMembers: "A Realm's members",
21
+ };
22
+ /** Operator-settable report dispositions with their console copy. 'undetermined' is the
23
+ * initial state, never a settable target, so it carries no option entry. */
24
+ export const REPORT_DISPOSITION_OPTIONS = [
25
+ {
26
+ value: 'reportRequired',
27
+ label: 'Report required (NCMEC)',
28
+ description: 'Apparent CSAM — a report is legally required. Establishes actual knowledge + arms the clock.',
29
+ },
30
+ {
31
+ value: 'notRequired',
32
+ label: 'No report required',
33
+ description: 'No reporting obligation ever arose. Disallowed once there is a validated match.',
34
+ },
35
+ {
36
+ value: 'correctedNoApparentViolation',
37
+ label: 'False positive — correct it',
38
+ description: 'There was a triggering signal but on review it is a false positive.',
39
+ },
40
+ ];
41
+ //# sourceMappingURL=admin-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-labels.js","sourceRoot":"","sources":["../../src/constants/admin-labels.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,6DAA6D;AAC7D,+EAA+E;AAM/E,sEAAsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAsC;IAC3E,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,8BAA8B,GAAsD;IAC/F,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,sBAAsB;IACnC,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,wBAAwB;IACrC,YAAY,EAAE,mBAAmB;CAClC,CAAC;AAEF;4EAC4E;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GAIjC;IACJ;QACE,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,8FAA8F;KACjG;IACD;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,iFAAiF;KAC/F;IACD;QACE,KAAK,EAAE,8BAA8B;QACrC,KAAK,EAAE,6BAA6B;QACpC,WAAW,EAAE,qEAAqE;KACnF;CACF,CAAC"}
@@ -59,6 +59,15 @@ export declare const MAX_SAFETY_RESOLUTION_SUMMARY_LENGTH = 2000;
59
59
  export declare const MAX_SAFETY_ADMIN_NOTE_LENGTH = 4000;
60
60
  /** Reporter free-text narrative/comment (segregated private doc; never on the root). */
61
61
  export declare const MAX_REPORT_NARRATIVE_LENGTH = 4000;
62
+ /** The report DIALOG's comment field cap (the client-side compose bound — tighter than
63
+ * the server narrative cap above, which also absorbs upgrade concatenations). */
64
+ export declare const MAX_REPORT_COMMENT_LENGTH = 1000;
65
+ /** Minimum operator rationale/reason length on safety-console staged actions. */
66
+ export declare const MIN_SAFETY_RATIONALE_LENGTH = 10;
67
+ /** Broadcast explicitUids selector audience cap (schema + composer both derive). */
68
+ export declare const MAX_BROADCAST_EXPLICIT_UIDS = 2000;
69
+ export declare const STEP_UP_ENROLL_REQUIRED = "OPERATOR_STEP_UP_ENROLL_REQUIRED";
70
+ export declare const STEP_UP_REQUIRED = "OPERATOR_STEP_UP_REQUIRED";
62
71
  /** The frozen report-time captured text snapshot (edit-to-evade guard; NO PII). */
63
72
  export declare const MAX_REPORT_SNAPSHOT_TEXT_LENGTH = 4000;
64
73
  export declare const MAX_FUTURE_PLAN_TITLE_LENGTH = 200;
@@ -1 +1 @@
1
- {"version":3,"file":"business-admin.d.ts","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"business-admin.d.ts","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,19 @@ export const MAX_SAFETY_ADMIN_NOTE_LENGTH = 4000;
67
67
  // --- Report intake text caps ---
68
68
  /** Reporter free-text narrative/comment (segregated private doc; never on the root). */
69
69
  export const MAX_REPORT_NARRATIVE_LENGTH = 4000;
70
+ /** The report DIALOG's comment field cap (the client-side compose bound — tighter than
71
+ * the server narrative cap above, which also absorbs upgrade concatenations). */
72
+ export const MAX_REPORT_COMMENT_LENGTH = 1000;
73
+ /** Minimum operator rationale/reason length on safety-console staged actions. */
74
+ export const MIN_SAFETY_RATIONALE_LENGTH = 10;
75
+ /** Broadcast explicitUids selector audience cap (schema + composer both derive). */
76
+ export const MAX_BROADCAST_EXPLICIT_UIDS = 2000;
77
+ // --- Operator step-up sentinel error codes ---
78
+ // The two backend HttpsError messages the operator TOTP step-up throws; the frontend
79
+ // matches them to open the step-up dialog in ENROLL vs VERIFY mode. ONE declaration —
80
+ // both the callable (functions operatorStepUp.ts) and the frontend hook import these.
81
+ export const STEP_UP_ENROLL_REQUIRED = 'OPERATOR_STEP_UP_ENROLL_REQUIRED';
82
+ export const STEP_UP_REQUIRED = 'OPERATOR_STEP_UP_REQUIRED';
70
83
  /** The frozen report-time captured text snapshot (edit-to-evade guard; NO PII). */
71
84
  export const MAX_REPORT_SNAPSHOT_TEXT_LENGTH = 4000;
72
85
  // --- Admin console config-content text caps ---
@@ -1 +1 @@
1
- {"version":3,"file":"business-admin.js","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"business-admin.js","sourceRoot":"","sources":["../../src/constants/business-admin.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,11 @@ export declare const HALL_LIBRARY_PREFS_CAPS: {
71
71
  };
72
72
  /** Maximum length for an audition title. */
73
73
  export declare const MAX_AUDITION_TITLE_LENGTH = 150;
74
+ /** Curated-audition option-video batch bounds (the fixed 2..8 option count carried
75
+ * from the Create click through targetInfo/upload-variables to the create core's
76
+ * re-check). ONE declaration — every `.min()/.max()` derives from these. */
77
+ export declare const MIN_CURATED_AUDITION_OPTIONS = 2;
78
+ export declare const MAX_CURATED_AUDITION_OPTIONS = 8;
74
79
  /** Maximum length for an audition description. */
75
80
  export declare const MAX_AUDITION_DESCRIPTION_LENGTH = 1000;
76
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"business-content.d.ts","sourceRoot":"","sources":["../../src/constants/business-content.ts"],"names":[],"mappings":"AAWA,gGAAgG;AAChG,eAAO,MAAM,qCAAqC,MAAM,CAAC;AAIzD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AAEvF,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,MAAgC,CAAC;AAEzE,kEAAkE;AAClE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAIrD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;CASiB,CAAC;AAEvD;;;kEAGkE;AAClE,eAAO,MAAM,2BAA2B;;;;;;CAMG,CAAC;AAE5C;2FAC2F;AAC3F,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAI1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6BAA6B,QAEiC,CAAC;AAE5E,eAAO,MAAM,8BAA8B,QAMO,CAAC;AAInD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;CAKO,CAAC;AAI5C,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,kDAAkD;AAClD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,SAAU,CAAC;AAIzD,+CAA+C;AAC/C,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAI7C,iDAAiD;AACjD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kDAAkD;AAClD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,MAAM,CAAC"}
1
+ {"version":3,"file":"business-content.d.ts","sourceRoot":"","sources":["../../src/constants/business-content.ts"],"names":[],"mappings":"AAWA,gGAAgG;AAChG,eAAO,MAAM,qCAAqC,MAAM,CAAC;AAIzD,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AAEvF,iEAAiE;AACjE,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,6CAA6C;AAC7C,eAAO,MAAM,2BAA2B,MAAgC,CAAC;AAEzE,kEAAkE;AAClE,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAIrD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;CASiB,CAAC;AAEvD;;;kEAGkE;AAClE,eAAO,MAAM,2BAA2B;;;;;;CAMG,CAAC;AAE5C;2FAC2F;AAC3F,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAI1D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,6BAA6B,QAEiC,CAAC;AAE5E,eAAO,MAAM,8BAA8B,QAMO,CAAC;AAInD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;CAKO,CAAC;AAI5C,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;4EAE4E;AAC5E,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,kDAAkD;AAClD,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,SAAU,CAAC;AAIzD,+CAA+C;AAC/C,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAI7C,iDAAiD;AACjD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,kDAAkD;AAClD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,MAAM,CAAC"}
@@ -87,6 +87,11 @@ export const HALL_LIBRARY_PREFS_CAPS = {
87
87
  // --- Auditions ---
88
88
  /** Maximum length for an audition title. */
89
89
  export const MAX_AUDITION_TITLE_LENGTH = 150;
90
+ /** Curated-audition option-video batch bounds (the fixed 2..8 option count carried
91
+ * from the Create click through targetInfo/upload-variables to the create core's
92
+ * re-check). ONE declaration — every `.min()/.max()` derives from these. */
93
+ export const MIN_CURATED_AUDITION_OPTIONS = 2;
94
+ export const MAX_CURATED_AUDITION_OPTIONS = 8;
90
95
  /** Maximum length for an audition description. */
91
96
  export const MAX_AUDITION_DESCRIPTION_LENGTH = 1000;
92
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"business-content.js","sourceRoot":"","sources":["../../src/constants/business-content.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uBAAuB;AACvB,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,EACnC,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,gGAAgG;AAChG,MAAM,CAAC,MAAM,qCAAqC,GAAG,GAAG,CAAC;AAEzD,uCAAuC;AAEvC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAEvF,iEAAiE;AACjE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,6CAA6C;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE,kEAAkE;AAClE,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAErD,uFAAuF;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;IAC7B,SAAS,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IACnC,iBAAiB,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;IAC3C,4EAA4E;IAC5E,SAAS,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC;CACG,CAAC;AAEvD;;;kEAGkE;AAClE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE,mCAAmC;IAChD,OAAO,EAAE,0BAA0B;IACnC,YAAY,EAAE,2BAA2B;IACzC,kBAAkB,EAAE,iCAAiC;CACZ,CAAC;AAE5C;2FAC2F;AAC3F,MAAM,CAAC,MAAM,qCAAqC,GAAG,IAAI,CAAC;AAE1D,2DAA2D;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,oFAAoF;IACpF,yEAAyE,CAAC;AAE5E,MAAM,CAAC,MAAM,8BAA8B,GACzC,wFAAwF;IACxF,yFAAyF;IACzF,0FAA0F;IAC1F,uFAAuF;IACvF,0FAA0F;IAC1F,gDAAgD,CAAC;AAEnD,qGAAqG;AAErG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,GAAG;IACjB,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,EAAE;CACuB,CAAC;AAE5C,oBAAoB;AAEpB,4CAA4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,kDAAkD;AAClD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,OAAO,CAAC;AAEzD,sCAAsC;AAEtC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,yEAAyE;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,6BAA6B;AAE7B,iDAAiD;AACjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,kDAAkD;AAClD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAErD,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"business-content.js","sourceRoot":"","sources":["../../src/constants/business-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CraftSkillKind } from '../doc-schemas/user.js';
2
+ /** Bump when any VERBATIM statement below changes; the version is recorded on every
3
+ * craft-skill doc so we know which wording the user agreed to. */
4
+ export declare const CRAFT_SKILL_STATEMENT_VERSION = 1;
5
+ export declare const CRAFT_SKILL_KIND_LABELS: Record<CraftSkillKind, string>;
6
+ /** One-line helper shown under each kind option in the picker. */
7
+ export declare const CRAFT_SKILL_KIND_DESCRIPTIONS: Record<CraftSkillKind, string>;
8
+ export declare const CRAFT_SKILL_STATEMENTS: Record<CraftSkillKind, string>;
9
+ export declare const CRAFT_SKILL_KIND_ORDER: CraftSkillKind[];
10
+ //# sourceMappingURL=craft-skill-statements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-skill-statements.d.ts","sourceRoot":"","sources":["../../src/constants/craft-skill-statements.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D;kEACkE;AAClE,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIlE,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAOjE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAA8C,CAAC"}
@@ -0,0 +1,33 @@
1
+ // ============================================================================
2
+ // CRAFT-SKILL ATTESTATION — the ONE home for the three-kind upload flow's
3
+ // statement version, VERBATIM agreement statements (v1, wording agreed with DJ
4
+ // 2026-07-04), kind labels/descriptions, and picker order. Consolidated here
5
+ // 2026-07-13 from the former "keep identical" pair in ttt-prod
6
+ // `src/lib/craft-skill-statements.ts` (live frontend copy) and
7
+ // `functions/src/craft-skills/craftSkillUploadContract.ts` (dead backend
8
+ // mirror). The client displays these and the user must explicitly agree before
9
+ // the file picker unlocks; the backend records only `{ statementKind,
10
+ // statementVersion, agreedAt }` and validates the version against
11
+ // CRAFT_SKILL_STATEMENT_VERSION.
12
+ // ============================================================================
13
+ /** Bump when any VERBATIM statement below changes; the version is recorded on every
14
+ * craft-skill doc so we know which wording the user agreed to. */
15
+ export const CRAFT_SKILL_STATEMENT_VERSION = 1;
16
+ export const CRAFT_SKILL_KIND_LABELS = {
17
+ original: 'My own work',
18
+ mimicOnTtt: 'Mimicked work from TTT Productions',
19
+ mimicOffTtt: 'Mimicked work from outside TTT Productions',
20
+ };
21
+ /** One-line helper shown under each kind option in the picker. */
22
+ export const CRAFT_SKILL_KIND_DESCRIPTIONS = {
23
+ original: 'Entirely your own original creation.',
24
+ mimicOnTtt: 'Your performance or recreation of another member’s TTT work (link the source).',
25
+ mimicOffTtt: 'A cover or recreation of work from outside TTT (including public-domain works).',
26
+ };
27
+ export const CRAFT_SKILL_STATEMENTS = {
28
+ original: 'I certify this craft skill is entirely my own original creation and I own all rights to it. No part of it copies or imitates another person’s work.',
29
+ mimicOnTtt: 'This craft skill is my performance or recreation of work created by a member of the TTT Productions community, shown here to demonstrate my abilities. I have linked the original artisan or work below. The original work belongs to its creator, and I claim no ownership of it.',
30
+ mimicOffTtt: 'This craft skill is my performance or recreation of a work that did not originate on TTT Productions (including public-domain or out-of-copyright works), shown only to demonstrate my abilities. The underlying work belongs to its owner, and I claim no ownership of it. I understand TTT Productions may remove this content at any time, including in response to a rights-holder request.',
31
+ };
32
+ export const CRAFT_SKILL_KIND_ORDER = ['original', 'mimicOnTtt', 'mimicOffTtt'];
33
+ //# sourceMappingURL=craft-skill-statements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-skill-statements.js","sourceRoot":"","sources":["../../src/constants/craft-skill-statements.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,0EAA0E;AAC1E,+EAA+E;AAC/E,6EAA6E;AAC7E,+DAA+D;AAC/D,+DAA+D;AAC/D,yEAAyE;AACzE,+EAA+E;AAC/E,sEAAsE;AACtE,kEAAkE;AAClE,iCAAiC;AACjC,+EAA+E;AAI/E;kEACkE;AAClE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,uBAAuB,GAAmC;IACrE,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,6BAA6B,GAAmC;IAC3E,QAAQ,EAAE,sCAAsC;IAChD,UAAU,EAAE,gFAAgF;IAC5F,WAAW,EAAE,iFAAiF;CAC/F,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,QAAQ,EACN,qJAAqJ;IACvJ,UAAU,EACR,oRAAoR;IACtR,WAAW,EACT,iYAAiY;CACpY,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAqB,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC"}
@@ -3,6 +3,10 @@ export * from './business.js';
3
3
  export * from './chat.js';
4
4
  export * from './moderation.js';
5
5
  export * from './options.js';
6
+ export * from './admin-labels.js';
7
+ export * from './craft-skill-statements.js';
8
+ export * from './publish-attestations.js';
9
+ export * from './safety-telemetry-patterns.js';
6
10
  export * from './pagination.js';
7
11
  export * from './release-flags.js';
8
12
  export * from './retention.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -3,6 +3,10 @@ export * from './business.js';
3
3
  export * from './chat.js';
4
4
  export * from './moderation.js';
5
5
  export * from './options.js';
6
+ export * from './admin-labels.js';
7
+ export * from './craft-skill-statements.js';
8
+ export * from './publish-attestations.js';
9
+ export * from './safety-telemetry-patterns.js';
6
10
  export * from './pagination.js';
7
11
  export * from './release-flags.js';
8
12
  export * from './retention.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
@@ -15,6 +15,16 @@ export declare const TRADE_PROFESSION_OPTIONS: readonly ["Actor", "Voice Actor",
15
15
  * curated discipline order (Performance → Writing → Visual → Film → Audio); not sorted.
16
16
  */
17
17
  export declare const CRAFT_SKILL_TAG_OPTIONS: readonly ["acting", "voice-over", "singing", "rapping", "instrumental-performance", "dance-choreography", "stand-up-sketch-comedy", "writing-storytelling", "songwriting", "poetry-spoken-word", "drawing-illustration", "painting", "animation", "graphic-design", "photography", "cinematography-camera", "video-editing", "visual-effects", "directing", "costume-makeup", "set-prop-design", "music-production", "composing-scoring", "sound-design"];
18
+ /** The canonical tag-ID type — every tags field/param derives from this, never `string`. */
19
+ export type CraftSkillTagId = (typeof CRAFT_SKILL_TAG_OPTIONS)[number];
20
+ /** The canonical trade-profession ID type. */
21
+ export type TradeProfessionId = (typeof TRADE_PROFESSION_OPTIONS)[number];
22
+ /** TRADE_PROFESSION_OPTIONS as a non-empty tuple for `z.enum(...)` consumers — the ONE
23
+ * cast, here beside the declaration (never re-cast locally in schema files). */
24
+ export declare const TRADE_PROFESSION_VALUES: [TradeProfessionId, ...TradeProfessionId[]];
25
+ /** The same allowlist as a non-empty tuple for `z.enum(...)` consumers — the ONE cast,
26
+ * here beside the declaration (schema files import this, never re-cast locally). */
27
+ export declare const CRAFT_SKILL_TAG_VALUES: [CraftSkillTagId, ...CraftSkillTagId[]];
18
28
  /** Human display labels for each craft-skill tag ID. Keyed by the machine-safe ID. */
19
29
  export declare const CRAFT_SKILL_TAG_LABELS: Record<(typeof CRAFT_SKILL_TAG_OPTIONS)[number], string>;
20
30
  /**
@@ -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,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;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"}
@@ -74,6 +74,12 @@ export const CRAFT_SKILL_TAG_OPTIONS = [
74
74
  'composing-scoring',
75
75
  'sound-design',
76
76
  ];
77
+ /** TRADE_PROFESSION_OPTIONS as a non-empty tuple for `z.enum(...)` consumers — the ONE
78
+ * cast, here beside the declaration (never re-cast locally in schema files). */
79
+ export const TRADE_PROFESSION_VALUES = TRADE_PROFESSION_OPTIONS;
80
+ /** The same allowlist as a non-empty tuple for `z.enum(...)` consumers — the ONE cast,
81
+ * here beside the declaration (schema files import this, never re-cast locally). */
82
+ export const CRAFT_SKILL_TAG_VALUES = CRAFT_SKILL_TAG_OPTIONS;
77
83
  /** Human display labels for each craft-skill tag ID. Keyed by the machine-safe ID. */
78
84
  export const CRAFT_SKILL_TAG_LABELS = {
79
85
  'acting': 'Acting',
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAIrE,sCAAsC;AACtC,yFAAyF;AACzF,+FAA+F;AAE/F,gCAAgC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,OAAO;IACP,aAAa;IACb,QAAQ;IACR,UAAU;IACV,wBAAwB;IACxB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,UAAU;IACV,QAAQ;IACR,kBAAkB;IAClB,YAAY;IACZ,yBAAyB;IACzB,qBAAqB;IACrB,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,gBAAgB;CACR,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,SAAS;IACT,0BAA0B;IAC1B,oBAAoB;IACpB,wBAAwB;IACxB,UAAU;IACV,sBAAsB;IACtB,aAAa;IACb,oBAAoB;IACpB,cAAc;IACd,sBAAsB;IACtB,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,QAAQ;IACR,kBAAkB;IAClB,mBAAmB;IACnB,cAAc;CACN,CAAC;AAEX,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAA6D;IAC9F,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,0BAA0B,EAAE,0BAA0B;IACtD,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,aAAa;IAC5B,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,UAAU,EAAE,UAAU;IACtB,WAAW,EAAE,WAAW;IACxB,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,WAAW,EAAE,WAAW;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,kBAAkB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,cAAc;CAC/B,CAAC;AAEF,sCAAsC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,KAAK,EAAE;QACL,WAAW;QACX,QAAQ;QACR,OAAO;QACP,SAAS;QACT,oBAAoB;QACpB,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;QACR,eAAe;QACf,QAAQ;QACR,UAAU;KACX;IACD,KAAK,EAAE;QACL,yBAAyB;QACzB,OAAO;QACP,WAAW;QACX,SAAS;QACT,YAAY;QACZ,MAAM;QACN,eAAe;QACf,MAAM;QACN,OAAO;QACP,SAAS;QACT,KAAK;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,oBAAoB;KACrB;IACD,UAAU,EAAE;QACV,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,aAAa;QACb,OAAO;QACP,SAAS;QACT,eAAe;QACf,aAAa;QACb,SAAS;QACT,SAAS;QACT,QAAQ;QACR,kBAAkB;QAClB,QAAQ;QACR,WAAW;QACX,UAAU;KACX;CACO,CAAC;AAEX,sDAAsD;AAEtD,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAiE;IAC3F,aAAa,EAAE;QACb,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,0BAA0B;KACxC;IACD,WAAW,EAAE;QACX,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,kCAAkC;KAChD;IACD,aAAa,EAAE;QACb,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,sCAAsC;KACpD;CACF,CAAC;AAEF,oEAAoE;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAoE;IACjG,KAAK,EAAE;QACL,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,wBAAwB;KACtC;IACD,KAAK,EAAE;QACL,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB;KACvC;IACD,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,sBAAsB;KACpC;CACF,CAAC;AAEF,uBAAuB;AAEvB,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;QACxE,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;KAC1E;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;QACxE,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;KAC1E;IACD,iBAAiB,EAAE;QACjB,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;QACxE,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;QACzE,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,EAAE;QAChG,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,KAAK,EAAE;KAC9F;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;QACxE,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;QACzE,kBAAkB,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE;QAC/F,iBAAiB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,EAAE;KAC7F;CACO,CAAC;AAEX,kDAAkD;AAClD,MAAM,CAAC,MAAM,yBAAyB,GAGlC;IACF,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;IACxE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE;IACvE,aAAa,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE;CACrF,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/constants/options.ts"],"names":[],"mappings":"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"}