@ttt-productions/ttt-core 0.14.2 → 0.14.3

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 (52) hide show
  1. package/dist/doc-schemas/chat-sync.d.ts +173 -0
  2. package/dist/doc-schemas/chat-sync.d.ts.map +1 -0
  3. package/dist/doc-schemas/chat-sync.js +130 -0
  4. package/dist/doc-schemas/chat-sync.js.map +1 -0
  5. package/dist/doc-schemas/index.d.ts +2 -0
  6. package/dist/doc-schemas/index.d.ts.map +1 -1
  7. package/dist/doc-schemas/index.js +2 -0
  8. package/dist/doc-schemas/index.js.map +1 -1
  9. package/dist/doc-schemas/media-assets.d.ts +2 -2
  10. package/dist/doc-schemas/notification-ledger.d.ts +78 -0
  11. package/dist/doc-schemas/notification-ledger.d.ts.map +1 -0
  12. package/dist/doc-schemas/notification-ledger.js +63 -0
  13. package/dist/doc-schemas/notification-ledger.js.map +1 -0
  14. package/dist/doc-schemas/notifications.d.ts +4 -0
  15. package/dist/doc-schemas/notifications.d.ts.map +1 -1
  16. package/dist/doc-schemas/notifications.js +5 -0
  17. package/dist/doc-schemas/notifications.js.map +1 -1
  18. package/dist/doc-schemas/registry.d.ts +243 -1
  19. package/dist/doc-schemas/registry.d.ts.map +1 -1
  20. package/dist/doc-schemas/registry.js +13 -0
  21. package/dist/doc-schemas/registry.js.map +1 -1
  22. package/dist/doc-schemas/user.d.ts +6 -0
  23. package/dist/doc-schemas/user.d.ts.map +1 -1
  24. package/dist/doc-schemas/user.js +7 -0
  25. package/dist/doc-schemas/user.js.map +1 -1
  26. package/dist/doc-schemas/work-project.d.ts +1 -0
  27. package/dist/doc-schemas/work-project.d.ts.map +1 -1
  28. package/dist/doc-schemas/work-project.js +9 -0
  29. package/dist/doc-schemas/work-project.js.map +1 -1
  30. package/dist/ids/chat-ids.d.ts +67 -0
  31. package/dist/ids/chat-ids.d.ts.map +1 -0
  32. package/dist/ids/chat-ids.js +119 -0
  33. package/dist/ids/chat-ids.js.map +1 -0
  34. package/dist/ids/index.d.ts +2 -0
  35. package/dist/ids/index.d.ts.map +1 -0
  36. package/dist/ids/index.js +2 -0
  37. package/dist/ids/index.js.map +1 -0
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/paths/collections.d.ts +9 -0
  43. package/dist/paths/collections.d.ts.map +1 -1
  44. package/dist/paths/collections.js +12 -0
  45. package/dist/paths/collections.js.map +1 -1
  46. package/dist/paths/path-builders.d.ts +9 -0
  47. package/dist/paths/path-builders.d.ts.map +1 -1
  48. package/dist/paths/path-builders.js +11 -0
  49. package/dist/paths/path-builders.js.map +1 -1
  50. package/dist/types/audit.d.ts +1 -1
  51. package/dist/types/audit.d.ts.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,173 @@
1
+ import { z } from 'zod';
2
+ export declare const ChatChannelAuthProjectionSchema: z.ZodObject<{
3
+ channelRefScope: z.ZodEnum<{
4
+ channel: "channel";
5
+ invite: "invite";
6
+ }>;
7
+ workProjectId: z.ZodNullable<z.ZodString>;
8
+ guildChatChannelId: z.ZodNullable<z.ZodString>;
9
+ guildInviteId: z.ZodNullable<z.ZodString>;
10
+ uid: z.ZodString;
11
+ channelKey: z.ZodString;
12
+ channelAuthState: z.ZodEnum<{
13
+ authorized: "authorized";
14
+ removed: "removed";
15
+ }>;
16
+ channelAuthVersion: z.ZodNumber;
17
+ inputFingerprint: z.ZodString;
18
+ updatedAt: z.ZodNumber;
19
+ }, z.core.$strip>;
20
+ export type ChatChannelAuthProjection = z.infer<typeof ChatChannelAuthProjectionSchema>;
21
+ export declare const ChatScopeDegradedSchema: z.ZodObject<{
22
+ scopeKey: z.ZodString;
23
+ scopeKind: z.ZodEnum<{
24
+ channel: "channel";
25
+ memberInWork: "memberInWork";
26
+ }>;
27
+ workProjectId: z.ZodNullable<z.ZodString>;
28
+ guildChatChannelId: z.ZodNullable<z.ZodString>;
29
+ guildInviteId: z.ZodNullable<z.ZodString>;
30
+ uid: z.ZodNullable<z.ZodString>;
31
+ unresolvedCauseCount: z.ZodNumber;
32
+ updatedAt: z.ZodNumber;
33
+ }, z.core.$strip>;
34
+ export type ChatScopeDegraded = z.infer<typeof ChatScopeDegradedSchema>;
35
+ export declare const ChatScopeDegradedCauseSchema: z.ZodObject<{
36
+ causeId: z.ZodString;
37
+ kind: z.ZodEnum<{
38
+ syncEvent: "syncEvent";
39
+ fanoutJob: "fanoutJob";
40
+ }>;
41
+ ref: z.ZodString;
42
+ deadLetteredAt: z.ZodNumber;
43
+ }, z.core.$strip>;
44
+ export type ChatScopeDegradedCause = z.infer<typeof ChatScopeDegradedCauseSchema>;
45
+ export declare const ChatSyncEventSchema: z.ZodObject<{
46
+ eventId: z.ZodString;
47
+ targetDo: z.ZodString;
48
+ kind: z.ZodEnum<{
49
+ config: "config";
50
+ channelAuth: "channelAuth";
51
+ accountAccess: "accountAccess";
52
+ attachmentFlip: "attachmentFlip";
53
+ serverMessage: "serverMessage";
54
+ }>;
55
+ version: z.ZodNumber;
56
+ payload: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
57
+ tombstone: z.ZodOptional<z.ZodBoolean>;
58
+ payloadHash: z.ZodString;
59
+ status: z.ZodEnum<{
60
+ pending: "pending";
61
+ delivered: "delivered";
62
+ deadLetter: "deadLetter";
63
+ }>;
64
+ attemptCount: z.ZodNumber;
65
+ nextAttemptAt: z.ZodNumber;
66
+ lastError: z.ZodNullable<z.ZodString>;
67
+ createdAt: z.ZodNumber;
68
+ deliveredResult: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
69
+ deliveredAt: z.ZodNullable<z.ZodNumber>;
70
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
71
+ expireAt: z.ZodOptional<z.ZodUnknown>;
72
+ }, z.core.$strip>;
73
+ export type ChatSyncEvent = z.infer<typeof ChatSyncEventSchema>;
74
+ export declare const ChatSyncFanoutJobSchema: z.ZodObject<{
75
+ jobId: z.ZodString;
76
+ selectorKind: z.ZodEnum<{
77
+ channelMembers: "channelMembers";
78
+ workChannelsForUser: "workChannelsForUser";
79
+ policyEditAffectedUsers: "policyEditAffectedUsers";
80
+ }>;
81
+ selectorArgs: z.ZodObject<{
82
+ workProjectId: z.ZodOptional<z.ZodString>;
83
+ channelKey: z.ZodOptional<z.ZodString>;
84
+ uid: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strip>;
86
+ causeVersion: z.ZodNumber;
87
+ cursor: z.ZodObject<{
88
+ pageIndex: z.ZodNumber;
89
+ lastDocId: z.ZodNullable<z.ZodString>;
90
+ }, z.core.$strip>;
91
+ revision: z.ZodNumber;
92
+ status: z.ZodEnum<{
93
+ pending: "pending";
94
+ complete: "complete";
95
+ deadLetter: "deadLetter";
96
+ }>;
97
+ attemptCount: z.ZodNumber;
98
+ nextAttemptAt: z.ZodNumber;
99
+ lastError: z.ZodNullable<z.ZodString>;
100
+ createdAt: z.ZodNumber;
101
+ completedAt: z.ZodNullable<z.ZodNumber>;
102
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
103
+ expireAt: z.ZodOptional<z.ZodUnknown>;
104
+ }, z.core.$strip>;
105
+ export type ChatSyncFanoutJob = z.infer<typeof ChatSyncFanoutJobSchema>;
106
+ export declare const ChatMessageOutboxSchema: z.ZodObject<{
107
+ commandId: z.ZodString;
108
+ kind: z.ZodEnum<{
109
+ userMsg: "userMsg";
110
+ systemMsg: "systemMsg";
111
+ attachmentPlaceholder: "attachmentPlaceholder";
112
+ }>;
113
+ threadRef: z.ZodString;
114
+ payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
115
+ payloadVersion: z.ZodNumber;
116
+ status: z.ZodEnum<{
117
+ pending: "pending";
118
+ deadLetter: "deadLetter";
119
+ applied: "applied";
120
+ }>;
121
+ attemptCount: z.ZodNumber;
122
+ nextAttemptAt: z.ZodNumber;
123
+ lastError: z.ZodNullable<z.ZodString>;
124
+ createdAt: z.ZodNumber;
125
+ appliedAt: z.ZodNullable<z.ZodNumber>;
126
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
127
+ expireAt: z.ZodOptional<z.ZodUnknown>;
128
+ }, z.core.$strip>;
129
+ export type ChatMessageOutbox = z.infer<typeof ChatMessageOutboxSchema>;
130
+ export declare const ChatAdminActionCommandSchema: z.ZodObject<{
131
+ requestId: z.ZodString;
132
+ actorUid: z.ZodString;
133
+ actorMode: z.ZodEnum<{
134
+ adminReview: "adminReview";
135
+ adminOverride: "adminOverride";
136
+ }>;
137
+ systemRole: z.ZodEnum<{
138
+ admin: "admin";
139
+ jrAdmin: "jrAdmin";
140
+ }>;
141
+ channelRef: z.ZodRecord<z.ZodString, z.ZodUnknown>;
142
+ messageSeq: z.ZodNumber;
143
+ action: z.ZodEnum<{
144
+ hide: "hide";
145
+ delete: "delete";
146
+ }>;
147
+ caseId: z.ZodString;
148
+ reason: z.ZodString;
149
+ expectedMessageRevision: z.ZodNumber;
150
+ payloadHash: z.ZodString;
151
+ state: z.ZodEnum<{
152
+ failed: "failed";
153
+ deadLetter: "deadLetter";
154
+ applied: "applied";
155
+ queued: "queued";
156
+ delivering: "delivering";
157
+ }>;
158
+ attemptCount: z.ZodNumber;
159
+ nextAttemptAt: z.ZodNumber;
160
+ lastError: z.ZodNullable<z.ZodString>;
161
+ result: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
162
+ doRevisionId: z.ZodNullable<z.ZodString>;
163
+ terminalFailureGeneration: z.ZodNumber;
164
+ createdAt: z.ZodNumber;
165
+ appliedAt: z.ZodNullable<z.ZodNumber>;
166
+ failedAt: z.ZodNullable<z.ZodNumber>;
167
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
168
+ reconciled: z.ZodBoolean;
169
+ reconciledAt: z.ZodNullable<z.ZodNumber>;
170
+ expireAt: z.ZodOptional<z.ZodUnknown>;
171
+ }, z.core.$strip>;
172
+ export type ChatAdminActionCommand = z.infer<typeof ChatAdminActionCommandSchema>;
173
+ //# sourceMappingURL=chat-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-sync.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/chat-sync.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;iBAW1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAIxF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAUlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,4BAA4B;;;;;;;;iBAKvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAGlF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;iBAclC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAKxE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
@@ -0,0 +1,130 @@
1
+ // Chat realtime SYNC / projection / command Firestore schemas (chat-edge-rebuild P1).
2
+ // Frozen field lists come from IMPLEMENTATION_MATRIX.md "Chat sync / projection /
3
+ // commands (Firestore side)". All of these collections are Admin-SDK-only
4
+ // (`allow read, write: if false`). Per the TTT timestamp convention every time
5
+ // field is epoch-ms `number`; the SINGLE exception is the native-TTL `expireAt`,
6
+ // which is a real Firestore `Timestamp` (modeled as `unknown` so the drift-check
7
+ // does not false-flag a Timestamp object against `z.number()`).
8
+ import { z } from 'zod';
9
+ /** Native-TTL field — a real Firestore Timestamp (NOT epoch-ms). Absent until the terminal that sets TTL. */
10
+ const expireAtField = z.unknown().optional();
11
+ // ── chatChannelAuthProjections/{authPairKey} ────────────────────────────────
12
+ // Per-(user, channel) authorization FACT. Absent ⇒ removed/deny (fail-closed).
13
+ export const ChatChannelAuthProjectionSchema = z.object({
14
+ channelRefScope: z.enum(['channel', 'invite']),
15
+ workProjectId: z.string().nullable(),
16
+ guildChatChannelId: z.string().nullable(),
17
+ guildInviteId: z.string().nullable(),
18
+ uid: z.string(),
19
+ channelKey: z.string(),
20
+ channelAuthState: z.enum(['authorized', 'removed']),
21
+ channelAuthVersion: z.number(),
22
+ inputFingerprint: z.string(),
23
+ updatedAt: z.number(),
24
+ });
25
+ // ── chatScopeDegraded/{scopeKey} (+ causes/{causeId}) ───────────────────────
26
+ // Exists IFF unresolvedCauseCount > 0. Grant mints fail closed while it exists.
27
+ export const ChatScopeDegradedSchema = z.object({
28
+ scopeKey: z.string(),
29
+ scopeKind: z.enum(['channel', 'memberInWork']),
30
+ // channel scope carries the channelRef tuple; memberInWork carries {uid, workProjectId}.
31
+ workProjectId: z.string().nullable(),
32
+ guildChatChannelId: z.string().nullable(),
33
+ guildInviteId: z.string().nullable(),
34
+ uid: z.string().nullable(),
35
+ unresolvedCauseCount: z.number(),
36
+ updatedAt: z.number(),
37
+ });
38
+ export const ChatScopeDegradedCauseSchema = z.object({
39
+ causeId: z.string(),
40
+ kind: z.enum(['syncEvent', 'fanoutJob']),
41
+ ref: z.string(),
42
+ deadLetteredAt: z.number(),
43
+ });
44
+ // ── chatSyncEvents/{eventId} ────────────────────────────────────────────────
45
+ export const ChatSyncEventSchema = z.object({
46
+ eventId: z.string(),
47
+ targetDo: z.string(),
48
+ kind: z.enum(['channelAuth', 'accountAccess', 'config', 'attachmentFlip', 'serverMessage']),
49
+ version: z.number(),
50
+ payload: z.record(z.string(), z.unknown()).nullable(),
51
+ tombstone: z.boolean().optional(),
52
+ payloadHash: z.string(),
53
+ status: z.enum(['pending', 'delivered', 'deadLetter']),
54
+ attemptCount: z.number(),
55
+ nextAttemptAt: z.number(),
56
+ lastError: z.string().nullable(),
57
+ createdAt: z.number(),
58
+ deliveredResult: z.record(z.string(), z.unknown()).nullable(),
59
+ deliveredAt: z.number().nullable(),
60
+ deadLetteredAt: z.number().nullable(),
61
+ expireAt: expireAtField,
62
+ });
63
+ // ── chatSyncFanoutJobs/{jobId} ──────────────────────────────────────────────
64
+ export const ChatSyncFanoutJobSchema = z.object({
65
+ jobId: z.string(),
66
+ selectorKind: z.enum(['channelMembers', 'workChannelsForUser', 'policyEditAffectedUsers']),
67
+ selectorArgs: z.object({
68
+ workProjectId: z.string().optional(),
69
+ channelKey: z.string().optional(),
70
+ uid: z.string().optional(),
71
+ }),
72
+ causeVersion: z.number(),
73
+ cursor: z.object({ pageIndex: z.number(), lastDocId: z.string().nullable() }),
74
+ revision: z.number(),
75
+ status: z.enum(['pending', 'complete', 'deadLetter']),
76
+ attemptCount: z.number(),
77
+ nextAttemptAt: z.number(),
78
+ lastError: z.string().nullable(),
79
+ createdAt: z.number(),
80
+ completedAt: z.number().nullable(),
81
+ deadLetteredAt: z.number().nullable(),
82
+ expireAt: expireAtField,
83
+ });
84
+ // ── chatMessageOutbox/{commandId} ───────────────────────────────────────────
85
+ export const ChatMessageOutboxSchema = z.object({
86
+ commandId: z.string(),
87
+ kind: z.enum(['userMsg', 'systemMsg', 'attachmentPlaceholder']),
88
+ threadRef: z.string(),
89
+ payload: z.record(z.string(), z.unknown()),
90
+ payloadVersion: z.number(),
91
+ status: z.enum(['pending', 'applied', 'deadLetter']),
92
+ attemptCount: z.number(),
93
+ nextAttemptAt: z.number(),
94
+ lastError: z.string().nullable(),
95
+ createdAt: z.number(),
96
+ appliedAt: z.number().nullable(),
97
+ deadLetteredAt: z.number().nullable(),
98
+ expireAt: expireAtField,
99
+ });
100
+ // ── chatAdminActionCommands/{requestId} ─────────────────────────────────────
101
+ // `requestId` IS the doc id + DO dedup key. `delivering` is NOT a lease (it sets
102
+ // nextAttemptAt = now + DELIVERY_TIMEOUT). terminalFailureGeneration default 0.
103
+ export const ChatAdminActionCommandSchema = z.object({
104
+ requestId: z.string(),
105
+ actorUid: z.string(),
106
+ actorMode: z.enum(['adminReview', 'adminOverride']),
107
+ systemRole: z.enum(['admin', 'jrAdmin']),
108
+ channelRef: z.record(z.string(), z.unknown()),
109
+ messageSeq: z.number(),
110
+ action: z.enum(['hide', 'delete']),
111
+ caseId: z.string(),
112
+ reason: z.string(),
113
+ expectedMessageRevision: z.number(),
114
+ payloadHash: z.string(),
115
+ state: z.enum(['queued', 'delivering', 'applied', 'failed', 'deadLetter']),
116
+ attemptCount: z.number(),
117
+ nextAttemptAt: z.number(),
118
+ lastError: z.string().nullable(),
119
+ result: z.record(z.string(), z.unknown()).nullable(),
120
+ doRevisionId: z.string().nullable(),
121
+ terminalFailureGeneration: z.number(),
122
+ createdAt: z.number(),
123
+ appliedAt: z.number().nullable(),
124
+ failedAt: z.number().nullable(),
125
+ deadLetteredAt: z.number().nullable(),
126
+ reconciled: z.boolean(),
127
+ reconciledAt: z.number().nullable(),
128
+ expireAt: expireAtField,
129
+ });
130
+ //# sourceMappingURL=chat-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-sync.js","sourceRoot":"","sources":["../../src/doc-schemas/chat-sync.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ export * from './moderation.js';
14
14
  export * from './report-docs.js';
15
15
  export * from './audit.js';
16
16
  export * from './notifications.js';
17
+ export * from './notification-ledger.js';
18
+ export * from './chat-sync.js';
17
19
  export * from './operational.js';
18
20
  export * from './registry.js';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -19,6 +19,8 @@ export * from './moderation.js';
19
19
  export * from './report-docs.js';
20
20
  export * from './audit.js';
21
21
  export * from './notifications.js';
22
+ export * from './notification-ledger.js';
23
+ export * from './chat-sync.js';
22
24
  export * from './operational.js';
23
25
  export * from './registry.js';
24
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/doc-schemas/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,mFAAmF;AAEnF,cAAc,WAAW,CAAC;AAC1B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -59,8 +59,8 @@ export type RealmPromotionStatus = z.infer<typeof RealmPromotionStatusSchema>;
59
59
  /** Whether the canonical serving record has been applied to the DO authority. */
60
60
  export declare const MediaAuthoritySyncStateSchema: z.ZodEnum<{
61
61
  pending: "pending";
62
- applied: "applied";
63
62
  deadLetter: "deadLetter";
63
+ applied: "applied";
64
64
  }>;
65
65
  export type MediaAuthoritySyncState = z.infer<typeof MediaAuthoritySyncStateSchema>;
66
66
  /** Whether the asset is referenced by a visible owner doc. Orthogonal to the
@@ -252,8 +252,8 @@ export declare const MediaAssetSchema: z.ZodObject<{
252
252
  authorityPayloadHash: z.ZodOptional<z.ZodString>;
253
253
  authoritySyncState: z.ZodOptional<z.ZodEnum<{
254
254
  pending: "pending";
255
- applied: "applied";
256
255
  deadLetter: "deadLetter";
256
+ applied: "applied";
257
257
  }>>;
258
258
  publicationState: z.ZodOptional<z.ZodEnum<{
259
259
  unpublished: "unpublished";
@@ -0,0 +1,78 @@
1
+ import { z } from 'zod';
2
+ /** The materialization payload carried on every delivery row. */
3
+ export declare const NotificationDeliveryPayloadSchema: z.ZodObject<{
4
+ actorId: z.ZodString;
5
+ metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
6
+ occurrenceAt: z.ZodNumber;
7
+ }, z.core.$strip>;
8
+ export declare const NotificationDeliverySchema: z.ZodObject<{
9
+ deliveryId: z.ZodString;
10
+ state: z.ZodEnum<{
11
+ deadLetter: "deadLetter";
12
+ queued: "queued";
13
+ materialized: "materialized";
14
+ }>;
15
+ notificationType: z.ZodString;
16
+ eventId: z.ZodString;
17
+ recipientUid: z.ZodNullable<z.ZodString>;
18
+ aggregationKey: z.ZodString;
19
+ strategy: z.ZodEnum<{
20
+ increment: "increment";
21
+ staticRelight: "staticRelight";
22
+ }>;
23
+ payload: z.ZodObject<{
24
+ actorId: z.ZodString;
25
+ metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
26
+ occurrenceAt: z.ZodNumber;
27
+ }, z.core.$strip>;
28
+ payloadVersion: z.ZodNumber;
29
+ materializationClass: z.ZodEnum<{
30
+ directQueued: "directQueued";
31
+ realtimeFallback: "realtimeFallback";
32
+ fanoutOrphan: "fanoutOrphan";
33
+ retry: "retry";
34
+ }>;
35
+ createdAt: z.ZodNumber;
36
+ attemptCount: z.ZodNumber;
37
+ nextAttemptAt: z.ZodNumber;
38
+ lastError: z.ZodNullable<z.ZodString>;
39
+ materializedAt: z.ZodNullable<z.ZodNumber>;
40
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
41
+ expireAt: z.ZodOptional<z.ZodUnknown>;
42
+ }, z.core.$strip>;
43
+ export type NotificationDelivery = z.infer<typeof NotificationDeliverySchema>;
44
+ export declare const NotificationFanoutPhaseSchema: z.ZodObject<{
45
+ selector: z.ZodRecord<z.ZodString, z.ZodUnknown>;
46
+ cursor: z.ZodNullable<z.ZodUnknown>;
47
+ done: z.ZodBoolean;
48
+ }, z.core.$strip>;
49
+ export declare const NotificationFanoutJobSchema: z.ZodObject<{
50
+ jobId: z.ZodString;
51
+ schemaVersion: z.ZodNumber;
52
+ notificationType: z.ZodString;
53
+ eventId: z.ZodString;
54
+ priority: z.ZodUnion<readonly [z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>]>;
55
+ payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
56
+ phases: z.ZodArray<z.ZodObject<{
57
+ selector: z.ZodRecord<z.ZodString, z.ZodUnknown>;
58
+ cursor: z.ZodNullable<z.ZodUnknown>;
59
+ done: z.ZodBoolean;
60
+ }, z.core.$strip>>;
61
+ phaseIndex: z.ZodNumber;
62
+ revision: z.ZodNumber;
63
+ status: z.ZodEnum<{
64
+ pending: "pending";
65
+ complete: "complete";
66
+ deadLetter: "deadLetter";
67
+ }>;
68
+ attemptCount: z.ZodNumber;
69
+ nextAttemptAt: z.ZodNumber;
70
+ lastError: z.ZodNullable<z.ZodString>;
71
+ createdAt: z.ZodNumber;
72
+ updatedAt: z.ZodNumber;
73
+ completedAt: z.ZodNullable<z.ZodNumber>;
74
+ deadLetteredAt: z.ZodNullable<z.ZodNumber>;
75
+ expireAt: z.ZodOptional<z.ZodUnknown>;
76
+ }, z.core.$strip>;
77
+ export type NotificationFanoutJob = z.infer<typeof NotificationFanoutJobSchema>;
78
+ //# sourceMappingURL=notification-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-ledger.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,iEAAiE;AACjE,eAAO,MAAM,iCAAiC;;;;iBAI5C,CAAC;AAKH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAI9E,eAAO,MAAM,6BAA6B;;;;iBAIxC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ // Notification redesign ledger Firestore schemas (chat-edge-rebuild P1).
2
+ // Frozen field lists from IMPLEMENTATION_MATRIX.md "Notifications". Admin-SDK-only.
3
+ // `expireAt` is the only Firestore `Timestamp` field (native TTL); every other
4
+ // time field is epoch-ms `number`.
5
+ import { z } from 'zod';
6
+ /** Native-TTL Timestamp (set only at the resolved-success terminal). */
7
+ const expireAtField = z.unknown().optional();
8
+ /** The materialization payload carried on every delivery row. */
9
+ export const NotificationDeliveryPayloadSchema = z.object({
10
+ actorId: z.string(),
11
+ metadata: z.record(z.string(), z.unknown()),
12
+ occurrenceAt: z.number(),
13
+ });
14
+ // ── notificationDeliveries/{deliveryId} ─────────────────────────────────────
15
+ // BOTH the recipient ledger AND the occurrence ledger. Shared-admin rows set
16
+ // recipientUid=null (the deliveryId hash uses the literal 'shared').
17
+ export const NotificationDeliverySchema = z.object({
18
+ deliveryId: z.string(),
19
+ state: z.enum(['queued', 'materialized', 'deadLetter']),
20
+ notificationType: z.string(),
21
+ eventId: z.string(),
22
+ recipientUid: z.string().nullable(),
23
+ aggregationKey: z.string(),
24
+ strategy: z.enum(['increment', 'staticRelight']),
25
+ payload: NotificationDeliveryPayloadSchema,
26
+ payloadVersion: z.number(),
27
+ materializationClass: z.enum(['directQueued', 'realtimeFallback', 'fanoutOrphan', 'retry']),
28
+ createdAt: z.number(),
29
+ attemptCount: z.number(),
30
+ nextAttemptAt: z.number(),
31
+ lastError: z.string().nullable(),
32
+ materializedAt: z.number().nullable(),
33
+ deadLetteredAt: z.number().nullable(),
34
+ expireAt: expireAtField,
35
+ });
36
+ // ── notificationFanoutJobs/{jobId} ──────────────────────────────────────────
37
+ // jobId = `${eventId}:${notificationType}`. No `running` state (no leases).
38
+ export const NotificationFanoutPhaseSchema = z.object({
39
+ selector: z.record(z.string(), z.unknown()),
40
+ cursor: z.unknown().nullable(),
41
+ done: z.boolean(),
42
+ });
43
+ export const NotificationFanoutJobSchema = z.object({
44
+ jobId: z.string(),
45
+ schemaVersion: z.number(),
46
+ notificationType: z.string(),
47
+ eventId: z.string(),
48
+ priority: z.union([z.literal(0), z.literal(1), z.literal(2)]),
49
+ payload: z.record(z.string(), z.unknown()),
50
+ phases: z.array(NotificationFanoutPhaseSchema),
51
+ phaseIndex: z.number(),
52
+ revision: z.number(),
53
+ status: z.enum(['pending', 'complete', 'deadLetter']),
54
+ attemptCount: z.number(),
55
+ nextAttemptAt: z.number(),
56
+ lastError: z.string().nullable(),
57
+ createdAt: z.number(),
58
+ updatedAt: z.number(),
59
+ completedAt: z.number().nullable(),
60
+ deadLetteredAt: z.number().nullable(),
61
+ expireAt: expireAtField,
62
+ });
63
+ //# sourceMappingURL=notification-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-ledger.js","sourceRoot":"","sources":["../../src/doc-schemas/notification-ledger.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export declare const NotificationDocSchema: z.ZodObject<{
12
12
  targetPath: z.ZodString;
13
13
  metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
14
14
  seenAt: z.ZodNumber;
15
+ activityGeneration: z.ZodOptional<z.ZodString>;
16
+ seenAtGeneration: z.ZodOptional<z.ZodString>;
15
17
  createdAt: z.ZodNumber;
16
18
  updatedAt: z.ZodNumber;
17
19
  }, z.core.$strip>;
@@ -32,6 +34,8 @@ export declare const NotificationHistoryDocSchema: z.ZodObject<{
32
34
  targetPath: z.ZodString;
33
35
  metadata: z.ZodRecord<z.ZodString, z.ZodUnknown>;
34
36
  seenAt: z.ZodNumber;
37
+ activityGeneration: z.ZodOptional<z.ZodString>;
38
+ seenAtGeneration: z.ZodOptional<z.ZodString>;
35
39
  createdAt: z.ZodNumber;
36
40
  updatedAt: z.ZodNumber;
37
41
  archival: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAehC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;iBAIvC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;iBAQpC,CAAC;AAKH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAenC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAK1E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAazC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAoBhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;iBAIvC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;iBAQpC,CAAC;AAKH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAenC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAK1E,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAazC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
@@ -19,6 +19,11 @@ export const NotificationDocSchema = z.object({
19
19
  targetPath: z.string(),
20
20
  metadata: z.record(z.string(), z.unknown()),
21
21
  seenAt: z.number(),
22
+ // Opaque per-generation token rotated on create / material re-light; the
23
+ // SEEN/ARCHIVE precondition (notification redesign). Optional on the legacy
24
+ // doc shape; the ledger materializer always sets it.
25
+ activityGeneration: z.string().optional(),
26
+ seenAtGeneration: z.string().optional(),
22
27
  createdAt: z.number(),
23
28
  updatedAt: z.number(),
24
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/doc-schemas/notifications.ts"],"names":[],"mappings":"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"}